NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para...

83
NASCloud Caching SSD e cifra local para dispositivos de Storage na Cloud Miguel José Costa Soá Lobo Dissertação de Mestrado apresentada à Faculdade de Ciências da Universidade do Porto em Ciência de Computadores 2014

Transcript of NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para...

Page 1: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

NASCloud – CachingSSD e cifra local para dispositivos de Storage na CloudMiguel José Costa Soá LoboDissertação de Mestrado apresentada à

Faculdade de Ciências da Universidade do Porto em

Ciência de Computadores

2014

NA

SC

lou

d–

Ca

ch

ing

SS

D e

cifra

loca

l para

dis

po

sitiv

os d

e S

tora

ge

na C

lou

dM

igu

el J

osé C

osta

So

áL

ob

oM

Sc

FCUP

2014

2.º

CICLO

Page 2: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

NASCloud – Caching

SSD e cifra local para

dispositivos de

Storage na CloudMiguel José Costa Soá LoboMestrado Integrado em Engenharia de Redes

e Sistemas InformáticosDepartamento de Ciência dos Computadores

2014

Orientador Manuel Eduardo Correia, Faculdade de Ciências da Universidade do Porto

CoorientadorHugo Ribeiro, Faculdade de Ciências da Universidade do Porto

Page 3: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Todas as correções determinadas

pelo júri, e só essas, foram efetuadas.

O Presidente do Júri,

Porto, ______/______/_________

Page 4: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Miguel Jose Costa Soa Lobo

NASCloud – Caching SSD e cifra localpara dispositivos de Storage na cloud

Departamento de Ciencia de Computadores

Faculdade de Ciencias da Universidade do Porto

27 de Junho de 2014

Page 5: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Miguel Jose Costa Soa Lobo

NASCloud – Caching SSD e cifra localpara dispositivos de Storage na cloud

Relatorio de Estagio submetido a Faculdade de Ciencias da

Universidade do Porto como parte dos requisitos para a obtencao do grau de

Mestre em Engenharia de Redes e Sistemas Informaticos

Orientador: Manuel Eduardo Correia

Co-orientador: Hugo Ribeiro

Departamento de Ciencia de Computadores

Faculdade de Ciencias da Universidade do Porto

27 de Junho de 2014

Page 6: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

dedicado as pessoas mais importantes da minha vida

i

Page 7: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Agradecimentos

Ao longo deste estagio houve alguns momentos em que foi essencial um pequeno em-

purrao. Gostaria de agradecer a todos os que me motivaram, ajudaram e que estavam

la no momento certo.

Comeco por agradecer ao orientador de estagio, Manuel Eduardo Correia, pela oportu-

nidade de trabalho proporcionada, o que me permitiu abrir novos horizontes e aprender

mais sobre a area e o trabalho que tanto gosto de fazer.

Um grande e merecido ”Obrigado!”ao meu co-orientador de estagio, Hugo Ribeiro.

Agradeco por toda a ajuda, atencao e disponibilidade dispensada, e pelo conhecimento

que me transmitiu. Considero que foi um elemento essencial para a realizacao deste

projecto e pelo meu enriquecimento profissional, e por isso estou-lhe imensamente grato.

Agradeco a uma boa parte dos professores da Faculdade de Ciencias, principalmente

aos professores do DCC, pelo facto de fazerem parte da minha carreira academica e por

terem contribuıdo para o meu crescimento profissional.

Gostaria de deixar uma agradecimento especial aos meus pais, por me terem sempre

apoiado e motivado durante todo este tempo e proporcionado os meios necessarios a

minha formacao. Nao podia deixar de agradecer a minha irma, que ao longo destes anos

esteve sempre disponıvel para me ouvir e para me dar a forca necessaria.

Agradeco aos meus amigos e colegas que, de uma forma ou outra, estiveram sempre

presentes neste percurso. Gostava de deixar um agradecimento especial ao Carlos

Ferreira, Mario Pinto, Pedro Oliveira, Pedro Ramalho, Goncalo Martins, Ze Carlos e

Luıs Moreira, por toda a amizade, ajuda e companheirismo.

Last but not the least, um agradecimento especial a minha namorada, por estar sempre

ao meu lado, apoiar-me e ajudar-me. Por me fazer feliz. Sem ela nada disto era possıvel

:)

A todos, muito obrigado!

ii

Page 8: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Resumo

A decisao das empresas aderirem a Cloud deve-se principalmente a motivos financeiros.

Estas precisavam de adquirir o seu proprio hardware, cujo valor diminui com o passar do

tempo, e a performance, quando comparada com equipamentos mais recentes, e menor.

Com o aparecimento e uso da Cloud as empresas passaram a pagar aos Cloud Providers

pelos recursos que necessitam/consomem, e deixam de ter necessidade de investir em

equipamento dispendioso.

O acesso ao espaco disponibilizado pelos Cloud Providers normalmente e feito atraves

de Application Programming Interface (API)s proprias. Para que esse espaco seja

disponibilizado aos utilizadores das empresas, de uma forma facil e transparente, e

necessario o uso varias ferramentas/softwares.

O Cloud Storage Gateway (CSG) pretende desempenhar o papel de mediador entre o

fornecedor de espaco na Cloud e os seus utilizadores, atraves de metodos e protocolos

de rede ja conhecidos e com implementacoes robustas.

O objectivo principal deste projecto e a criacao de uma appliance local, que ira acelerar

o acesso ao espaco de armazenamento importado da Cloud, sob a forma de dispositivos

de blocos. Esta appliance e toda baseada em software Open-Source.

A aceleracao e feita atraves do uso de software que providencia mecanismos de cache

local e discos Solid-State Drive (SSD). Juntamente com a aceleracao de dispositivos de

blocos, de modo a se poder garantir a confidencialidade dos dados que sao guardados na

Cloud, os dispositivos de blocos importados serao cifrados localmente, para que assim

desta forma os dados escritos passem sempre cifrados, e de forma transparente para a

Cloud.

iii

Page 9: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Abstract

The main decision that leads companies joining the Cloud in mainly due to financial

reasons. These need to purchase their own hardware, whose value decreases over time,

and its performance, when compared with more recent equipment, is worst. With the

appearance and use of the Cloud, companies started to pay to Cloud Providers for the

resources they need/consume, and they no longer need to invest in expensive equipment.

Access to storage provided by Cloud Providers is usually done through proprietary APIs.

To make this storage available to the companies users, in an easy and transparent way,

it is necessary the use of various tools/software.

The Cloud Storage Gateway (CSG) intends to play the role of mediator between the

Cloud Provider and the enterprise users, through already known methods and network

protocols, with robust implementations.

The main goal of this project is to create a local appliance, which will accelerate the

access to the storage imported from the Cloud in the form of block devices. This

appliance is all based on Open-Source software.

The acceleration is done through the use of software that provide mechanisms for local

cache and Solid-State Drive (SSD) drives. Along with the acceleration of block devices,

so as to be able to guarantee the confidentiality of the data that is stored in the Cloud,

the imported block devices are encrypted locally, so that thus pass the written data

always encrypted and transparently to the Cloud.

iv

Page 10: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

oduetnoC

Resumo iii

Abstract iv

iiivsalebaTedatsiL

ixsarugiFedatsiL

3oacudortnI1

1.1 Objectivos do projecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

.............................oirotalerodaruturtsE2.1 5

7sadazilitusaigolonceT/erawtfoS2

2.1 Sistemas de cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.1.1 Polıticas de cache . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.1.2 Softwares de cache . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2 Software /ecnamrofrepedesilanaed benchmark . . . . . . . . . . . . . . . 11

2.3 Sistemas de Ficheiros Distribuıdo na Cloud . . . . . . . . . . . . . . . . . 12

2.4 LUKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.5 iSCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

v

Page 11: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

2.6 LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3 Desenvolvimento 20

3.1 Cenarios de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2 FIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.3 Software de cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.4 Ceph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.1 Cenario Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.4.2 Cenario Real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.5 iSCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.5.1 iSCSI Target . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.5.2 iSCSI Initiator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.6 RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.7 Linux Unified Key Setup (LUKS) . . . . . . . . . . . . . . . . . . . . . . . 38

3.8 Logical Volume Manager (LVM) . . . . . . . . . . . . . . . . . . . . . . . 39

4 Testes e Resultados 41

4.1 Testes de Velocidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.1.1 Caso Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.1.2 [Ceph] → [CSG] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.1.3 [Ceph] → [CSG] → [Cliente] . . . . . . . . . . . . . . . . . . . . . . 46

4.1.4 [Ceph] → [CSG+EIO WB+RAID1+LUKS+LVM] → [CLIENTE] 48

4.2 Testes de Integridade de dados . . . . . . . . . . . . . . . . . . . . . . . . 49

4.2.1 1o Cenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.2.2 2o Cenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

vi

Page 12: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

4.2.3 3o Cenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5 Conclusoes 55

5.1 Discussao de Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.2 Trabalho Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

A Script FIO 58

B Script BCache 60

C Script EnhanceIO 62

Referencias 63

vii

Page 13: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Lista de Tabelas

2.1 Header da particao LUKS . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.2 Composicao de um key-slot . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.1 Tabela de Estados EnhanceIO . . . . . . . . . . . . . . . . . . . . . . . . . 50

viii

Page 14: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Lista de Figuras

3.1 NASCloud - Caso Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2 NASCloud - Cenario Base com aceleracao local . . . . . . . . . . . . . . . 22

3.3 NASCloud - Cenario Base com falha na aceleracao local . . . . . . . . . . 22

3.4 NASCloud - Cenario Final . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.5 Diagrama Ceph - cenario virtual . . . . . . . . . . . . . . . . . . . . . . . 28

3.6 Diagrama Ceph - Cluster Ceph+Ceph Client . . . . . . . . . . . . . . . . 31

3.7 Diagrama Ceph - Cluster Ceph+scsi targets utils . . . . . . . . . . . . . . 31

3.8 Diagrama Ceph - Cenario real . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.1 Grafico comparativo caso base . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.2 Grafico comparativo Bloco Ceph vs Bloco Ceph+EnhanceIO WB/WT -

Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.3 Grafico comparativo Bloco Ceph vs Bloco Ceph+EnhanceIO WB/WT -

Real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.4 Grafico comparativo Bloco Ceph vs Bloco Ceph+EnhanceIO WB/WT -

Real vs Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.5 Grafico comparativo Bloco Cloud vs Bloco Cloud+EnhanceIO WB/WT

- Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.6 Grafico comparativo Bloco Cloud+EIO WB+RAID1+LUKS+LVM - Real

vs Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

ix

Page 15: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Acronimos

API Application Programming Interface

DoS Denial of Service

FIFO First In First Out

FIO Flexible I/O

FTP File Transfer Protocol

GB Giga Bytes

CSG Cloud Storage Gateway

HDD Hard Disk Drive

IaaS Infrastructure as a Service

IOPS I/O Operations per Second

IQN iSCSI Qualified Name

iSCSI Internet SCSI

I/O Input/Output

LRU Least Recently Used

LUKS Linux Unified Key Setup

LV Logical Volume

LVM Logical Volume Manager

MB Mega Bytes

1

Page 16: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

2

MDS Metadata Server

MRU Most Recently Used

NFS Network File Systen

PaaS Platform as a Service

PDU Protocol Data Unit

PG Placement Group]

PV Physical Volume

RAID Redundant Array of Independent Disks

RBD RADOS Block Device

R2T Ready to Transfer

SaaS Software as a Service

SO Sistema Operativo

SSD Solid-State Drive

VG Volume Group

WB Write back

WT Write through

Page 17: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Capıtulo 1

Introducao

A decisao das empresas aderirem a Cloud deve-se principalmente a motivos financeiros.

Estas precisavam de adquirir o seu proprio hardware, cujo valor e performance diminuem

com o passar do tempo. Com o aparecimento e uso da Cloud as empresas passaram a

pagar aos Cloud Providers pelos recursos que necessitam/consomem, e deixam de ter

necessidade de investir em equipamento dispendioso [1] [2].

Um Cloud Provider e uma empresa ou entidade que fornece aos seus clientes espaco

de armazenamento e/ou servicos (Infrastructure as a Service (IaaS), Software as a

Service (SaaS) ou Platform as a Service (PaaS)), atraves de uma rede publica (Cloud)

ou privada (Cloud privada) [3].

O acesso ao espaco disponibilizado pelos Cloud Providers normalmente e feito atraves

de APIs! (APIs!) proprias. Para que esse espaco seja disponibilizado aos utilizadores

das empresas, de uma forma facil e transparente, e necessario o uso de varias ferramen-

tas/softwares.

No projecto NASCloud pretende-se definir um Cloud Storage Gateway (CSG), que

desempenhara o papel de mediador entre o fornecedor de espaco na Cloud e os seus

utilizadores, atraves de metodos e protocolos de rede ja conhecidos e com implementacoes

robustas, tais como o Internet SCSI (iSCSI) ou o Fibre Channel, com provas dadas dos

seus bons desempenhos.

Uma das vantagens do uso de um CSG num ambiente empresarial e a possibilidade de ter

multiplos fornecedores de armazenamento na Cloud e nao estar dependente de somente

um. Deste modo e possıvel adicionar mais resiliencia aos dados que serao armazenados

3

Page 18: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 1. INTRODUCAO 4

[2] utilizando redundancia e backups, por exemplo.

O uso da solucao proposta traz vantagens tanto aos fornecedores de espaco na Cloud,

assim como as empresas que os contratam. Os Cloud Storage Providers tem a opor-

tunidade de aumentar o alcance dos seus servicos, enquanto que os clientes finais, que

sao maioritariamente empresas, tiram vantagem das funcionalidades que os Providers

fornecem, tais como [4] [5]:

• Acessibilidade: facilidade de acesso aos dados a partir de qualquer dispositivo/lo-

calizacao;

• Custo: o armazenamento na Cloud permite reduzir os custos associados aos backups

dos dados, ja que deixa de haver necessidade de aquisicao de equipamento para a

funcao, os backups sao feitos directamente para a Cloud ;

• Seguranca e recuperacao de dados: os dados armazenados nos Cloud Providers sao

cifrados quer durante a transmissao entre o cliente e os Providers, quer enquanto

estes estiverem armazenados.

Em caso de perda de dados, a sua recuperacao e facilitada devido aos backups

efectuados pelos Cloud Providers.

O uso de um CSG na estrutura informatica de uma empresa vai permitir que aos seus

utilizadores usufruam das vantagens acima assinaladas, de um modo transparente, sem

necessidade de utilizar directamente software de terceiros (APIs).

1.1 Objectivos do projecto

O objectivo principal do projecto NASCloud e a criacao de uma appliance local, que

vai acelerar o acesso ao espaco de armazenamento importado da Cloud, sob a forma de

dispositivos de blocos, via iSCSI.

Essa aceleracao e feita recorrendo a mecanismos de cache local e discos SSD. Juntamente

com a aceleracao de dispositivos de blocos, de modo a garantir a confidencialidade dos

dados, os dispositivos de blocos serao cifrados localmente, para que desta forma os dados

passem sempre protegidos de forma transparente para a Cloud.

Esta appliance vai executar o papel de CSG, com foco na seguranca dos dados e com

performances apropriadas, a serem utilizadas para aplicacoes e armazenamento na rede.

Page 19: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 1. INTRODUCAO 5

Um CSG e uma ferramenta de rede que fornece conectividade e servicos de traducao de

protocolos entre um Cloud Storage Provider e aplicacoes locais. A sua implementacao

e feita numa maquina local, para facilitar a implementacao de seguranca dos dados e a

transferencia de dados entre protocolos incompatıveis.

Um CSG e projectado para oferecer interoperabilidade entre diferentes protocolos de

transferencia de dados usados em arquitecturas cliente/servidor. Este permite a traducao

entre APIs dos Cloud Providers que utilizam SOAP ou REST, para protocolos de

dispositivos de blocos, tais como iSCSI ou Fibre Channel [6] [7].

O armazenamento na Cloud e providenciado por um servico Ceph, e esse armazenamento

e exposto via iSCSI para o CSG. A instalacao e configuracao de um cluster Ceph esta

presente nos objectivos do projecto, assim como o estabelecimento de conexoes iSCSI

entre as varias tecnologias utilizadas no projecto.

Outro dos objectivos passa por determinar a aplicacao e localizacao da camada de

encriptacao, fornecida pelo LUKS, para que os dados a serem escritos passem sempre

cifrados para a Cloud. Esta pode ficar localizada entre a Cloud e o CSG, e ser aplicada

directamente sobre os discos iSCSI da Cloud, ou entre o CSG e os seus utilizadores, por

cima do dispositivos de blocos que serve de abstracao a cache local.

De modo a atingir o ponto de equilıbrio e melhor compromisso entre fiabilidade, segu-

ranca dos dados e velocidades de acesso, faz parte dos objectivos do projecto executar

varios testes de benchmark, e ajustar as definicoes e configuracoes de acordo com os

resultados obtidos.

Dos objectivos do projecto fazem ainda parte a testar a reexportacao por iSCSI dos

dispositivos de blocos carregados no CSG, para a rede local, para que desta forma os

computadores clientes possam utilizar o armazenamento na Cloud, devidamente cifrado

e acelerado.

1.2 Estrutura do relatorio

Este relatorio esta composto por cinco capıtulos. No presente capıtulo e feita uma

introducao a varios conceitos importantes que foram abordados ao longo do estagio

efectuado. E tambem feita uma breve descricao da motivacao para realizacao do projecto,

e sao apresentados os objectivos do mesmo.

Page 20: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 1. INTRODUCAO 6

No Capıtulo 2 e apresentada uma descricao dos softwares e tecnologias utilizadas para

a realizacao e conclusao deste projecto. Sao explicadas as caracterısticas de cada com-

ponente utilizado e o seu modo de funcionamento.

No Capıtulo 3 e demonstrada a interligacao entre os varios elementos utilizados no

projecto (Ceph, iSCSI, softwares de cache), juntamente com os procedimentos e passos

que foram executados para a instalacao e configuracao dos softwares utilizados.

No Capıtulo 4 sao apresentados os testes e respectivos resultados, que foram feitos ao

longo de todo o processo de construcao da appliance. Os testes apresentados sao sobre

a performance de leitura/escrita e sobre a integridade dos dados, em situacao normal de

funcionamento e situacoes de falhas de componentes/conexoes.

Por fim, no Capıtulo 5, sao apresentadas as principais conclusoes do projecto NASCloud

e uma descricao do trabalho futuro/melhoramentos a serem feitos.

Sao tambem apresentados possıveis cenarios onde todo o trabalho efectuado podera ser

aplicado com sucesso.

Page 21: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Capıtulo 2

Software/Tecnologias utilizadas

Neste capıtulo serao apresentados os softwares explorados para a construcao do prototipo

de uma appliance CSG. De referir que todo o software utilizado e gratuito e Open-

Source.

Este capıtulo e composto pela apresentacao aos sistemas de cache, onde e explicado

o que sao, como e o seu funcionamento e quais os softwares decache utilizados no

ambito do projecto. Tambem sao apresentados varios softwares de benchmark a sistemas,

juntamente com a definicao de benchmark e qual a sua funcao.

Outro topico deste capıtulo e relativo ao software Ceph. Aqui e explicado o que e o

Ceph, qual as funcoes que este pode desempenhar e as vantagens que a sua utilizacao

traz.

Desde sempre a seguranca da informacao e um assunto sensıvel e importante. No

topico relativo ao LUKS e apresentado o software escolhido para cifrar os dados a serem

transferidos para a Cloud.

No topico sobre LVM, e explicada o que e, para que serve e quais sao os elementos que

compoe esta ferramenta de gestao de volumes logicos no Linux.

2.1 Sistemas de cache

Entende-se por cache uma localizacao onde armazenar algo temporariamente, de modo

a reduzir o tempo de acesso aparente ao armazenamento principal. Por exemplo, quando

se consulta uma pagina de Internet, os ficheiros descarregados sao guardados no disco

rıgido, numa pasta de cache. Quando mais tarde se retorna a essa pagina consultada,

7

Page 22: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 8

se a cache ainda estiver valida, o browser utiliza esses ficheiros que foram previamente

descarregados, em vez de fazer um novo pedido ao servidor web, o que se vai traduzir

numa poupanca de tempo e recursos (ex. largura de banda).

Os sistemas informaticos utilizam cache em varios nıveis de operacao. Alguns exemplos

onde o uso de cache e aplicado sao os seguintes [8]:

• Cache de servidores locais, tais como servidores de ficheiros, servidores Web (proxys)

ou servidores de DNS, ;

• Cache do browser de Internet;

• Cache do disco rıgido: onde existem copias dos dados que foram mais recentemente

utilizados, para um posterior acesso mais rapido a estes;

• Memoria RAM: tambem pode ser vista como um dispositivo de cache, onde os

dados estao carregados, para um acesso mais rapido;

• Cache L1 e L2: memorias cache que estao localizadas no mesmo chip que o CPU.

Uma cache e composta por um conjunto de entradas. Cada uma destas entradas contem

dados, que sao copias dos dados existentes no seu local de origem, e tambem uma tag, que

identifica os dados presentes na entrada em questao e a localizacao destes no dispositivo

de armazenamento original.

Quando um cliente da cache precisa de aceder aos dados existentes na localizacao de

armazenamento, primeiro consulta a sua cache, para verificar se os dados em questao

estao la disponıveis. Se for encontrada uma entrada com os dados requisitados, entao

estes sao retornados ao cliente, o que se denomina por ”Cache Hit”. No caso contrario,

em que nao se encontra nenhuma entrada na cache com os dados pedidos, durante o

processo de leitura dos dados para os retornar ao cliente , estes sao entao lidos e copiados

para a cache, para um posterior acesso mais rapido. A esta situacao chama-se ”Cache

Miss”.

2.1.1 Polıticas de cache

Uma polıtica de cache e um conjunto de regras que sao usadas para determinar se um

pedido pode ser satisfeito usando uma copia armazenada em cache do recurso solicitado.

Existem polıticas de substituicao de cache e polıticas de escrita.

Page 23: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 9

Durante o processo de ”Cache Miss”, as entradas da cache vao sendo substituıdas por

novas entradas, de modo a actualizar a cache. A forma utilizada para escolher e substituir

a entrada a ser trocada e conhecida como polıtica de substituicao. Existem varias

polıticas, que seguem algoritmos de substituicao optimizados para a funcao, tais como

First In First Out (FIFO), aleatorio, Most Recently Used (MRU) ou Least Recently

Used (LRU), que normalmente e a mais comum de ser usada.

No momento em que os dados sao escritos na cache, estes tambem tem de ser escritos

no seu local de armazenamento (ex. disco HDD). Esse momento e determinado pela

polıtica de cache que esta ativa no dispositivo. Existem duas polıticas de cache mais

utilizadas [9] [10]:

• Write Back : E um metodo de armazenamento em que os dados sao escritos na

cache sempre que ocorra alguma alteracao, mas sao escritos na sua localizacao

de armazenamento a partir de um determinado intervalo de tempo definido, ou

consoante certas condicoes, tais como quando algum limite de dados presentes na

cache e atingido.

Quando os dados sao escritos na cache, estes sao diferentes dos que estao na

localizacao de armazenamentos dos dados. Quando esse trigger e ativado, os dados

que foram escritos na cache sao replicados para o seu local de armazenamento, o

que vai actualizar a origem.

O uso da polıtica Write Back tem como principal vantagem a optimizacao da

velocidade do sistema, isto porque e muito mais rapido escrever directamente na

cache do que no local de armazenamento. Contudo, aliado a esse aumento de

velocidade tambem existe um maior risco de perda de dados, em caso de crash do

sistema ou qualquer outro motivo adverso. Um metodo de reduzir esse risco de

perda de dados e fazer um mirror da cache. Isto permite que, em caso de falha

do dispositivo de cache, haja outro pronto a ser usado. Na situacao de um crash

do sistema, os softwares de cache tentam recuperar o conteudo do dispositivo de

cache e actualizar o dispositivo de origem no momento do arranque do sistema,

antes de voltarem a desempenhar o seu papel no processo de cache.

• Write Through: Metodo de armazenamento em que os dados sao escritos simulta-

neamente na cache e no local de armazenamento. O uso desta polıtica de cache

permite que os dados requisitados sejam devolvidos mais rapidamente (se estes

tiverem presentes na cache), e tambem garante que nao existe perda de dados,

caso ocorra alguma situacao nao planeada.

Page 24: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 10

Apesar desta polıtica garantir a inexistencia de perda de dados devido a replicacao

destes em duas localizacoes distintas, tal metodo torna o processo mais lento.

Uma operacao de escrita de dados so pode prosseguir quando a anterior estiver

concluıda, e tal so acontece quando houver confirmacao da escrita nos dispositivos

de cache e local de armazenamento.

2.1.2 Softwares de cache

Com o aparecimento das flash drives, o desempenho do armazenamento de dados tornou-

se mais facil e simples de melhorar. Antes desse acontecimento, os metodos utilizados

para melhorar as performances de Input/Output (I/O) de armazenamento passavam por

caches de baixa capacidade para a memoria RAM ou RAM drives [11].

Os tradicionais discos Hard Disk Drive (HDD) fornecem bastante espaco de armaze-

namento (quando comparados com discos SSD), mas o seu desempenho em relacao a

velocidade de acesso e baixo. Os discos SSD permitiram reduzir esses tempos de acesso,

diminuindo em grande parte essa lacuna. A utilizacao simultanea destes dois discos

HDD e SSD permitem tambem criar um sistema hıbrido, que combina o espaco de

armazenamento do HDD com a velocidade do SSD [12].

O papel do SSD neste novo tipo de sistema e de servir como cache aos dados armazenados

no HDD, deixando uma copia dos dados mais usados no SSD, para que o seu acesso seja

mais rapido.

O objectivo do uso de softwares de cache e tornar o Sistema Operativo (SO) e o acesso

aos dados tao rapido como se de um dispositivo SSD se tratasse. Dado um SSD e um

outro dispositivo de armazenamento, o software vai interpor o SSD entre o kernel do

sistema e o dispositivo de armazenamento, e usar o SSD para acelerar as operacoes de

I/O de e para o dispositivo de armazenamento. Desta forma, se um pedido de leitura

de dados puder ser satisfeito pelo SSD, nao ha necessidade de envolver o dispositivo de

armazenamento no processo, o que vai agilizar e acelerar o pedido [13] [14].

No ambito deste projeto, os dois softwares de cache testados e analisados foram o BCache

[15] e o EnhanceIO [16].

Tanto o BCache [15] como o EnhanceIO sao softwares de cache que actuam sobre blocos

de dados, permitindo que um ou mais discos rapidos, tal como discos SSD, facam cache

de outros dispositivos de blocos mais lentos.

As principais diferencas entre os dois softwares analisados sao as seguintes:

Page 25: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 11

• Por defeito, o BCache nao faz cache de I/O sequenciais mas sim aleatorios, que e

o ponto forte dos discos SSD. Ja o EnhanceIO ja faz cache de todos os I/O, sejam

estes sequenciais ou aleatorios [16] [17].

• Para evitar que o dispositivo de armazenamento seja acedido directamente sem

recorrer ao software de cache, o BCache requer o acesso exclusivo ao dispositivo.

Este e formatado com um marcador especial pelo BCache, onde so atraves do uso do

software e possıvel aceder ao seu conteudo, utilizando um dispositivo virtual. Esta

medida de prevencao permite que evitar que o sistema de ficheiros do dispositivo

de armazenamento e os seus dados fiquem corrompidos [13].

• Enquanto que no BCache e necessaria a utilizacao de um dispositivo virtual, tal

facto nao acontece com o EnhanceIO. A principal vantagem deste ponto e que torna

possıvel adicionar cache a qualquer dispositivo sem que seja necessario desmonta-lo

e formata-lo.

2.2 Software de analise de performance/benchmark

Em informatica, benchmark e um teste ou conjunto de testes concebidos para medir e

comparar a performance de um determinado elemento ou componente do computador.

Um benchmark e concebido para imitar um tipo de workload especıfico para um sistema

ou componente. As informacoes mais importantes a retirar dos testes de performance

e benchmark de discos rıgidos sao os tempos de latencia e as velocidades de leitura

e escrita, tanto aleatoria como sequencial (dependendo da situacao a ser testada). A

performance de um sistema e influenciada pelos seguintes factores:

• Velocidade de rotacao do disco rıgido;

• Tamanho do bloco do sistema de ficheiros;

• Tempo de procura;

• Tipo de leitura/escrita (sequencial ou aleatorio);

O software FIO [18] e uma ferramenta que permite gerar pedidos de I/O e e bastante

versatil e flexıvel. Esta ferramenta pode ser usada tanto para benchmark como para

executar stress tests no sistema.

Stress tests sao uma forma de testar a estabilidade do sistema, de uma forma intensa.

Page 26: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 12

Sao feitos para levar o sistema ao extremo das suas capacidades, ate ao seu ponto de

falha. A ideia de conduzir o sistema ate este ponto e para se poder determinar quais os

seus limites e em que ponto e como falham.

Esta ferramenta suporta multiplos motores de I/O, o que permite simular varios tipos

diferentes de input de testes (ex. sıncrono, assıncrono), assim como especificar o numero

de threads ou processos por teste a executar, tipo de teste (leitura e/ou escrita), entre

outros parametros.

O output do FIO e composto por varias informacoes de performance, tais como tempos

de latencia, velocidades maximas, mınimas e medias ou tempo que o processo fica na

fila de espera para ser processado.

O site storagereview.com, sıtio de referencia em comparacoes e analise de estatısticas e

velocidades de discos rıgidos, utiliza o FIO como o seu metodo de benchmarking [19].

Tal como o Flexible I/O (FIO), existem outros softwares semelhantes, como por exemplo

o Bonnie++ [20].

O Bonnie++ e uma ferramenta de benchmark destinada a testar o desempenho de discos

rıgidos e sistema de ficheiros, desenvolvida para sistemas Unix. O Bonnie++ analisa

os desempenhos de velocidade de leitura e escrita de dados, numero de pesquisas por

segundo e o volume de I/O Operations per Second (IOPS).

Outro metodo de analisar a performance de um sistema e atraves da ferramenta dd.

Esta ferramenta permite fazer copias de e para ficheiros e dispositivos. O seu output e

composto pelo numero de blocos transferidos, numero de bytes copiados, o tempo que

demorou a operacao e a velocidade medida.

O principal problema desta ferramenta e que nao e filesystem independent, isto e, o

dd so testa velocidades de acesso ao sistema de ficheiros. Dependendo do sistema de

ficheiros em uso na altura do teste, os resultados podem variar, pois este ao ler o bloco

para copiar, pode carrega-lo na memoria, o que vai originar valores mais rapidos e nao

fidedignos [21].

2.3 Sistemas de Ficheiros Distribuıdo na Cloud

Em computacao Cloud, o armazenamento e considerado um dos problemas mais difıceis

de resolver. O armazenamento na Cloud deve ser facilmente escalavel e de baixo custo.

Contudo deve ser pensado de modo a nao menosprezar a fiabilidade ou velocidade, e

evitar falhas de hardware a medida que o tamanho do cluster aumenta.

Page 27: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 13

Um sistemas de ficheiros distribuıdo na Cloud e um sistema de ficheiros que permite

a varios hosts aceder aos mesmos dados simultaneamente. Esses dados podem estar

divididos em varias partes, que por sua vez sao armazenadas em maquinas distintas, o

que facilita o multiplo acesso aos dados e a execucao paralela de aplicacoes.

De modo a nao comprometer o acesso e a integridade dos dados armazenados, conceitos

como a confidencialidade, disponibilidade e integridade sao essenciais para a definicao

de um sistema informatico seguro.

Hoje em dia, gracas a computacao Cloud, os utilizadores podem partilhar dados a partir

de qualquer dispositivo com uma ligacao a Internet (ex. Smartphone, Tablet, pc). Isto e

possıvel devido a facilidade de escalabilidade de recursos dos servidores de um cluster,

recursos esses que sao virtualizados e disponibilizados dinamicamente.

Os sistemas de ficheiros distribuıdos destacam-se pela forma como lidam com o desem-

penho do cluster, escritas simultaneas de dados, falhas temporarias ou permanentes de

nos ou capacidade de armazenamento no cluster.

O Ceph [22] e uma plataforma de armazenamento concebida para fornecer armazena-

mento de blocos, objectos e ficheiros, a partir de um cluster de computadores.

O seu principal objectivo e ser um sistema completamente distribuıdo, sem um ponto

de falha unico (pois os dados guardados no cluster sao replicados pelos seus elementos,

tornando-o assim tolerante a falhas [23]). E tambem facilmente escalavel, pois o software

Ceph pode ser executado em hardware comum, o que desta forma possibilita baixar os

custos de implementacao [24].

O Ceph pode desempenhar varios papeis na rede. Pode fornecer armazenamento de

objectos ou dispositivos de blocos para plataformas de Cloud, como por exemplo OpenS-

tack, CloudStack ou OpenNebula, ou funcionar como sistema de ficheiros (Ceph Filesys-

tem).

O Ceph Filesystem e um sistema de ficheiros compatıvel com POSIX [25], que usa o

cluster Ceph para armazenar os seus dados.

Um cluster e composto, pelo menos, por um Ceph Monitor e por dois Ceph OSD

daemons. Existe ainda outro elemento que pode pertencer a um cluster, Ceph Metadata

Server, mas esse elemento so e utilizado se o cluster funcionar como Ceph Filesystem

[26].

O Ceph OSD daemon (OSD) armazena dados, e responsavel pela replicacao e recu-

peracao dos dados, rebalanceamento do cluster e providencia informacao de monito-

Page 28: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 14

rizacao aos Ceph Monitors, ao verificar regularmente o estado dos outros OSDs.

O Ceph Monitor (Monitor) mantem mapas do estado do cluster, entre os quais mapas

dos monitores do cluster e mapas dos OSD.

O Ceph Metadata Server (MDS) guarda metadados dos ficheiros quando o Ceph esta

a operar como sistema de ficheiros. O MDS possibilita aos utilizadores do sistema de

ficheiros Ceph executar comandos basicos de procura e listagem de ficheiros sem causar

um grande aumento de carga ao cluster Ceph [26].

O Ceph armazena os dados como objectos dentro de pools de armazenamento. Ao usar o

algoritmo CRUSH [27] [28], o Ceph calcula qual o Placement Group (o Placement Group

junta um conjunto de objectos num grupo, que depois vai ser armazenado em um ou

mais OSD, estando assim os objectos espalhados pelo cluster [29]) que deve conter o

objecto, e tambem calcula qual o OSD que vai armazenar esse Placement Group.

O Gluster [30] e o Ceph, sao sistemas de ficheiros distribuıdos, facilmente escalaveis e

idealizados para serem usados em hardware comum, o que permite baixar os custos de

implementacao e escalabilidade do cluster.

A arquitetura do Gluster agrega varios servicos que podem ser disponibilizados numa

rede informatica. Esses servicos sao armazenamento e capacidade de computacao. Cada

servidor presente no cluster e considerado um no, e a capacidade do cluster e escalavel ao

adicionar mais nos a este, ou ao adicionar mais armazenamento ao no. Consequentemente

ao aumento da capacidade do cluster, a sua performance e aumentada com o aumento

de armazenamento disponıvel e da rapida disponibilidade dos dados, devido a replicacao

dos dados entre os nos [31].

O algoritmo utilizado pelo Gluster para a gestao dos ficheiros e dados esta presente em

todos os servidores do cluster, logo nao existe servidores com papeis definidos, como por

exemplo a gestao dos metadados [31].

O Gluster apresenta um design modular, que utiliza pequenos plugins chamados de

translators, que permitem estender as funcionalidades base do cluster. Essas funcionali-

dades podem passar pela mudanca do metodo de redundancia dos dados, assim como a

alteracao de como os estes sao distribuıdos pelo cluster [32].

Page 29: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 15

2.4 LUKS

O LUKS [33] e a especificacao standard para encriptacao de discos em Linux. Enquanto

que uma grande parte dos softwares de encriptacao de discos usam formatos e processos

de encriptacao diferentes e incompatıveis entre si, o formato utilizado pelo LUKS e uni-

versal entre as distribuicoes Linux, o que facilita a compatibilidade e interoperabilidade

entre diferentes programas.

Um disco/dispositivo formatado com o LUKS e composto pelos seguintes campos: LUKS

partition header (PHDR), oito seccoes chamadas Key Material, numeradas de 1 a 8, e

um campo chamado bulk data, que contem os dados cifrados. O layout da estrutura esta

representado abaixo [34] [35].

LUKS partition header KM 1 KM 2 ... KM 8 bulk data

O pormenor de existirem oito Key Material significa que podem existir ate oito passwords

que decifram o dispositivo encriptado.

O PHDR tambem contem informacoes sobre os key slots, que estao associados aos Key

Material, que se encontram a seguir ao PHDR.

Quando um key slot esta activo, isto e, tem uma password associada ao dispositivo

cifrado, e guardada uma copia da Master Key no Key Material correspondente, estando

este encriptado com uma password. Fornecer essa password permite a desencriptacao do

Key Material, o que leva ao acesso da Master Key, que vai ser utilizada para desbloquear

a bulk data.

Para um key slot, todos os parametros necessarios para decifrar o seu Key Material com

uma determinada password estao guardados no PHDR.

Na tabela 2.1 esta representado o layout do campo PHDR, que se encontra no inıcio de

uma particao formatada com LUKS.

O header pode ser dividido em duas partes: a primeira parte e composta pelas in-

formacoes necessarias para decifrar a bulk data, parte essa composta pelos campos cipher-

name, cipher-mode, payload-offset e pelo campo key-bytes.

A segunda parte e usada para a verificacao dos candidatos a master-key (mk-digest,

mk-digest-salt e mk-digest-iter).

Cada key-slot contem informacao relativa ao processo de decifrar o Key Material. Como

ja descrito acima, o key-slot refere-se a uma copia da Master Key, que esta guardada

Page 30: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 16

Campo Descricao

magic Valor do campo ”magic”para o header do LUKS

version Versao do LUKS

cipher-name Nome da cifra

cipher-mode Modo da cifra

hash-spec Especificacoes da hash

payload-offset Inıcio da bulk data

key-bytes Numero de bytes na chave

mk-digest Checksum da master key

mk-digest-salt ”Sal”usado para determinar o mk-digest

mk-digest-iter Numero de iteracoes para calcular o mk-digest

uuid UUID (Universal Unique Identifier) da particao

key-slot-1 Key Slot 1

key-slot-2 Key Slot 2

... ...

key-slot-8 Key Slot 8

Tabela 2.1: Header da particao LUKS

no Key Material, que por sua vez esta cifrado por uma password. Uma descricao da

composicao do key-slot esta representada na tabela 2.2.

Campo Descricao

active Estado da key slot

iterations Numero de iteracoes para cifrar a password

salt ”Sal”para a cifra da password

key-material-offset Indicacao do sector inicial do Key Material correspondente

stripes Numero de stripes usados pelo processo de cifra

Tabela 2.2: Composicao de um key-slot

Como o LUKS guarda a informacao de setup no header da particao cifrada, isto permite

que, por exemplo, se cifre uma pen num computador, e seja possıvel aceder ao seu

conteudo noutro [33] [34].

Um exemplo do comando e respectivos switches para formatar um dispositivo com LUKS

esta descrito no comando abaixo indicado [36]:

Page 31: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 17

cryptsetup -v --cipher aes-xts-plain64 --key-size 256 --hash sha1

--iter-time 1000 --use-urandom --verify-passphrase luksFormat

<dispositivo>

Os switches do comando acima exemplificado sao descritos da seguinte forma:

• --cipher aes-xts-plain64: Indica qual a cifra que ira ser utilizada para encrip-

tar o dispositivo;

• --key--size 256: O tamanho da chave a ser utilizada. Por omissao, o LUKS

utiliza chaves de tamanho 256 bit;

• --hash sha1: O algoritmo de hash usado; Desde Janeiro de 2014, o algoritmo

SHA1 e considerado adequado para uso [37];

• --iter-time 1000: Tempo, em milisegundos, usado para cifrar a password ;

• --use-urandom: Utiliza o dispositivo /dev/random para gerar entropia durante o

processo de criacao da Master Key do dispositivo LUKS;

• --verify-passphrase: Switch que obriga a reinsercao da palavra-passe, como

metodo de confirmacao durante o processo de criacao da particao LUKS;

Por omissao, o comando cryptsetup -v luksFormat <dispositivo> substitui todas

as opcoes dos switches acima descritos.

Apesar de, por omissao, o LUKS usar a cifra AES, com o modo xts-plain64, e usar o

algoritmo de hash SHA1, estes parametros podem ser modificados.

Para cifras utilizadas, o LUKS suporta as seguintes: AES, twofish, serpent, cast5

e cast6. Em relacao ao modo da cifra, esta pode tomar os seguintes valores: ecb,

ecb-plain, cbc-essiv:hash (ex: cbc-essiv:sha256), e o modo xts-plain64, que e o

modo usado por omissao.

Quanto aos valores utilizados para o switch relativo a hash, podem ser os seguintes:

sha1, sha256, sha512 e finalmente ripemd160 [34].

Nao existe uma combinacao ideal entre cifras, modos e hashs a serem usados no momento

de criacao do dispositivo cifrado, logo torna-se necessario adaptar a forca da cifra, e a

dificuldade existente para a quebrar, de acordo com o tipo de informacao que se pretende

armazenar no dispositivo.

O LUKS tem como base uma versao melhorada do cryptsetup que, por sua vez, utiliza

o dm-crypt como base para a encriptacao de discos.

Page 32: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 18

O dm-crypt [38] e um subsistema de encriptacao de discos, que faz parte da infraestrutura

do device mapper. Este pode ser utilizado por cima de outros dispositivos criados atraves

do device mapper, tais como dispositivos RAID ou volumes criados pelo LVM.

O dm-crypt so faz a encriptacao do dispositivo de bloco, nao le ou analisa quaisquer

dados la existentes. O facto deste software so lidar com encriptacao de dispositivos

de blocos, de uma forma transparente, torna-o bastante flexıvel, pois permite encriptar

qualquer dispositivo de blocos, independentemente do SO la instalado.

2.5 iSCSI

iSCSI e um protocolo de transporte que foi desenvolvido com o intuito de permitir a

comunicacao de blocos de dados entre um computador anfitriao, chamado de Initiator,

e um dispositivo de destino, chamado Target, atraves de redes TCP/IP, possibilitando

que comandos SCSI sejam encapsulados em pacotes IP [39].

Por transportar comandos SCSI em redes IP, o iSCSI e usado para facilitar a transferencia

de dados em intranets e para gerir armazenamento em longas distancias. O iSCSI pode

ser usado para transmitir dados em LANs, WANs, ou na Internet e pode permitir o

armazenamento de dados e sua recuperacao independente da localizacao.

No iSCSI, quando uma aplicacao envia uma pedido I/O, o sistema operativo gera o

comando SCSI necessario, o qual e entao encapsulado num pacote IP, que vai ser

transmitido normalmente atraves de uma rede Ethernet. Este pacote e recebido pelo

iSCSI Target, sendo depois o comando extraıdo e interpretado pelo dispositivo SCSI

[40].

Atraves do protocolo iSCSI, o acesso a unidade de armazenamento ocorre ao nıvel de

blocos (Block Level), ao contrario do que acontece com os protocolos FTP ou NFS, onde

o acesso e feito ao nıvel de ficheiros (File Level) [41].

No Block Level, a gestao do sistema de ficheiros e feito pelo host, o que faz com que

apenas transitem pacotes SCSI entre o Initiator e o Target, fazendo com que o SO

cliente (iSCSI Initiator) reconheca o volume alocado em storage como se de um disco

local se tratasse.

Ja em File Level, o sistema de ficheiros esta do lado do dispositivo de armazenamento,

bem como os protocolos para partilha de ficheiros (ex. NFS ou FTP), que tambem sao

executados do lado do servidor.

As caracterısticas do protocolo iSCSI tornam-no ideal para o armazenamento de dados

Page 33: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 2. SOFTWARE/TECNOLOGIAS UTILIZADAS 19

num volume alocado remotamente. No entanto este protocolo nao e adequado para a

partilha de um volume remoto, isto porque caso ocorram multiplos acessos simultaneos

provenientes de iSCSI Initiators distintos, existe uma grande probabilidade de os dados

ficarem corruptos.

2.6 LVM

LVM e visto como uma ferramenta para a gestao de volumes logicos no Linux. Ao criar

uma camada de abstraccao sobre o armazenamento fısico (ex. HDD, SSD), faz com que

a criacao e gestao de volumes logicos seja mais flexıvel e dinamica.

Na estrutura LVM existem tres componentes principais:

• Physical Volume (PV): sao a base do LVM e representam o armazenamento fısico;

• Volume Group (VG): composto por um ou mais PV, de modo a criar uma pool de

armazenamento;

• Logical Volume (LV): sao criado sobre os VG, e sao estes volumes que sao utilizados

para aceder/manipular o espaco existente no armazenamento fısico;

O uso de LVM traz algumas vantagens, entre as quais a possibilidade de personalizar os

nomes dos dispositivos, o que facilita a sua identificacao e o pormenor do redimensiona-

mento da particao sem que haja qualquer necessidade de refazer o seu conteudo.

Existem tres tipos de LV: linear volume, striped volume e mirrored volume.

• Linear Volumes: Neste tipo de LV, varios PV sao concatenados num so LV. Todo

o espaco disponıvel nos PV e entao utilizado neste LV;

• Stripped Volumes: Neste tipo de LV, os dados sao repartidos e escritos em varios

discos fısicos, o que pode originar uma melhor performance de I/O. Este tipo de

LV e semelhante ao RAID 0;

• Mirrored Volumes: Quando os dados sao escritos para o LV, estes sao escritos

simultaneamente em dois dispositivos, o que faz com que haja, pelo menos, duas

copias dos mesmos dados. Analogamente, este modo e semelhante ao RAID 1, o

que origina redundancia dos dados;

Page 34: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Capıtulo 3

Desenvolvimento

Neste capıtulo serao descritos os procedimentos seguidos para a instalacao e configuracao

dos softwares utilizados no projecto NASCloud.

Na seccao 3.1 sao apresentados os varios cenarios montados e testados, onde e dada uma

explicacao da composicao de cada um, juntamente com o seu proposito.

Na seccao seguinte (3.2) e apresentado e descrito o script criado para a execucao dos

benchmarks de velocidade. O script pode ser consultado no apendice A.

Quanto aos softwares de cache utilizados, as suas configuracoes estao descritas na seccao

3.3. Aqui sao explicados os passos necessarios para estabelecer a associacao do disco

SSD ao dispositivo proveniente da Cloud atraves do BCache e EnhanceIO, para desta

forma acelerar o seu acesso.

Logo de seguida, na seccao 3.4, sao indicados quais os procedimentos usados para a

criacao e estabelecimento de um cluster Ceph. Este cluster e usado para fornecer espaco

de armazenamento na forma de dispositivos de blocos, tal como se de uma cloud se

tratasse. O cluster foi configurado em dois cenarios: virtual e real. Em cada um existem

detalhes diferentes de configuracao, detalhes esses que sao indicados na seccao referida.

Para estabelecer as comunicacoes entre os varios elementos do projecto, utilizou-se

o protocolo iSCSI. Na seccao 3.5 sao explicados os procedimentos seguidos para a

instalacao e configuracao dos dois elementos que compoem o protocolo iSCSI - iSCSI

target e iSCSI initiator. Aqui sao tambem explicadas algumas alteracoes feitas ao SO,

de modo a aumentar a performance.

Seguindo a estrutura definida apos os primeiros testes integridade de dados efectuados,

criou-se e configurou-se um array em RAID 1, com dispositivos de blocos provenientes da

20

Page 35: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 21

cloud. Este array vai permitir adicionar uma camada de redundancia. Os procedimentos

relativos a este processo estao explicados na seccao 3.6.

Como a seguranca dos dados e cada vez mais importante e essencial, para a definicao

final da appliance a componente ”Seguranca” era um requisito obrigatorio. Na seccao

3.7 sao explicadas as vantagens do uso desta componente, juntamente com uma descricao

da etapas seguidas, para a instalacao e configuracao do LUKS.

Finalmente, na seccao 3.8 e feita uma descricao dos passos seguidos para a implementacao

do LVM, o que vai facilitar a gestao do espaco de armazenamento proveniente da cloud.

3.1 Cenarios de teste

Foram implementados e testados varios cenarios de teste, com objectivos definidos. O

primeiro objectivo foi medir a performance dos softwares de cache utilizados no projecto

(EnhanceIO e BCache), para se poder definir qual o mais adequado.

Na figura 3.1 esta representado o cenario base do projecto. Da Cloud, simulada pelo

cluster Ceph, sao exportados por iSCSI dispositivos de blocos para o CSG, onde este

por sua vez os reexporta, tambem por iSCSI, para o Cliente.

Este cenario foi utilizado para definir e configurar as conexoes entre os varios elementos

do projecto (Ceph, CSG e Cliente), e estabelecer os valores iniciais de comparacao para os

testes de velocidade a serem feitos no projecto, a medida que a instalacao e configuracao

dos restantes softwares utilizados e feita.

ISCSI

ClienteCloud Storage Server

/dev/sdxISCSI

Figura 3.1: NASCloud - Caso Base

O cenario representado na figura 3.2 e, de um modo geral, igual ao cenario acima

descrito, mas com a diferenca de existir um dispositivo SSD, que vai servir de cache

aos dispositivos de blocos provenientes da Cloud.

A utilizacao deste cenario permitiu estabelecer as definicoes do software de cache usado

no projecto (EnhanceIO), e verificar os ganhos de velocidade que este permitiu obter,

Page 36: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 22

face ao cenario anterior.

ISCSI ISCSI

ClienteCloud Storage Server

EnhanceIOWB/WT

SSD

Figura 3.2: NASCloud - Cenario Base com aceleracao local

Outro cenario de teste, desta vez de integridade de dados, esta representado na figura

3.3. Este cenario representa a ocorrencia de falhas no dispositivo SSD, que serve de

cache e acelera o acesso aos dados localizados na Cloud, o que permite observar o

comportamento do software de cache neste tipo de situacoes, e estabelecer metodos

e outros cenarios de testes, de modo a prevenir perda de dados e garantir que estes estao

sempre salvaguardados, na eventualidade de ocorrerem falhas no sistema ou no setup do

projecto.

ISCSI

ClienteCloud Storage Server

EnhanceIOWB/WT

SSD

ISCSI

Figura 3.3: NASCloud - Cenario Base com falha na aceleracao local

Finalmente, a figura 3.4 representa a estrutura final do projecto NASCloud, onde sao

importados da Cloud para o CSG dois dispositivos de blocos, via iSCSI, cujo acesso foi

acelerado pelo software de cache EnhanceIO. Depois de acelerados, foi criado um RAID

1 composto pelos dois dispositivos importados, para garantir redundancia dos dados.

A criacao deste cenario e uma consequencia dos testes efectuados no cenario anterior

(figura 3.3), em que se identificou os possıveis pontos de falha na estrutura, e tentou-se

elimina-los atraves da duplicacao de conexoes para a cloud, e do estabelecimento de um

array RAID 1.

Page 37: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 23

ISCSI

Cliente

Cloud Storage Server

EnhanceIOWB/WT

SSD

EnhanceIOWB/WT

SSD

ISCSI 1

ISCSI 2

Figura 3.4: NASCloud - Cenario Final

Em cima destes cenario de testes, foram feitos mais alguns testes de integridade de dados,

ao simular diversas falhas durante o funcionamento do sistema. As falhas testadas foram

a quebra de uma ligacao iSCSI a Cloud, e falhas num disco SSD.

Depois dos testes de integridade feitos, e descobertos os pontos de falha deste cenario,

continuou-se a montar o resto da estrutura, que incluıa a camada de encriptacao, forne-

cida pelo LUKS, e o software para gestao do espaco proveniente da Cloud, o LVM.

3.2 FIO

Para os testes de performance e velocidade, foi utilizado o software FIO, que permite

executar benchmarks de velocidade de leitura e escrita de dados em dispositivos de

blocos.

De modo ao FIO simular um determinado workload de I/O, e necessario indicar uma

serie de parametros com a descricao do setup pretendido. A esse conjunto de parametros

da-se o nome de job.

Foram executados dois processos do FIO: o primeiro para fazer um warm-up da cache,

que consiste em executar leituras e escritas sequenciais, de modo a colocar dados na

cache, e o segundo para retirar os dados a serem analisados, representando o benchmark

propriamente dito.

De modo a agilizar todo o processo de benchmarking, foi criado um script bash em que,

consoante o tipo de teste a ser executado (writeback ou writethrough), ou o dispositivo

a ser testado, era modificado.

Essas modificacoes eram efectuadas na linha source device=/dev/sdb1, onde era in-

dicado qual o dispositivo a ser testado. e na linha cache mode=wb, onde se indicava

Page 38: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 24

que tipo de teste era efectuado (writeback ou writethrough). Esta ultima opcao neste

script era so usada por motivos de organizacao dos ficheiros criados, em que se cria

uma directoria de acordo com o tipo de teste a efectuar. O script completo pode ser

consultado no apendice A.

Para executar o FIO de acordo com o que se pretendia simular, houve necessidade de

utilizar varios switches, para personalizar e fazer um fine tuning aos processos a serem

executados. Os switches utilizados estao descritos abaixo, juntamente com uma breve

descricao do significado de cada um. De notar que, para os testes de benchmark, foram

feitos acessos de leitura e escrita aleatorios, cenarios onde os discos SSD sao mais rapidos

que os discos HDD, o que permite tirar mais partido da aceleracao de cache.

• direct=1: A funcao deste switch e garantir que os dados que estao a ser escri-

tos/lidos sao passados directamente para o dispositivo, evitando assim que estes

fiquem armazenados no buffer e sejam mais rapidamente processados. Este buffer

e uma memoria que esta embebida no dispositivo de armazenamento, que actua

como uma memoria cache. Isto permite que os resultados sejam mais fidedignos;

• –size=XX: Executa um processo do tamanho indicado nesta variavel. Esse tama-

nho pode ser num valor em MB/GB , ou entao uma percentagem do tamanho de

um ficheiro ou dispositivo indicado;

• –filesize=2GB: Tamanho maximo do ficheiro criado;

• –blocksize=4K: O tamanho do bloco usado para o I/O, tanto para leituras como

para escritas;

• –ioengine=libaio: Define como o processo FIO trata os I/O para o ficheiro. O

modo ”libaio” significa Linux Native Asynchronous I/O. Este modo so pode ser

utilizado com o switch –direct=1;

• –rw=rw/randrw: Define o tipo de leituras/escritas a serem executadas. rw =

leituras/escritas sequenciais; randrw = leituras/escritas aleatorias;

• –rwmixread=XX: Percentagem de leitura a ser feita no job;

• –rwmixwrite=XX: Percentagem de escrita a ser feita no job. A juncao deste switch

com o definido anteriormente (rwmixread) tem de ser igual a 100;

• –iodepth=X: Numero de I/O units que vao ser processados ao mesmo tempo. Uma

I/O unit e equivalente a um ”ficheiro”a ser processado;

Page 39: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 25

• –numjobs=X: Numero de jobs que sao executados ao mesmo tempo;

• –filename=/dev/sd?: Dispositivo/ficheiro que vai ser usado para executar o teste;

• –group reporting: Agrupa as estatısticas de cada job num so grupo;

• –name=??: Nome de cada job executado;

• –random distribution: Modelo de distribuicao usado pelo FIO para execucao de

IO aleatorios;

3.3 Software de cache

Para a manipulacao dos dispositivos de cache, pelos softwares EnhanceIO e BCache,

foram criados dois scripts, um para cada caso. Os scripts podem ser consultados nos

apendices B e C.

O modo de utilizacao destes scripts e semelhante ao do FIO, isto e, existem blocos

de codigo que sao modificados conforme o tipo de sistema de cache que se pretende

implementar.

Em relacao do BCache, nas linhas source device="/dev/sda" e cache device="/dev/vdb"

sao indicados os dispositivos que serao utilizados como dispositivo lento, a ser acelerado,

e o disco SSD, que serve de cache ao dispositivo lento.

Na linha cache mode=wb e indicado o tipo de polıtica de cache a ser utilizada. Finalmente

a linha cache=bcache0 indica o nome dado ao dispositivo virtual utilizado pelo BCache.

Os restantes blocos de codigo dizem respeito ao processo de criacao e eliminacao da cache.

Durante o processo de criacao de cache, sao alterados algumas definicoes de cache para

se obter resultados de benchmark mais fidedignos. Essas alteracoes sao referentes aos

tempos de latencia dos discos SSD para I/O sequenciais, em que por vezes podem ser

mais lentos do que os dispositivos de armazenamento. O que foi feito foi retirar os limites

de tempo para que assim nao ocorra nenhum atraso do disco SSD. A opcao relativa ao

sequential cutoff tambem esta relacionada com I/O sequenciais. Ao alterar o seu

valor para 0, esta-se a indicar ao BCache para nao descartar I/O sequenciais [42].

Sobre o processo de eliminacao de cache, primeiro e dada a indicacao para parar o

dispositivo de cache, para copiar o seu conteudo, caso haja, para o dispositivo lento.

O passo seguinte no processo de eliminacao da cache e retirar a ligacao entre os dois

dispositivos (SSD e dispositivo lento).

Page 40: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 26

No ultimo bloco de codigo, descomenta-se a opcao que se pretende executar (criacao ou

eliminacao da cache).

Quanto ao metodo de criacao e eliminacao de cache utilizando o software EnhanceIO, o

script apresentado no apendice C esta dividido em quatro blocos.

O primeiro bloco e referente as definicoes da cache, onde e indicado qual o dispositivo a

ser acelerado, o dispositivo que serve de cache (disco SSD), a polıticas de substituicao

e de cache utilizadas, o tamanho do bloco da cache, e finalmente o nome a ser dado a

cache.

O segundo bloco do script diz respeito ao comando de criacao da cache e os switches

utilizados para tal, previamente indicados no bloco anterior.

No terceiro bloco de codigo esta o comando utilizado para a eliminacao de uma cache

criada pelo software EnhanceIO. Finalmente no ultimo bloco de codigo, a imagem do

script referente ao BCache (apendice B), basta descomentear a opcao que se pretende

executar, se a criacao ou eliminacao da cache.

3.4 Ceph

Como ja descrito na seccao 2.3, o Ceph e uma plataforma de armazenamento open-

source, que disponibiliza armazenamento de blocos e ficheiros a partir de um cluster

distribuıdo. A grande vantagem do uso do Ceph e ser tolerante a falhas, devido a

replicacao de dados entre os elementos do cluster, o que faz que nao haja um ponto de

falha e os dados estejam sempre disponıveis para os utilizadores.

Para o projecto NASCloud utilizou-se o armazenamento de blocos, pois assim foi possıvel

exportar o espaco disponıvel no cluster via iSCSI. Para a gestao e manipulacao de

imagens de dispositivos de blocos, o Ceph utiliza a interface RADOS Block Device

(RBD).

Pode-se assumir que um dispositivo de blocos do Ceph e um disco de rede virtual, que

pode ser anexado a um host Linux, estando este a partir deste ponto disponıvel como

se de um disco local se tratasse.

O que motivou a escolha do Ceph sobre o Gluster foi o facto deste nao permitir criar e

exportar dispositivos de blocos nativamente, como acontece com o Ceph [43].

No Gluster o metodo utilizado para criar e exportar dispositivos de blocos passa por

montar o Gluster numa maquina pertencente ao cluster, e criar um ficheiro que representa

Page 41: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 27

o dispositivo de blocos proveniente do Gluster, atraves do comando dd. Depois disso,

tem de se exportar por iSCSI o ficheiro criado no passo anterior.

Executados todos os passos descritos no paragrafo anterior, o cliente, liga-se ao disposi-

tivo exportado como iSCSI Initiator [44].

O problema desta abordagem e que o dispositivo de blocos nao e acedido directamente,

como acontece no Ceph. Este e simulado por um ficheiro, que por sua vez, e exportado

por iSCSI.

A instalacao do Ceph obriga a certas regras. Uma delas e que todos os computadores

envolvidos no cluster tem de poder aceder uns aos outros atraves de ”root”, sem uso

de password. Este passo foi feito atraves do comando ”ssh-copy-id root@dest node”,

onde dest node e a maquina de destino. Outra regra essencial para a instalacao de um

cluster Ceph e que as maquinas envolvidas tem de comunicar entre si atraves dos seus

hostnames.

Nos dois cenarios de teste, a versao do Ceph que foi utilizada foi a 0.72 Emperor.

Antes de proceder a instalacao, foram criadas os seguintes directorios em todas as

maquinas envolvidas no cluster, que sao as localizacoes onde o Ceph armazena os seus

dados. Apesar deste passo nao ser obrigatorio, este procedimento e aconselhado para

evitar problemas na instalacao do cluster [45]:

• /etc/ceph

• /var/lib/ceph/tmp,mon,bootstrap-osd

• /var/log/ceph

E adicionado o repositorio do Ceph ao sistema, pela criacao do ficheiro ceph.repo no

directorio /etc/yum.repos.d, com o seguinte conteudo:

[ ceph−noarch ]

name=Ceph noarch packages

b a s e u r l=ht tp : //ceph.com/rpm-emperor/fc19/noarch

enab l ed=1

gpgcheck=1

type=rpm−md

gpgkey=h t t p s : //ceph.com/git/?p=ceph.git;a=blob plain;f=keys/release.asc

Page 42: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 28

3.4.1 Cenario Virtual

O cenario virtual foi a primeira hipotese a ser explorada para a implementacao de um

cluster Ceph. Tal deve-se a facilidade de criacao e de utilizacao de maquinas virtuais

para o efeito.

Para a criacao do cluster Ceph foi usado o esquema de rede representado na figura 3.5.

Ceph Monitor

OSD Daemon

Ceph Monitor

OSD Daemon

Ceph Monitor

OSD Daemon

Rede Intra-OSD

Cluster Ceph

Cloud StorageGateway

Ceph-node1 Ceph-node3Ceph-node2

CSG

Figura 3.5: Diagrama Ceph - cenario virtual

O hardware das maquinas virtuais Ceph-Node1, Ceph-Node2 e Ceph-node3 era identico.

Todas elas tinham um processador Single Core a 2.6 GHz, 512 Mega Bytes (MB) RAM,

e dois discos rıgidos: um de 7 Giga Bytes (GB), que era o disco do sistema, e outro de

20 GB, que iria ser usado para o cluster Ceph.

A maquina CSG tambem tinha um processador Single Core a 2.6 GHz, mas o dobro da

memoria RAM das maquinas Ceph (1024 MB RAM). Quanto aos discos rıgidos, esta era

composta por quatro discos: um de 7 GB para o sistema, e os restantes tres como discos

SSD, de modo a funcionarem como cache para os dispositivos de bloco provenientes do

cluster Ceph.

A velocidade da rede virtual utilizada era de 1 Gbps.

Na altura da instalacao foram utilizadas duas sub-redes, com propositos diferentes: a

rede interna do cluster, servia para comunicacao exclusiva entre os elementos do cluster,

e a rede publica. O uso da rede interna permite reduzir a carga de utilizacao da rede

publica, ao eliminar o trafego de heartbeat e replicacao entre OSDs.

Existem mais razoes para usar duas redes distintas:

Page 43: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 29

• Seguranca: ter uma rede separada para o cluster previne possıveis ataques de

Denial of Service (DoS). Quando o trafego entre os OSDs e interrompido, o estado

do cluster deixa de estar em active+clean, o que vai impedir de ler/escrever dados

para o cluster;

• Performance: Os OSDs sao responsaveis pela replicacao de dados entre os OSDs do

cluster. Quando os OSDs replicam os dados, a carga gerada na rede rapidamente

supera a carga da rede entre os clientes e o cluster, o que origina latencia na rede

e problemas de performance. A verificacao de heartbeat dos OSDs tambem origina

mais trafego na rede, o que pode comprometer a performance desta.

Os passos seguidos para a instalacao e configuracao do cluster estao enumerados e

explicados abaixo. Todo o processo foi executado a partir de uma maquina (Ceph-

Node1).

1. Criacao do primeiro Ceph-monitor:

• yum install ceph-deploy: Antes de iniciar todo o processo de instalacao

do cluster Ceph, teve de se instalar o programa ceph-deploy, na maquina

Ceph-Node1, que vai ser o monitor principal do cluster;

• ceph-deploy new Ceph-Node1: Para criar o cluster, de nome ”ceph”, sendo

o Ceph-Node1 o monitor principal;

• ceph-deploy install Ceph-Node1: Instala o Ceph na maquina Ceph-Node1;

• ceph-deploy mon create-initial: Adiciona a maquina como monitor do

cluster. A partir deste ponto o cluster esta criado, e o seu estado pode ser

consultado atraves do comando ceph status;

• Foram acrescentadas as seguintes entradas em /etc/ceph/ceph.conf:

[global]

public network=192.168.10.0/24

cluster network=192.168.20.0/24

• service ceph restart: Reiniciou-se o servico Ceph, no monitor principal,

para confirmar que ficou correctamente instalado;

2. Adicao de monitores ao cluster:

Page 44: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 30

• ceph-deploy install Ceph-Node2 Ceph-Node3;

• ceph-deploy mon create Ceph-Node2 Ceph-Node3: Cria e define as maquinas

Ceph-Node2 e Ceph-Node3 como monitores do cluster;

3. Instalacao dos OSDs:

• ceph-deploy disk list Ceph-Node1: Lista os discos/particoes disponıveis

na maquina Ceph-Node1, que vao ser utilizadas para o servico OSD;

• ceph-deploy disk zap Ceph-Node1:vdb: Este comando remove a tabela de

particoes do disco vdb, para preparar a instalacao do Ceph, como OSD;

• ceph-deploy osd prepare Ceph-Node1:vdb: Transforma a maquina num

no OSD do cluster, e criar duas particoes no disco vdb: uma para servir como

journal do OSD, outra que vai ser utilizada para armazenar os dados (vdb1 );

• ceph-deploy osd activate Ceph-Node1:vdb1 Activa o Ceph-Node1 como

OSD, na particao vdb1, depois desta ter sido preparada no passo anterior;

A partir deste ponto do processo de instalacao e configuracao, ao executar o

comando ceph -s, foi possıvel verificar que o estado do cluster esta como AC-

TIVE+CLEAN, o que significa que tudo correu como esperado.

Para a instalacao dos restantes OSDs, todos os passos descritos no ponto 3 foram

repetidos, mas alterou-se para o nome das maquinas pretendidas (Ceph-Node2,

Ceph-Node3).

4. Criacao de dispositivos de bloco no Ceph:

• rbd create block-csg --size 2048: Criou-se uma imagem de um dispo-

sitivo de blocos no Ceph, com o nome block-csg, com tamanho de 2 GB;

Inicialmente, para disponibilizar o dispositivo de bloco criado no Ceph ao CSG,

utilizou-se o comando rbd para mapear o dispositivo localmente, na maquina

monitor do cluster Ceph. O comando rbd permite criar, listar, alterar e remover

imagens de dispositivos de bloco com origem no Ceph. Ao longo dos testes

efectuados chegou-se a conclusao que este metodo nao era o ideal para exportar os

dispositivos via iSCSI para os clientes, porque as velocidades obtidas eram muito

baixas.

Outro inconveniente deste procedimento era o facto da maquina CSG tomar o

papel de Ceph Client, o que implica que o CSG faca parte do cluster. Isto iria

eliminar o objectivo da utilizacao do Ceph, que passava pela simulacao de uma

Page 45: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 31

Cloud para exportacao de espaco existente na nuvem, de uma forma transparente

e atraves de iSCSI, para o CSG. A figura 3.6 ilustra o esquema inicial.

Ceph Monitor + OSD Daemon

Cluster Ceph original Ceph Client

CSG

RBD

Cluster Ceph original + Ceph Client

Cliente

ISCSI

Figura 3.6: Diagrama Ceph - Cluster Ceph+Ceph Client

A solucao encontrada foi exportar, via iSCSI, os dispositivos de blocos directamente

a partir das maquinas pertencentes ao cluster. Para isso teve de se instalar o

pacote scsi-targets-utils modificado para poder exportar imagens de dispositivos

criados pelo rbd. Isto acontece porque o pacote scsi-targets-utils, por omissao,

nao suporta dispositivos rbd. O pacote utilizado estava disponıvel no repositorio

extra do Ceph [46]. Desta forma, para o CSG, a importacao dos dispositivos de

bloco provenientes do cluster Ceph foi feita usando os procedimentos habituais em

Linux, como pode ser consultado na seccao 3.5. Na figura 3.7 pode-se visualizar

como ficou a estrutura usada ao longo do projecto.

Ceph Monitor + OSD Daemon

Ceph Monitor+ scsi-targets- utils

Cluster Ceph original

CSG

ISCSI

Cliente

ISCSI

Figura 3.7: Diagrama Ceph - Cluster Ceph+scsi targets utils

3.4.2 Cenario Real

Para estes testes foram utilizadas 14 computadores reais, todos com hardware identico.

Como caracterısticas tecnicas, as maquinas dispunham de um processador Quad Core

1.4GHz, 4GB RAM, sendo criadas tres particoes, todas com 5 GB, para o SO, journal

Page 46: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 32

dos OSDs do Ceph e para o armazenamento dos dados gravados nos OSDs. A maquina

que serviu com CSG, alem do hardware ja descrito, tinha instalado um disco SSD com

240 GB de capacidade, que foi utilizado para cache dos dispositivos de blocos importados

do cluster Ceph. A velocidade da rede era de 100Mbps.

OSDs Daemons

Cluster Ceph

Cloud StorageGateway

Ceph Monitors

T0101 T0102 T0103

T0104 T0105 T0106 T0107 T0108 T0109 T0110 T0111 T0112 T0113

Figura 3.8: Diagrama Ceph - Cenario real

O esquema deste cenario esta representado na figura 3.8, e para a implementacao do

Ceph foram seguidos os mesmos passos descritos na seccao 3.4.1, apenas com ligeiras

alteracoes relativas a localizacao dos dados e do journal dos OSD’s.

Como neste cenario foi utilizado um maior numero de computadores, foram criados e

utilizados alguns pequenos scripts.

O primeiro script foi utilizado para instalar o Ceph nas maquinas T0101 ate T0112.

for i in ‘seq -w 01 12‘;do ceph-deploy install T01$i; done

Os restantes scripts utilizados tinham como objectivo preparar e configurar os discos

rıgidos e os OSDs.

for i in ‘seq -w 04 12‘;do ceph-deploy disk zap T01$i:sda10; done

for i in ‘seq -w 04 12‘;do ceph-deploy disk zap T01$i:sda11; done

for i in ‘seq -w 04 12‘;do ceph-deploy osd prepare

T01$i:sda11:/dev/sda10; done

for i in ‘seq -w 04 12‘;do ceph-deploy osd activate

T01$i:sda11:/dev/sda10; done

Os codigos das ultimas duas linhas indicam os dispositivos sda11 e sda10 como a

Page 47: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 33

localizacao onde o OSD vai armazenar os dados, e o caminho para o journal do OSD,

respectivamente. Para obter uma melhor performance, deve-se colocar o journal do OSD

numa particao/dispositivo diferente da dos dados [47].

3.5 iSCSI

Para estabelecer as comunicacoes entre os varios elementos envolvidos no projecto (Ceph,

CSG e Cliente), utilizou-se o protocolo iSCSI. O CSG desempenha o papel de iSCSI

Initiator e iSCSI Target simultaneamente, ja que disponibiliza os dispositivos de blocos

aos Clientes, apos os ter importado do cluster Ceph.

3.5.1 iSCSI Target

Para que fosse possıvel exportar por iSCSI as imagens dos dispositivos de blocos cria-

dos pelo rbd, houve necessidade de instalar o pacote ”scsi-target-utils”, disponıvel nos

repositorios extra do Ceph [46]. A necessidade da instalacao deste pacote modificado

e devida a incompatibilidade do pacote ”scsi-target-utils” existente nos repositorios do

SO com as imagens criadas atraves do rbd. Apos o mapeamento do dispositivo atraves

do comando rbd map nome bloco, a exportacao do mesmo por iSCSI no Cliente tinha

uma performance muito abaixo do esperado.

Tanto nos cenarios virtuais como nos reais, as maquinas escolhidas para serem os iSCSI

targets foram os monitores principais dos clusters, Ceph-Node1 e T0101 respectivamente.

Depois de instalar o pacote referido acima, procedeu-se a configuracao do target. No

ficheiro /etc/tgt/targets.conf adicionaram-se as seguinte linhas, de modo a expor a

imagem do dispositivo de blocos rbd como um target a exportar [48] [49]:

<t a r g e t i qn . 2 0 1 4 . 0 4 . com . csg : b l o c k c eph . t a r g e t>

d r i v e r i s c s i

bs−t ype rbd

# back ing−s t o r e pool name/ block name

back ing−s t o r e rbd / b lock−csg# EXPOR O TARGET SO PARA O CSG − IP CSG

i n i t i a t o r −add r e s s 192 . 168 . 10 . 10

</t a r g e t>

Apos estas modificacoes, recarregou-se o servico, atraves do comando service tgtd

Page 48: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 34

reload, para activar o target.

Apos alguns testes efectuados, chegou-se a conclusao que era necessario acrescentar mais

alguns detalhes as configuracoes iniciais. Isto acontece nao so porque as velocidades me-

didas eram mais baixas do que as esperadas, mas tambem porque elas eram constantes,

estivesse ou nao a ser utilizado o software de aceleracao de cache, o que se traduzia em

resultados condicionados e adulterados.

As solucoes encontradas passaram por desactivar o Write Cache no iSCSI target [50] [51]

e acrescentar algumas configuracoes globais aos iSCSI targets, no ficheiro /etc/tgt/targets.conf

[52] [53], de modo a fazer um ligeiro tuning a performance do target. O facto de desactivar

o Write Cache no iSCSI target faz com que os dados, a medida em que sao recebidos

sejam logo guardados no dispositivo que serve de base ao bloco exportados, impedindo

assim que estes fiquem armazenados temporariamente na cache.

As linhas inseridas no ficheiro targets.conf foram as seguintes:

MaxRecvDataSegmentLength 262144

MaxXmitDataSegmentLength 262144

I n i t i a l R 2T No

ImmediateData Yes

MaxOutstandingR2T 8

O significado de cada linha e o seguinte:

• MaxRecvDataSegmentLength 262144: Maximo de dados recebidos por PDU;

PDU significa Protocol Data Unit (PDU) (Unidade de Dados de Protocolo), que

descreve um bloco de dados que e transmitido entre duas instancias da mesma

camada do modelo OSI.

Cada camada recebe a PDU da camada superior como um bloco de dados, adiciona

os seus cabecalhos de controlo, criando a sua propria PDU. A este processo chama-

se de encapsulamento [54].

• MaxXmitDataSegmentLength 262144: Maximo de dados transmitidos por PDU;

• InitialR2T No: Nao envia ao iSCSI initiator o sinal a indicar que esta pronto

receber dados. O nao envio do sinal elimina as pausas entre a transmissao de

pacotes iSCSI [55].

• ImmediateData Yes: Indica ao iSCSI initiator que envie de imediato dados para

escrita junto do pacote TCP, indicando o comando SCSI WRITE [55].

Page 49: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 35

• MaxOutstandingR2T 8: O numero maximo de Ready to Transfer (R2T) PDUs em

transmissao antes do PDU de confirmacao do termino do comando SCSI entre o

initiator e o target ter sido recebido [56];

Quando o iSCSI initiator submete um comando SCSI a indicar que pretende enviar

dados para o seu iSCSI target, o target envia varios R2T ao initiator, para que este

inicie o envio dos dados [57] [58].

Para desactivar o Write Cache no iSCSI target [50] [51] utilizou-se o seguinte comando:

tgtadm --lld iscsi --op update --mode logicalunit --tid 1 --lun 1

--params mode page=8:0:18:0x10:0:0xff:0xff:0:0:0xff:0xff:0xff:

0xff:0x80:0x14:0:0:0:0:0:0

O que resulta da aplicacao do comando e a actualizacao do parametro mode page para

o valor indicado, da unidade logica 1, pertencente ao target 1.

A maquina CSG, alem de desempenhar a funcao de iSCSI initiator em relacao ao cluster

Ceph, tambem foi configurada como um iSCSI target, para poder exportar os dispositivos

de blocos ja acelerados para os computadores Clientes.

Para isso, o ficheiro /etc/tgt/targets.conf foi configurado da seguinte forma:

<t a r g e t i qn . 2 0 1 4 . 0 4 . com . csg : b l o c k c s g . t a r g e t>

d r i v e r i s c s i

back ing−s t o r e /dev / sda

</t a r g e t>

Todas as restantes configuracoes acima indicadas foram tambem feitas no CSG.

3.5.2 iSCSI Initiator

As maquinas CSG e Cliente foram configuradas como iSCSI Initiators, tanto nos cenarios

reais como virtuais. O CSG funciona como o Initiator dos Targets que exportavam o

dispositivo de blocos proveniente do cluster Ceph, e os Clientes como Initiators dos

CSG (neste caso, configurados como iSCSI targets), onde importavam os dispositivos de

blocos disponibilizados por estes, devidamente acelerados.

Page 50: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 36

Os procedimentos de instalacao, deteccao dos targets e ligacao a estes foram os seguintes:

1. yum install iscsi-initiator-utils && service iscsi start: Instalou-se o

pacote iSCSI Initiator padrao, existente nos repositorios do SO, e iniciou-se o

servico iSCSI quando a instalacao deste terminou;

2. iscsiadm -m discovery -t sendtargets -p csg: descobre no CSG se este dis-

ponibilza iSCSI targets, e retorna os seus iSCSI Qualified Name (IQN). O IQN e

o nome pelo qual o target disponibilizado e conhecido [59];

3. iscsiadm -m node -T iqn.2014.04.com.csg:block ceph.target -p csg:3260

--login: Estabelece a conexao com o target indicado. Apos este passo, o target

esta mapeado no sistema, como se um dispositivo de blocos local se tratasse;

De modo a tentar obter a melhor performance de leitura/escrita possıvel, houve ne-

cessidade de configurar algumas definicoes existentes que actuam sobre o dispositivo de

blocos. Estas alteracoes foram feitas no Initiator, apos a conexao iSCSI estar estabelecida

[60] [61] [62].

echo noop > /sys/block/sdX/queue/scheduler

echo 1024 > /sys/block/sdX/queue/nr requests

echo 16384 > /sys/block/sdX/queue/max sector kb

A alteracao do scheduler de cfq para a configuracao noop fez com que a performance de

leitura/escrita melhorasse significativamente. O noop e um scheduler de pedidos I/O,

baseado em FIFO (First In, First Out), ou seja, o primeiro pedido I/O que entra na fila

de espera e o primeiro a sair desta. A vantagem desta alteracao e que deixa de existir

reordenacao e prioridade nos pedidos de I/O, tal como acontece com a configuracao por

omissao (cfq).

A nao prioritizacao dos pedidos de I/O permite que estes sejam controlados totalmente

pelo software que os esta a lancar, evitando assim conflitos entre os servicos utilizados.

Desta forma diminui-se o numero de possıveis interferencias (o que se traduz num

aumento de performance), passando a gestao de I/O do dispositivo para o protocolo

iSCSI.

A alteracao do parametro do dispositivo nr requests de 256 para 1024 resulta num

aumento do numero de pedidos I/O que o dispositivo faz para ler e escrever dados.

Aumentar a quantidade maxima de pedidos tende a melhorar a performance geral do

Page 51: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 37

dispositivo, principalmente em relacao a gravacao de dados [63].

Foi escolhido este valor porque providencia um aumento consideravel do numero de

pedidos I/O face ao valor por omissao. O valor escolhido poderia ser maior (ex. 2048),

mas tambem poderia afectar a latencia do sistema, caso existisse um grande numero de

dados pequenos.

A alteracao do parametro do sistema operativo max sectors kb para 16384 significa

uma reducao no numero de PDUs transmitidos entre os intervenientes.

O campo max sectors kb define o tamanho maximo permitido por I/O, em kb, no

dispositivo. Por omissao, o valor definido neste campo e de 512, isso significa que

quanto mais baixo for o valor definido em max sectors kb, maior sera a quantidade de

SCSI PDUs necessarios para a mesma quantidade de dados. Baseado nessa observacao,

aumentar o valor de max sectors kb reduz o numero de SCSI PDUs necessarios, o que

se traduz num aumento de performance.

3.6 RAID

Para garantir a redundancia dos dados a serem escritos no cluster Ceph, na maquina

CSG foi criado um array RAID do nıvel 1 (mirroring).

Foi utilizado o seguinte comando para a criacao do array RAID 1 /dev/md0, utilizando os

dispositivos /dev/sdd e /dev/sde, que representam dispositivos provenientes do cluster

Ceph:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdd /dev/sde

Durante os varios testes de integridade de dados que foram efectuados, houve necessidade

de simular diversas falhas, tanto de software como de hardware. Entre as falhas simuladas

e testadas encontra-se a de um dos dispositivos do array.

Esta simulacao passou por marcar um dos dispositivos como Faulty, para que nao fossem

escritos dados nesse dispositivo e o estado do RAID estivesse como Degraded. O comando

utilizado para foi o seguinte:

mdadm --manage --set-faulty /dev/md0 /dev/sde

Para verificar a integridade e igualdade dos dados nos dois dispositivos do array, foi

necessario o RAID e iniciar novos dispositivos RAID, cada um deles com um dos discos

Page 52: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 38

pertencentes ao array anteriormente parado. Para este procedimento utilizaram-se os

seguintes comandos:

mdadm --stop /dev/md0

mdadm --assemble /dev/md0 /dev/sdd

mdadm --assemble /dev/md1 /dev/sde

Os resultados dos testes efectuados podem ser consultados na seccao 4.2.3.

3.7 LUKS

A aplicacao de uma camada de encriptacao de dados sobre o espaco disponibilizado pelo

cluster Ceph era um dos pontos obrigatorios no projecto NASCloud.

Desta forma, os dados enviados para a Cloud ja estao cifrados e protegidos, o que

impossibilita que alguem alheio ou mal intencionado consiga visualizar o seu conteudo,

atraves de ataques do tipo ”man-in-the-middle”, conseguindo capturar os pacotes TCP

transmitidos entre o CSG e a Cloud.

Para este efeito, foi utilizado o software LUKS de modo a cifrar o dispositivo RAID 1

que foi criado no passo anterior (seccao 3.6).

A ideia inicial passava cifrar primeiro os dispositivos de blocos importados do Ceph para

o CSG e so entao criar o RAID 1 usando os dispositivos cifrados. O problema desta

abordagem seria a duplicacao de dispositivos cifrados: alem de criar uma maior carga de

trabalho para o SO para os processos de cifra dos dispositivos, iria-se estar a adicionar

mais um ponto crıtico de configuracao no projecto, sem necessidade para tal.

Nesse sentido, revelou-se preferıvel cifrar o dispositivo criado pelo RAID, pois alem de

reduzir os possıveis pontos crıticos, consegue-se a garantia de que o conteudo dos dois

dispositivos de blocos pertencentes ao array RAID sao exactamente iguais.

Os comandos utilizados para cifrar o dispositivo foram os seguintes:

• cryptsetup luksFormat /dev/md0: cifra o dispositivo de blocos /dev/md0. Foi

utilizada a cifra por omissao, aes-xts-plain64, por se considerar bastante segura, e

praticamente indecifravel [64]. A cifra AES utiliza um tamanho de bloco de 128

bits e o LUKS, para o tamanho da chave, usa 256 bits;

Page 53: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 39

• cryptsetup luksOpen /dev/md0 cloud space: mapeia o dispositivo cifrado an-

teriormente num novo dispositivo de nome ”cloud space”, que fica localizado no

directorio de sistema /dev/mapper/;

3.8 LVM

Escolheu-se usar o software LVM para melhor gerir o espaco a exportar desde o CSG

para os Clientes. Esta escolha deveu-se a facilidade com que e possıvel redimensionar o

espaco do dispositivo, sem que haja qualquer interrupcao no servico ou downtime.

Os comandos utilizados para implementar as funcionalidades do LVM foram os seguintes:

• pvcreate /dev/mapper/cloud space: Neste passo criou-se um PV, tendo por

base o dispositivo cifrado cloud space;

• vgcreate cloud volume /dev/mapper/cloud space: Criou-se um VG de nome

cloud volume, sobre o PV cloud space;

• lvcreate -L 200M -n user1 space cloud volume: Criou-se um LV, com o nome

user1 space, de tamanho 200 MB, sobre o VG cloud volume.

Este passo foi repetido varias vezes, de modo a criar os volumes a serem atribuıdos

aos varios Clientes;

A partir deste ponto, os LV a serem exportados por iSCSI para os Clientes estavam

criados. O passo seguinte foi adicionar os LV a lista dos iSCSI targets. Para isso foram

acrescentadas as seguintes linhas ao ficheiro /etc/tgt/targets.conf:

<t a r g e t i qn .2014−05.com . cgs : c g s u s e r 1 . t a r g e t>

d r i v e r i s c s i

back ing−s t o r e /dev / c l oud vo lume / u s e r 1 s p a c e

</t a r g e t>

<t a r g e t i qn .2014−05.com . cgs : c g s u s e r 2 . t a r g e t>

d r i v e r i s c s i

back ing−s t o r e /dev / c l oud vo lume / u s e r 2 s p a c e

</t a r g e t>

Page 54: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 3. DESENVOLVIMENTO 40

Para poder utilizar o dispositivo proveniente do CSG na maquina Cliente, e apos im-

porta-lo atraves de iSCSI foi necessario formata-lo, atraves do comando mkfs.ext4

/dev/sdX (onde /dev/sdX e o dispositivo importado), e monta-lo (tornando-o acessıvel)

numa pasta do sistema (mount /dev/sdX /mnt).

Page 55: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Capıtulo 4

Testes e Resultados

Este capıtulo e composto por duas seccoes, Testes de Velocidade e Teste de Integridade

de dados, onde estao descritos os testes que foram efectuados durante a composicao do

projecto NASCloud e comentados os respectivos resultados registados.

De modo a determinar a configuracao ideal do CSG, foram efectuados testes de veloci-

dade em varios cenarios possıveis. Esses cenarios sao o resultado da evolucao do projecto

ao longo do tempo. Os resultados desses testes estao descritos na seccao 4.1.

Na seccao 4.2 sao apresentados e descritos os testes de integridade de dados que foram

feitos. Sao explicados os passos e parametros seguidos durante este processo, e qual o

ponto em que se considera que a integridade dos dados e garantida.

4.1 Testes de Velocidade

Nesta seccao e feita uma descricao dos varios testes efectuados e um comparativo entre

os valores registados. Para estes testes foi utilizado o software de benchmarking FIO [18].

Foi tambem utilizado um script composto por dois processos: o primeiro para fazer um

warm-up da cache e o segundo para a execucao do benchmark, de onde foram retirados

os valores apresentados. Esse script pode ser consultado no apendice A.

A excepcao do Caso Base (seccao 4.1.1), em que o script de benchmark foi executado

cinco vezes, em todos os restantes cenarios o script foi executado tres vezes, e os

resultados apresentados sao uma media aritmetica simples do conjunto de resultados, isto

e, a soma dos resultados (de cada campo) a dividir pelo numero de testes efectuados.

41

Page 56: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 42

Importante lembrar que o objectivo projecto NASCloud, e a consequente construcao

da appliance e verificar se e possıvel utilizar todas as tecnologias mencionadas em

simultaneo, de maneira a que seja possıvel obter ganhos consideraveis de performance,

face a nao existencia da appliance. Por este motivo nao foi dada grande relevancia a

validacao estatıstica dos resultados registados.

De modo a calcular o ganho de um valor em relacao a outro foi utilizada a formula

abaixo indicada:

ganho = (valor maior

valor menor− 1)× 100 (4.1)

4.1.1 Caso Base

Os primeiros testes de todo o projecto foram executados numa maquina virtual utilizando

o SO Fedora Core 19 e quatro discos virtuais: tres discos SSD e um disco HDD mais

lento, quando comparado com os discos SSD. Os discos SSD tinham como funcao servir

de cache ao disco mais lento.

Importante referir que o espaco que compunha os discos virtuais SSD era fornecido por

um conjunto de discos SSD instalados num suporte rapido no servidor de maquinas

virtuais, o que so por si poderia modificar os resultados obtidos.

O teste inicial passou por medir a performance de um disco SSD, e compara-la com a

de um dispositivo RAID 0, composto pelos restantes discos SSD instalados, de modo

a existirem dados que ajudassem a decidir qual o cenario a utilizar. Nestes testes nao

foram notorias diferencas que justificassem a utilizacao de RAID 0 como dispositivo de

cache. Para alem do maior risco de seguranca dos dados armazenados, caso um dos

discos falhasse, as performances comparadas eram praticamente iguais.

Para se poder ter um termo de comparacao entre dispositivos, software e modos de cache,

foram feitos testes de benchmarking ao disco SSD, disco lento sem aceleracao (HDD),

disco lento com aceleracao Write back (WB) e Write through (WT), usando os softwares

BCache e EnhanceIO. Importa referir que estes testes foram executados cinco vezes, e

os resultados apresentados sao uma media do conjunto dos testes. Os resultados podem

ser consultados na imagem 4.1.

Pela analise dos resultados obtidos e apresentados nessa imagem e visıvel a diferenca

entre os discos SSD e HDD, tanto em velocidade de leitura e escrita, assim como

Page 57: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 43

2,58

71,98

11,72

1,30

3,92

47,14

13,57

1,51

3,11

33,95

18,19

2,02

2,37

18,38

27,97

3,11

8,91

27,64

10,53

1,17

1,92

2,18

57,24

6,36

0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75

Latência de leitura (ms)

Latência de escrita (ms)

Leitura (MB/s)

Escrita (MB/s)

Bcache Vs EnhanceIOWritethrough Vs Writeback

SSD HDD EnhanceIO Writeback Bcache Writeback EnhanceIO Writethrough Bcache Writethrough

Figura 4.1: Grafico comparativo caso base

nos tempos de latencia. Apos a aplicacao do software de cache Bcache e EnhanceIO,

obtiveram-se resultados muito melhores do que os registados pelo disco HDD, como seria

de esperar.

No modo WB, o Bcache tem um ganho de velocidade de cerca de 72% em leitura e escrita

quando comparado com o disco HDD. Ja com o EnhanceIO, obtem-se um aumento de

performance de 158% em velocidade de leitura, e de 165% em relacao a velocidade de

escrita.

Importante salientar a diferenca de performance entre os dois mecanismos de cache

local testados. No modo de cache WB, o EnhanceIO tem performances superiores ao

seu concorrente, em todos os testes efectuados. Tanto em velocidade de escrita como de

leitura, o EnhanceIO tem um ganho de aprox. 54%, em relacao ao BCache. Quanto aos

tempos de latencia medidos, em escrita o EnhanceIO e cerca de 45% mais rapido, e em

leitura de dados tem uma performance superior ao Bcache em cerca de 24%.

Ja no modo de cache WT, O EnhanceIO continua a ter melhores prestacoes que o Bcache,

mas de um modo geral, com resultados mais aproximados. A diferenca medida entre os

dois softwares de cache foi de cerca de 15%.

Page 58: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 44

4.1.2 [Ceph] → [CSG]

Neste cenario testou-se e comparou-se as performances da aceleracao de cache no CSG,

em relacao ao dispositivo exportado pelo cluster Ceph. A exportacao foi feita por iSCSI,

e os testes foram feitos sobre o bloco Ceph exportado, com e sem aceleracao (WB e WT).

Importa mencionar que a partir deste cenario descartou-se o uso do software BCache,

pelos seguintes motivos:

• Baixa performance comparativamente ao EnhanceIO (de acordo com os resultados

obtidos nos testes anteriores);

• Incompatibilidade com o Ceph. Os testes efectuados com o BCache, neste cenario,

apresentavam valores de leitura/escrita tremendamente baixos, ainda mais baixos

do que os registados no bloco Ceph, e com valores de latencia muito elevados;

Os resultados destes testes podem ser consultados na imagem 4.2. Os dados referem-

se aos testes efectuados nas maquinas virtuais. Estes testes de benchmarking foram

efectuados tres vezes, e os resultados apresentados sao a media do conjunto dos testes.

17,31

194,78

3,17

0,35

4,08

47,52

13,14

1,47

32,14

130,47

2,67

0,30

0 20 40 60 80 100 120 140 160 180 200

Latência de leitura (ms)

Latência de escrita (ms)

Leitura (MB/s)

Escrita (MB/s)

Bloco Ceph Vs Bloco Ceph+EnhanceIO WB/WT

Bloco Ceph Bloco Ceph+EnhanceIO Writeback Bloco Ceph+EnhanceIO Writethrough

Figura 4.2: Grafico comparativo Bloco Ceph vs Bloco Ceph+EnhanceIO WB/WT -

Virtual

Com base nos resultados obtidos, e possıvel verificar que o uso de cache permite obter

um grande aumento de performance em relacao ao bloco Ceph. Ao utilizar a aceleracao

Page 59: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 45

em WB conseguiu-se obter um aumento de performance de aprox. 390% em velocidade

de leitura/escrita. Ja em WT, os ganhos situam-se nos 18% em leitura e 16% em escrita.

Em relacao a latencia de leitura/escrita, pela analise dos graficos e possıvel verificar que

o uso de cache em WB reduz bastante os tempos, comparando quer com o bloco Ceph

sem aceleracao, quer com aceleracao em WT.

Estes mesmos testes foram efectuados num cenario identico mas com maquinas reais,

podendo os resultados ser consultados na imagem 4.3.

7,21

54,01

5,63

0,62

6,29

7,81

10,48

1,16

7,12

52,89

5,71

0,64

0 10 20 30 40 50 60

Latência de leitura (ms)

Latência de escrita (ms)

Leitura (MB/s)

Escrita (MB/s)

Bloco Ceph Vs Bloco Ceph+EnhanceIO WB/WT

Bloco Ceph Bloco Ceph+EnhanceIO Writeback Bloco Ceph+EnhanceIO Writethrough

Figura 4.3: Grafico comparativo Bloco Ceph vs Bloco Ceph+EnhanceIO WB/WT -

Real

Tal como demonstrado nas experiencias com maquinas virtuais, aqui o aceleracao em

WB tambem foi bastante superior. Tanto em relacao ao bloco Ceph importado, como

em relacao ao mesmo bloco mas com cache em WT, utilizar a cache em WB permitiu

obter ganhos na ordem dos 85%, nas velocidades de leitura/escrita.

Quanto aos valores de latencia medidos, em relacao a escrita, a cache em WB obteve

valores mais baixos do que os restantes, o que vai de encontro a um dos objectivos

pretendidos, que passava por definir qual o melhor modo de cache, WB ou WT.

Na imagem 4.4, e possıvel ver um comparativo entre os resultados virtuais e reais, para

este cenario.

Page 60: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 46

10,39

116,87

3,17

0,35

7,21

54,01

5,63

0,62

2,45

28,51

13,14

1,47

6,29

7,81

10,48

1,16

0 20 40 60 80 100 120

Latência de leitura (ms)

Latência de escrita (ms)

Leitura (MB/s)

Escrita (MB/s)

Comparativo Real vs VirtualBloco Ceph Vs Bloco Ceph+EIO WB/WT

REAL - Bloco Ceph+EIO WB VIRTUAL - Bloco Ceph+EIO WB REAL - Bloco Ceph+EIO WT VIRTUAL - Bloco Ceph+EIO WT

Figura 4.4: Grafico comparativo Bloco Ceph vs Bloco Ceph+EnhanceIO WB/WT -

Real vs Virtual

Comparando, dentro do mesmo cenario, os resultados das maquinas virtuais com os das

maquinas reais, de um modo geral os valores medidos foram relativamente proximos,

quando se fala sobre as velocidades de leitura/escrita. Os valores em WB nas maquinas

virtuais foram ligeiramente superiores que os das maquinas reais, se bem que em relacao

a velocidade de leitura, o numero apresentado (10,48 MB/s) esta no limite da velocidade

maxima permitida pela rede de 100mbps, o que pode levar a concluir que, fora esta

limitacao de velocidade existente no cenario real, este valor poderia ser mais elevado.

Quanto aos valores de latencia, os das maquinas reais foram mais baixos do que os das

maquinas virtuais.

Apesar de o hardware dos computadores reais ser sensivelmente mais fraco do que o

do Host das maquinas virtuais, inclusive a velocidade da rede utilizada (100Mbps vs

1Gbps), o facto da virtualizacao limitar o desempenho dos discos utilizados para os

testes fez com que os resultados ”virtuais” fossem mais baixos do que os esperados.

4.1.3 [Ceph] → [CSG] → [Cliente]

Este cenario representa a configuracao base do modelo que se pretende implementar.

O cluster Ceph, ao simular uma cloud, exporta via iSCSI o seu espaco para o CSG.

Este, por sua vez, acelera o acesso a este espaco via EnhanceIO que o disponibiliza, por

iSCSI, aos clientes. Os resultados apresentados foram todos medidos no Cliente, e sao o

Page 61: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 47

resultado da media de tres testes.

Ao espaco importado pelo Cliente chamou-se Bloco Cloud. Os resultados medidos estao

representados na imagem 4.5.

19,88

191,14

3,02

0,34

5,55

7,43

19,71

2,19

19,52

179,81

3,15

0,35

0 20 40 60 80 100 120 140 160 180 200

Latência de leitura (ms)

Latência de escrita (ms)

Leitura (MB/s)

Escrita (MB/s)

Bloco Cloud Vs Bloco Cloud+EnhanceIO WB/WT

Bloco Cloud Bloco Cloud+EnhanceIO Writeback Bloco Cloud+EnhanceIO Writethrough

Figura 4.5: Grafico comparativo Bloco Cloud vs Bloco Cloud+EnhanceIO WB/WT -

Virtual

Estes resultados confirmam a vantagem do uso de cache em WB, sobre o dispositivo

importado da Cloud. A aceleracao permitiu obter um ganho de cerca de 525% em relacao

ao original, sobre as velocidades de leitura/escrita. Isto traduziu-se num aumento de 0,35

MB/s para 2,19 MB/s em velocidade de escrita, e de 3,15 MB/s para 19,71 MB/s em

velocidade de leitura.

Comparando com os resultados das maquinas virtuais da seccao 4.1.2 e apesar de nesta

configuracao existir mais um elemento, o Cliente, seria expectavel que os valores medidos

fossem mais baixos. No entanto, tal nao se verificou. Isto porque, apesar de se ter

desactivado a cache que o protocolo iSCSI utiliza (como indicado na seccao 3.5.1), o

proprio SO tambem faz cache do que esta a ler/escrever [65], o que faz com que os dados,

quando sao acedidos novamente, sejam lidos da cache do sistema e nao directamento do

dispositivo, o que contribuiu para um ligeiro aumento das velocidades de leitura/escrita.

Page 62: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 48

4.1.4 [Ceph]→ [CSG+EIO WB+RAID1+LUKS+LVM]→ [CLIENTE]

Este cenario de teste representa a configuracao final de toda a estrutura ”NASCloud”.

Foram importados do cluster Ceph, via iSCSI, dois dispositivos de blocos para o CSG,

onde aqui foram acelerados pelo EnhanceIO, em modo WB. Posteriormente foi criado um

array RAID 1 com os dois dispositivos importados e ja acelerados (/dev/mdX), isto para

garantir redundancia dos dados, sendo depois implementada a camada de encriptacao

LUKS sobre esse array.

A partir deste ponto foi utilizado o LVM, devido a sua facilidade de gestao do espaco do

disco, para depois re-exportar os dispositivos via iSCSI, para os clientes. Do lado do cli-

ente, apos este ter importado o espaco disponibilizado pelo CSG, so lhe resta formatar o

dispositivo para o poder utilizar normalmente, como se de um disco/particao/dispositivo

local se tratasse. Um esquema desta configuracao esta retratado na figura 3.4.

Na figura 4.6 pode-se consultar os resultados dos testes de velocidade sobre este cenario,

feitos tanto nas maquinas virtuais como nas reais.

4,84

13,57

12,04

1,34

6,37

8,76

10,21

1,14

0 2 4 6 8 10 12 14

Latência de leitura (ms)

Latência de escrita (ms)

Leitura (MB/s)

Escrita (MB/s)

Comparativo Real vs VirtualBloco Cloud+EIO WB+RAID1+LUKS+LVM

REAL - Bloco Cloud+EIO WB+RAID1+LUKS+LVM VIRTUAL - Bloco Cloud+EIO WB+RAID1+LUKS+LVM

Figura 4.6: Grafico comparativo Bloco Cloud+EIO WB+RAID1+LUKS+LVM - Real

vs Virtual

E possıvel verificar que as velocidades de leitura e escrita registadas nas experiencias

efectuadas nas maquinas virtuais sao superiores do que as executadas nas maquinas

reais. A diferenca entre ambas ronda os 17%. Importante referir que em relacao as

velocidades de leitura registadas nas maquinas reais, estas estao no limite permitido

pela rede utilizada (100Mbps).

Page 63: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 49

Quanto aos valores de latencia registados, em relacao aos valores de escrita, as maquinas

virtuais apresentaram valores superiores em praticamente o dobro do que nas maquinas

reais (55%). Essa diferenca deve-se ao facto de, tal como ja referido na seccao 4.1.2, a

virtualizacao limitar o desempenho dos discos.

Em relacao ao tempo de latencia de leitura, o cenario virtual foi mais rapido do que o

cenario de testes real.

4.2 Testes de Integridade de dados

Nesta seccao serao descritas as conclusoes dos varios testes de integridade de dados

realizados. Estes testes tem como objectivo definir e estabelecer uma configuracao que

garanta fiabilidade e seguranca aos utilizadores deste sistema.

Para testar a integridade dos dados, de um modo geral, foram utilizados um conjunto de

ficheiros, composto por ficheiros de vıdeo, imagens, musicas, executaveis e ficheiros de

texto, verificados os checksums dos ficheiros originais e comparados com os checksums

dos ficheiros copiados. Se nao houve alteracao entre os checksums entao, para o cenario

testado, considera-se que existe a garantia de integridade dos dados.

Em todos os testes efectuados verificaram-se, sempre que possıvel, os checksums dos

ficheiros em duas localizacoes distintas na rede: no computador Cliente e no computador

CSG.

Na tabela 4.1 estao indicados os quatro estados possıveis do EnhanceIO: Active, Degra-

ded, Disabled e Failed, o que originam esses estados e de que forma e tratado o I/O, de

acordo com o estado da cache. A informacao apresentada nesta tabela e particularmente

util para se poder ter uma percepcao das conclusoes relativas aos testes de integridade.

Apesar de existirem cenarios em que a integridade dos dados e garantida (quando existe

um array RAID 1), ha sempre a possibilidade de tal facto nao ser verdade.

Esta situacao pode ocorrer quando falha em simultaneo algum elemento que esteja

directamente relacionado com ambos os dispositivos pertencentes ao RAID 1, como por

exemplo a ligacao iSCSI entre a cloud e o CSG de um dispositivo do RAID, e o disco

SSD que serve de cache para o outro elemento do RAID. Quando ocorre esta situacao

(falha em dois pontos do cenario) nao e possıvel garantir integridade dos dados.

Page 64: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 50

Tabela de estados da cache

Estado Descricao I/O

ActiveAmbos os dispositivos source e SSD estao pre-

sentes no sistema.I/O sao acelerados

Degraded

Disco SSD e removido do sistema (ex. falha

do disco), quando o estado da cache esta como

”Active”, e no modo Write Through.

I/O nao sao acelerados

Disabled

Quando o disco SSD nao esta presente durante

o boot do sistema. Este estado so e possıvel

quando a cache esta como Write Through.

I/O nao sao acelerados

Failed

O dispositivo source nao esta presente durante

o boot do sistema, ou quando este e removido do

sistema estado a cache como ”Active”. Falha do

disco SSD, quando em modo Write Back.

Falha e erros de I/O

Tabela 4.1: Tabela de Estados EnhanceIO

4.2.1 1o Cenario

Neste cenario foi testada a integridade dos dados referente ao esquema representado na

figura 3.2, apresentado no capıtulo 3.

Neste cenario, o dispositivo de bloco e importado, via iSCSI, do Cluster Ceph para o

CSG, onde aqui e acelerado pelo EnhanceIO, no modo WB. Esse mesmo bloco e entao

re-exportado para o Cliente, tambem via iSCSI.

• Cliente:

– Apos copiar ficheiros, os md5sums dos ficheiros copiados eram iguais aos dos

ficheiros originais;

• CSG:

– Apos desmontar o dispositivo iSCSI no Cliente, o dispositivo exportado foi

montado localmente, no CGS, e comparou-se os md5sums dos ficheiros pre-

sentes no dispositivo com os md5sums dos ficheiros originais, presentes no

Cliente. Verificou-se que eram identicos;

Page 65: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 51

– Esta experiencia permitiu verificar que a cache EnhanceIO, em WB, funcio-

nou correctamente, e nao houve erros relativos ao iSCSI.

Conclusao: Este cenario garante uma integridade dos dados.

4.2.2 2o Cenario

Para este cenario de testes, reproduziu-se o mesmo teste que o anterior, mas desta vez

simulou-se que o disco SSD, que funciona como cache ao EnhanceIO, falha. Este cenario

esta representado na figura 3.3. Simulou-se a falha do disco SSD em duas situacoes:

quando esta a copiar ficheiros, e depois de copiar, ao libertar a cache.

1. Quando esta a copiar ficheiros:

• Ao desligar o disco SSD (echo 1 >/sys/block/sda/device/delete), ocor-

reram de imediato erros de I/O no Cliente, originando falhas na copia dos

ficheiros;

• No CSG, o estado do EnhanceIO passou de ”Active” para ”Failed”;

• Ao existir falhas na copia dos ficheiros, torna-se obvio que os md5sums destes

sao diferentes dos originais;

• Nao e possıvel copiar conteudo para o dispositivo iSCSI, no Cliente (erros

I/O);

Conclusao: Este cenario NAO garante uma integridade dos dados.

2. Depois de copiar, durante o flush da cache:

• Cliente:

– md5sum dos ficheiros copiados sao iguais aos dos ficheiros originais;

– Apesar dos ficheiros, para o sistema , estarem correctamente copiados e

serem iguais aos originais, ao tentar aceder a alguns ficheiros ocorrem

erros de I/O;

– A outros ficheiros, com tamanho mais pequeno, ja e possıvel aceder sem

problemas nem erros;

– Este comportamento deve-se ao facto de alguns blocos ja terem sido

descarregados da cache para o dispositivo source, enquanto que outros

blocos nao, o que origina os erros de I/O;

Page 66: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 52

• CSG:

– dmesg | grep ssd → surgiram mensagens de erro I/O;

– dmesg | grep cache → surgiram mensagens a informar que a cache

EnhanceIO esta em modo ”Failed”, porque o disco SSD foi retirado/-

falhou;

– eio cli info → estado da cache passou para ”Failed”;

– cat /proc/enhanceio/cache ceph/errors→ a variavel no cache dev

ficou igual a 1.

O facto do valor desta variavel ser igual a 1 significa que nao existe

dispositivo de cache no sistema;

– Apos desmontar o dispositivo iSCSI no Cliente e desligar a ligacao iSCSI,

tentou-se montar o dispositivo exportado localmente, mas sem sucesso;

– Ao tentar recriar todo o cenario (iSCSI entre CSG e Cliente, e montar o

dispositivo no Cliente), ocorreram erros ao voltar a montar o dispositivo;

– So e possivel voltar a montar o dispositivo se:

∗ Se apagar a cache criada pelo EnhanceIO;

∗ Ao reiniciar o CSG, este voltar a detectar o disco SSD, ainda com a

cache para descarregar. Neste caso, o EnhanceIO volta ao seu estado

normal, e o flush da cache para o dispositivo de bloco proveniente do

Cluster Ceph tem inıcio;

Conclusao: Este cenario NAO garante uma integridade dos dados.

4.2.3 3o Cenario

O terceiro cenario de testes representa o esquema da figura 3.4. Neste esquema de

teste foram importados dois dispositivos de blocos para o CSG, via iSCSI, onde aqui

estes foram acelerados pelo EnhanceIO e colocados em RAID1, para replicarem o seu

conteudo. O dispositivo RAID foi depois exportado, via iSCSI, para o Cliente.

Mais uma vez, os testes e comparacoes foram feitas em dois pontos da rede: o Cliente e

o CSG. Foram testadas 3 situacoes: sem falhas nos dispositivos e ligacoes iSCSI, falha

de uma ligacao iSCSI entre o Cluster Ceph e CSG, e a falha do disco SSD na cache2.

Como neste cenario foram importados dois dispositivos de bloco para o CSG para serem

acelerados pelo EnhanceIO, existem duas caches configuradas, cache1 e cache2, que

dizem respeito a cache de cada dispositivo importado, que depois constituem o RAID 1.

Page 67: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 53

1. Sem falhas nos dispositivos e ligacoes iSCSI:

• Cliente:

– Apos copiar os ficheiros para o dispositivo importado por iSCSI, foram

verificados os md5sum dos ficheiros copiados contra os dos ficheiros ori-

ginais, e eram identicos;

• CSG:

– Desmontou-se o bloco iSCSI no Cliente, desconectou-se a ligacao iSCSI

entre o CGS e o Cliente, e montou-se o dispositivo RAID directamente

no CGS. Comparou-se os md5sum com os originais e eram identicos;

– Parou-se o RAID criado, montou-se cada disco do array individualmente,

atraves do comando mdadm (porque os dispositivos fazem parte de um

array), e comparou-se os seus conteudos um com o outro. Eram iguais,

o que significa que o RAID funcionou correctamente;

Importante referir que os estes testes foram feitos quer apos o flush da cache estar

concluıdo, quer durante o flush da cache.

Conclusao: Este cenario garante integridade dos dados.

2. Falha de uma ligacao iSCSI entre o Cluster Ceph e CSG:

A falha foi simulada quando o flush da cache estava a decorrer.

• Cliente:

– Apos a copia ser concluıda com sucesso, comparou-se os md5sums (Copia

Vs Original) e estes eram identicos;

• CSG:

– RAID 1 ficou no estado ”degraded”, pois faltou um dos discos do array ;

– No outro disco do array, a aceleracao EnhanceIO continuou a funcionar

correctamente, fazendo o flush da cache para o Ceph;

– O estado da aceleracao EnhanceIO, no dispositivo que deixou de existir,

passou para ”Failed”;

– Desmontou-se o bloco iSCSI no Cliente, desconectou-se a ligacao iSCSI

entre o CSG e o Cliente, e montou-se o dispositivo RAID previamente ex-

portado directamente no CSG. Comparou-se os md5sum com os originais

e eram identicos;

Page 68: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 4. TESTES E RESULTADOS 54

– Desligou-se o RAID 1, e montou-se o disco pertencente ao array num novo

RAID 1 (forcado para utilizar so um disco), e comparou-se os md5sums

dos ficheiros la existentes com os dos ficheiros originais. Eram identicos;

– Apos reconectar a ligacao iSCSI entre o Ceph e CSG, tentou-se refazer

o RAID 1 com o dispositivo reconectado, mas sem sucesso (de notar

que este dispositivo reconectado e o disco que foi retirado originalmente

do array). Mesmo que tal fosse possıvel, o conteudo do disco estaria

corrompido, isto porque o flush da cache que estava associada a esse

disco nao foi efectuado;

Conclusao: Este cenario garante integridade dos dados. O uso do RAID 1 permite

prevenir possıveis erros e problemas que possam surgir, desde que nao ocorra erros

na transmissao dos dados entre o Cliente e o CSG.

3. Falha do disco SSD na cache2:

Tal como na experiencia anterior, o disco falhou quando o flush da cache estava a

ocorrer.

• Cliente:

– Apos a copia ser concluıda com sucesso, compararam-se os md5sums

(copia Vs original) e estes eram identicos;

• CSG:

– Apos se ter desligado o disco SSD que servia de cache, associado ao

cache2, o estado do RAID 1 continuou como ”Clean”, isto porque os dois

discos pertencentes ao array continuavam ligados;

– Passado uns segundos, o RAID mudou o seu estado para ”Degraded”, e

o dispositivo que entretanto ficou sem cache, ficou marcado como Faulty.

Esta mudanca de estado do RAID aconteceu devido a erros de I/O que

ocorreram no dispositivo que ficou sem cache, fornecida pelo disco SSD

que falhou. Nesta situacao, o estado da cache EnhanceIO ficou marcado

como ”Failed”, o que implica que nao ocorra I/O nesse dispositivo;

– Desmontou-se o bloco iSCSI no Cliente, desconectou-se a ligacao iSCSI

entre o CSG e o Cliente, e montou-se o dispositivo RAID directamente

no CSG. Compararam-se os md5sum com os originais e eram identicos;

Conclusao: Este cenario garante integridade dos dados. Esta integridade e ga-

rantida pela redundancia do RAID 1.

Page 69: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Capıtulo 5

Conclusoes

O trabalho desenvolvido neste projecto seguiu varias etapas que foram previamente bem

definidas.

Comecou com um trabalho de pesquisa e investigacao sobre cache, quais os softwares

de cache local existentes e o seu funcionamento. De seguida, para ser possıvel retirar

conclusoes sobre qual o software de cache indicado para o projecto, exploraram-se varios

metodos e programas de benchmarking de performance a dispositivos de armazenamento.

O passo seguinte foi investigar o funcionamento do protocolo iSCSI. Durante o decorrer

do projecto houve necessidade de aprofundar a investigacao sobre este topico, para se

conseguir obter melhores performances do que as registadas no momento dos testes

iniciais.

Depois do trabalho anterior estar concluıdo, iniciou-se a instalacao e configuracao do

Cluster Ceph, que serviu para simular o armazenamento proveniente da Cloud. Depois

de seguir todo o guideline acima descrito, foi implementada a componente de resiliencia

do projecto, composta pelo RAID e pela camada de encriptacao, fornecida pelo LUKS.

5.1 Discussao de Resultados

Durante a instalacao e configuracao do CSG, chegou-se a conclusao de que as confi-

guracoes do software de cache utilizado influenciam as performances a serem obtidas e

medidas. Se, por exemplo, a polıtica de cache estiver definida como LRU, os dados mais

requisitados estarao presentes na cache local, pelo que o seu acesso sera quase imediato,

quando comparado com os restantes dados que estao na Cloud.

55

Page 70: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 5. CONCLUSOES 56

As configuracoes e definicoes aplicadas tambem dependem do tipo de dados a serem

tratados. Por exemplo, se a baixa latencia for um requisito obrigatorio, como em

consultas a base da dados, entao sera preferıvel aumentar a duracao de tempo em que

os dados ficam retidos na cache.

Tambem se concluiu que quanto maior for o tamanho do disco/particao que faz de cache,

melhor sera o desempenho, pois mais dados ficarao disponıveis para um acesso com maior

rapidez.

A componente de seguranca sempre foi um pensamento constante ao longo da execucao

do projecto, por isso tanto a integridade dos dados a serem escritos na Cloud, a forma

como eles sao transmitidos, e a encriptacao da informacao foi tida em conta.

Equacionou-se adicionar uma camada de encriptacao directamente ao protocolo iSCSI,

o que faria com que todos os pacotes a serem transmitidos entre a Cloud e o CSG

estivessem cifrados. Mas isso iria causar um problema no projecto, pois alem de causar

um maior over-head a todo o processo de transmissao e um maior tempo de latencia

(pois era necessario cifrar o pacote na origem, transmiti-lo, e no receptor decifra-lo), a

seguranca dos dados armazenados na Cloud nao era garantida. So durante o transporte

dos pacotes e que isso estava garantido.

Com a aplicacao da camada de encriptacao no momento em que os dados chegam ao

CSG, vindos dos computadores clientes que estao localizados na rede interna, ja se

consegue garantir que a informacao que depois vai ser guardada na Cloud esta cifrada.

O uso do LVM permitiu agilizar e simplificar a atribuicao e gestao do espaco disponıvel

no CSG, pois esta e feita de uma forma dinamica, permitindo facilmente redimensio-

nar a particao a ser atribuıda ao cliente, sem que haja necessidade de desligar algum

servico/computador, o que se traduz na inexistencia de down-time.

No cenario apresentado na figura 3.4 (que representa o setup final da appliance), existe o

risco de falhar simultaneamente a conexao iSCSI entre o CSG e a cloud de um elemento

do RAID e o dispositivo de cache do outro elemento do RAID montado. Nessa situacao,

como ja referido na seccao 4.2, nao e possıvel garantir que nao haja perda de dados. Uma

forma de prevenir este ponto podera ser aumentar o numero de elementos do RAID, o que

tambem implica estabelecer mais uma conexao a um Cloud Provider. Apesar de nesta

nova possıvel configuracao existir uma grande percentagem de desperdıcio de espaco de

armazenamento, tambem existe uma maior seguranca dos dados.

Page 71: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

CAPITULO 5. CONCLUSOES 57

5.2 Trabalho Futuro

Durante todo o projecto, o sistema operativo utilizado foi o Linux Fedora 19 e Fedora

20. Teoricamente, as performances serao iguais ou quanto muito semelhantes, mas testar

o desempenho geral desta appliance quando os computadores clientes sao maquinas de

outros sistemas operativos, como o Windows faz parte do trabalho futuro do projecto.

Nos cenarios reais, o facto de existirem limitacoes de velocidade impostas pela rede

(100Mbps), aliado com a performance do equipamento dos computadores, condicionou

os resultados registados. Faz parte do trabalho futuro do projecto repetir todas as

experiencias realizadas nos cenarios reais, mas num contexto de infraestrutura de rede

que esteja devidamente estruturada, segmentada e configurada para uma performance

adequada. Para o CSG, a possibilidade de agregar varias placas de rede de elevada

performance (trunking) tambem faz parte do trabalho futuro.

Com esta nova configuracao de rede e equipamento, as performances da appliance po-

derao melhorar drasticamente, quando comparadas com os valores registados durante as

experiencias realizadas.

O foco principal do projecto NASCloud e acelerar o armazenamento proveniente da

Cloud, mas com as devidas modificacoes [66] (tais como definir o tempo em que os

dados ficam na cache, ou os limites de espaco de armazenamento de dados na cache),

esta appliance pode ser utilizada para acelerar o acesso a qualquer tipo de dispositivo,

desde que a origem do espaco de armazenamento seja disponibilizado em blocos, tal

como acontece nos cenarios montados. Por exemplo, as performances de um servidor de

ficheiros local ou ate de um servidor de mail podem ser aumentadas significativamente

somente pelo uso de software de cache e respectivas polıticas adequadas a situacao.

O trabalho futuro deste projecto pode passar por definir varios perfis de configuracao,

adequados a multiplas hipoteses de cenario, de modo a criar ”black-boxes”, prontas a

serem usadas.

Outro ponto de trabalho futuro e a aplicacao da appliance num ambiente de producao

controlado, onde se podera retirar conclusoes mais realistas sobre a aplicabilidade do

projecto. Desse modo sera possıvel ”afinar” melhor as configuracoes que entretanto

foram aplicadas, de maneira a tirar melhor proveito de todos os conceitos explorados no

projecto.

Page 72: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Apendice A

Script FIO

#!/ b in / bash

# VARIAVEIS CACHE

s o u r c e d e v i c e=/dev/ sdb1

cache mode=wb # WB/WT

c a c h e b l o c k s i z e =4096

# VARIAVEIS FIO

f i o b l o c k s i z e=4K

f i l e s i z e =2G

iodep th=8

numjob=4

r r e a d=90

r w r i t e=10

runt ime=300

h i t s =90

# CRIAR A PASTA ONDE GUARDA OS OUTPUTS

outpu t pa th=”/ roo t / benchmarks / p e r f / e i o /${ cache mode} $ { r r e a d } r e a d $ { r w r i t e

} w r i t e $ { f i o b l o c k s i z e } I O 4K b l o c k s i z e $ { h i t s } h i t s ”

mkdir −p ${ ou tpu t pa th }

# WARM−UP DA CACHE

f i o −−d i r e c t=1 −−s i z e=50\% −− f i l e s i z e=${ f i l e s i z e } −−b l o c k s i z e=${f i o b l o c k s i z e } −− i o e n g i n e=l i b a i o −−rw=rw −−rwmixread=100 −−rwmixwr i t e=0

−−i o d ep th=${ i o d ep th } −−f i l e n ame=${ s o u r c e d e v i c e } −−name=${ h i t } H i t $ {f i o b l o c k s i z e } WarmUp −−output=${ ou tpu t pa th }/${ h i t } H i t $ {f i o b l o c k s i z e } WarmUp . t x t

# TESTE BENCHMARK

58

Page 73: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

APENDICE A. SCRIPT FIO 59

f i o −−d i r e c t=1 −−s i z e =100\% −− f i l e s i z e=${ f i l e s i z e } −−b l o c k s i z e=${f i o b l o c k s i z e } −− i o e n g i n e=l i b a i o −−rw=randrw −−rwmixread=${ r r e a d } −−rwmixwr i t e=${ r w r i t e } −−i o d ep th=${ i o d ep th } −−numjob=${numjob} −−g r o u p r e p o r t i n g −−f i l e n ame=${ s o u r c e d e v i c e } −−name=${ h i t } H i t $ {f i o b l o c k s i z e } −−r a n d om d i s t r i b u t i o n=z i p f : 1 . 2 −−output=${ ou tpu t pa th }/${ h i t } H i t $ { f i o b l o c k s i z e } . t x t

Page 74: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Apendice B

Script BCache

#!/ b in / bash

# CACHE

s o u r c e d e v i c e=”/dev/ sda ”

c a c h e d e v i c e=”/dev/vdb”

cache mode=”wb”

# ALTERAR CONFORME O NUMERO CRIADO

cache=bcache0

# CRIACAO DA CACHE

bc a c h e c r e a t e ( ) {make−bcache −B ${ s o u r c e d e v i c e } −C ${ c a c h e d e v i c e }i f [ $cache mode = ”wb” ] ; then

echo w r i t e ba ck > / s y s / b l o ck / $cache / bcache / cache mode

f i

i f [ $cache mode = ”wt ] ; then

echo w r i t e t h r o ugh > / s y s / b l o ck / $cache / bcache / cache mode

f i

# MELHORAR A PERFORMANCE DOS BENCHMARKINGS

echo 0 > / s y s / b l o ck / $cache / bcache / s e q u e n t i a l c u t o f f

echo 0 > / s y s / f s / bcache / $cache / c o n g e s t e d r e a d t h r e s h o l d u s

echo 0 > / s y s / f s / bcache / $cache / c o n g e s t e d w r i t e t h r e s h o l d u s

echo Cache c r i a d a !

}

# ELIMINACAO DA CACHE

bc a c h e d e l e t e ( ) {echo 1 > / s y s / b l o ck / bcache / $cache / s top

uu id=bcache−super−show −f ${ c a c h e d e v i c e } | grep c s e t . uu id | awk

’{ p r i n t $2 } ’

60

Page 75: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

APENDICE B. SCRIPT BCACHE 61

echo 1 > / s y s / f s / bcache / $uu id / u n r e g i s t e r

echo Cache e l im i n ad a !

}

# DESCOMENTAR O PRETENDIDO

#bca ch e c r e a t e

#b c a c h e d e l e t e

Page 76: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Apendice C

Script EnhanceIO

#!/ b in / bash

# CACHE

s o u r c e d e v i c e=”/dev/ sda ”

c a c h e d e v i c e=”/dev/vdb”

c a c h e p o l i c y=” l r u ”

cache mode=”wb”

c a c h e b l o c k s i z e=”4096”

cache name=” c a c h e e i o ”

# CRIACAO DA CACHE

e i o c r e a t e ( ) {e i o c l i c r e a t e −d ${ s o u r c e d e v i c e } −s ${ c a c h e d e v i c e } −p ${

c a c h e p o l i c y } −m ${ cache mode} −b ${ c a c h e b l o c k s i z e } −c ${cache name}

echo Cache c r i a d a !

}

# ELIMINACAO DA CACHE

e i o d e l e t e ( ) {e i o c l i d e l e t e −c ${ cache name}echo Cache e l im i n ad a !

}

# DESCOMENTAR O PRETENDIDO

#e i o c r e a t e

#e i o d e l e t e

62

Page 77: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

Referencias

[1] Cloud-related spending by businesses to triple from 2011

to 2017. http://press.ihs.com/press-release/design-supply-chain/

cloud-related-spending-businesses-triple-2011-2017. Consultado em Junho de

2014.

[2] Show me the gateway - taking storage to the cloud. http://gigaom.com/2010/06/22/

show-me-the-gateway-taking-storage-to-the-cloud. Consultado em Junho de 2014.

[3] Cloud provider. http://searchcloudprovider.techtarget.com/definition/

cloud-provider. Consultado em Maio de 2014.

[4] Cloud file storage pros and cons. http://searchstorage.techtarget.com/

Cloud-file-storage-pros-and-cons. Consultado em Junho de 2014.

[5] Buying a cloud storage gateway appliance. http://searchcloudstorage.techtarget.

com/feature/Buying-a-cloud-storage-gateway-appliance. Consultado em Junho de

2014.

[6] Cloud storage gateway. http://en.wikipedia.org/wiki/Cloud storage gateway. Con-

sultado em Maio de 2014.

[7] All-in-one cloud storage gateways. http://www.ctera.com/products/products/

cloud-storage-gateways. Consultado em Maio de 2014.

[8] Definition of Cache. http://searchstorage.techtarget.com/definition/cache. Consul-

tado em Abril de 2014.

[9] Definition of Write Back. http://whatis.techtarget.com/definition/write-back. Con-

sultado em Abril de 2014.

63

Page 78: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

REFERENCIAS 64

[10] Definition of Write Through. http://whatis.techtarget.com/definition/

write-through. Consultado em Abril de 2014.

[11] Advanced hard drive caching techniques. http://porky.linuxjournal.com:8080/LJ/

233/11481.html. Consultado em Marco de 2014.

[12] SSDs vs. Hard Drives vs. Hybrids: Which storage tech

is right for you? http://www.pcworld.com/article/2025402/

ssds-vs-hard-drives-vs-hybrids-which-storage-tech-is-right-for-you-.html.

Consultado em Abril de 2014.

[13] A Bcache update. http://lwn.net/Articles/497024. Consultado em Novembro de

2013.

[14] EnhanceIO SSD cache software technical overview.

https://www.yumpu.com/en/document/view/10896725/

enhanceiotm-ssd-cache-software-technical-overview-stec-inc. Consultado em

Maio de 2014.

[15] Bcache. http://bcache.evilpiepirate.org. Consultado em Novembro de 2013.

[16] EnhanceIO. https://github.com/stec-inc/EnhanceIO. Consultado em Novembro de

2013.

[17] Why sequential IO bypass feature removed in enhanceIO. https://github.com/

stec-inc/EnhanceIO/issues/55. Consultado em Novembro de 2013.

[18] FIO. http://freecode.com/projects/fio. Consultado em Novembro de 2013.

[19] FIO - flexible I/O tester synthetic benchmark. http://www.storagereview.com/fio

flexible i o tester synthetic benchmark. Consultado em Novembro de 2013.

[20] Bonnie++. http://www.coker.com.au/bonnie++. Consultado em Maio de 2014.

[21] Simple disk benchmarking in linux using ‘dd’. http://systembash.com/content/

simple-disk-benchmarking-in-linux-using-dd. Consultado em Maio de 2014.

[22] Ceph. http://ceph.com. Consultado em Marco de 2014.

[23] Ceph distributed network file system. http://archive.today/JrXgq. Consultado em

Abril de 2014.

Page 79: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

REFERENCIAS 65

[24] Ceph architecture. http://ceph.com/docs/master/architecture. Consultado em

Abril de 2014.

[25] POSIX (Portable Operating System Interface). http://searchenterpriselinux.

techtarget.com/definition/POSIX. Consultado em Maio de 2014.

[26] Intro to Ceph. http://ceph.com/docs/master/start/intro. Consultado em Abril de

2014.

[27] CRUSH (Controlled Replication Under Scalable Hashing). http://whatis.techtarget.

com/definition/CRUSH-Controlled-Replication-Under-Scalable-Hashing. Consul-

tado em Maio de 2014.

[28] Pulling apart Ceph’s CRUSH algorithm. http://www.anchor.com.au/blog/2013/

02/pulling-apart-cephs-crush-algorithm. Consultado em Maio de 2014.

[29] Ceph placement groups. http://ceph.com/docs/master/rados/operations/

placement-groups. Consultado em Maio de 2014.

[30] Official GlusterFS. https://www.gluster.org. Consultado em Marco de 2014.

[31] “Cloud storage for modern data center - an introduction to gluster architecture,”

2011.

[32] GlusterFS. http://en.wikipedia.org/wiki/GlusterFS. Consultado em Marco de 2014.

[33] LUKS. https://code.google.com/p/cryptsetup. Consultado em Maio de 2014.

[34] C. Fruhwirth, “Luks on-disk format specification,” 2011.

[35] C. Fruhwirth, “New methods in hard disk encryption,” 2005.

[36] dm-crypt/device encryption. https://wiki.archlinux.org/index.php/Dm-crypt/

Device encryption. Consultado em Junho de 2014.

[37] Linux kernel device mapper - dm-crypt. http://article.gmane.org/gmane.linux.

kernel.device-mapper.dm-crypt/7093. Consultado em Junho de 2014.

[38] dm-crypt: Linux kernel device-mapper crypto target. https://code.google.com/p/

cryptsetup/wiki/DMCrypt. Consultado em Maio de 2014.

[39] iSCSI: O que e e para que serve. Consultado em Junho de 2014.

Page 80: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

REFERENCIAS 66

[40] iSCSI (Internet Small Computer System Interface). http://searchstorage.techtarget.

com/definition/iSCSI. Consultado em Junho de 2014.

[41] What is file level storage vs. block level storage? http://www.iscsi.com/resources/

File-Level-Storage-vs-Block-Level-Storage.asp. Consultado em Junho de 2014.

[42] Bcache documentation). http://evilpiepirate.org/git/linux-bcache.git/tree/

Documentation/bcache.txt?h=bcache-dev#n126. Consultado em Novembro de

2013.

[43] GlusterFS: First impressions. http://liquidat.wordpress.com/2013/03/04/

glusterfs-first-impressions/. Consultado em Abril de 2014.

[44] GlusterFS iSCSI. http://www.gluster.org/community/documentation/index.php/

GlusterFS iSCSI. Consultado em Marco de 2014.

[45] Ceph storage - Next big thing. http://karan-mj.blogspot.pt/2013/12/

ceph-storage-part-2.html. Consultado em Marco de 2014.

[46] Repositorio Ceph extras. http://ceph.com/packages/ceph-extras/rpm/fedora19/

x86 64/scsi-target-utils-1.0.38-48.bf6981.ceph.fc19.x86 64.rpm. Consultado em

Marco de 2014.

[47] Ceph OSD config reference. https://ceph.com/docs/master/rados/configuration/

osd-config-ref. Consultado em Abril de 2014.

[48] Ceph and stgt. http://stuartl.longlandclan.yi.org/blog/2014/02/25/ceph-and-stgt.

Consultado em Maio de 2014.

[49] Adding support for rbd to stgt. https://ceph.com/dev-notes/

adding-support-for-rbd-to-stgt. Consultado em Maio de 2014.

[50] Disabling write cache. http://osdir.com/ml/linux.iscsi.tgt.devel/2008-06/

msg00022.html. Consultado em Maio de 2014.

[51] tgt-admin source code. https://github.com/fujita/tgt/blob/master/scripts/

tgt-admin. Consultado em Maio de 2014.

[52] CentOS 6 iSCSI tgtd target setup and performance adjustments. http://

www.dbarticles.com/centos-6-iscsi-tgtd-setup-and-performance-adjustments. Con-

sultado em Maio de 2014.

Page 81: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

REFERENCIAS 67

[53] How to optimize iSCSI performance. http://capitoshka.blogspot.com/2012/04/

how-to-optimize-iscsi-performance.html. Consultado em Maio de 2014.

[54] Data encapsulation, Protocol Data Units (PDUs) and Ser-

vice Data Units (SDUs). http://www.tcpipguide.com/free/t

DataEncapsulationProtocolDataUnitsPDUsandServiceDa-2.htm. Consultado

em Maio de 2014.

[55] Understanding the iSCSI protocol for performance tuning. http://utcc.utoronto.ca/

∼cks/space/blog/tech/UnderstandingiSCSIProtocol. Consultado em Maio de 2014.

[56] Maxoutstandingr2t iSCSI parameter and its influence on performance in case of high

latency links. http://scst.sourceforge.net/max outstanding r2t.txt. Consultado em

Maio de 2014.

[57] Ready to transfer (R2T) PDU. http://my.safaribooksonline.com/book/

operating-systems-and-server-administration/storage-systems/020178419x/

iscsi-function-pdus/app01lev1sec9. Consultado em Maio de 2014.

[58] iSCSI technical white paper. http://www.diskdrive.com/iSCSI/reading-room/

white-papers/Nishan iSCSI Technical White Paper.pdf. Consultado em Maio de

2014.

[59] iSCSI name structure. http://tools.ietf.org/html/rfc3720#section-3.2.6.3. Consul-

tado em Maio de 2014.

[60] Performance of read-write throughput with iSCSI. http://www.monperrus.net/

martin/performance+of+read-write+throughput+with+iscsi. Consultado em Maio

de 2014.

[61] I/O scheduling for SAN and virtualization. http://www.monperrus.net/martin/

IO+scheduling+for+san+and+virtualization. Consultado em Maio de 2014.

[62] Queue sysfs files. https://www.kernel.org/doc/Documentation/block/queue-sysfs.

txt. Consultado em Maio de 2014.

[63] Tunando a transferencia de dados com o nr request e o read ahead kb. http://

ubuntuforum-br.org/index.php/topic,87597.0.html. Consultado em Abril de 2014.

[64] How secure is AES against brute force attacks? http://www.eetimes.com/

document.asp?doc id=1279619. Consultado em Maio de 2014.

Page 82: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

REFERENCIAS 68

[65] Linux memory management – swapping, caches and shared vm. http://www.

thegeekstuff.com/2012/02/linux-memory-swap-cache-shared-vm. Consultado em

Maio de 2014.

[66] EnhanceIO. https://github.com/stec-inc/EnhanceIO/blob/master/README.txt.

Consultado em Maio de 2014.

Page 83: NASCloud SSD e cifra local para dispositivos de Storage na ... · SSD e cifra local para dispositivos de ... nidade de trabalho proporcionada, ... o acesso ao espa˘co de armazenamento

NASCloud – CachingSSD e cifra local para dispositivos de Storage na CloudMiguel José Costa Soá LoboDissertação de Mestrado apresentada à

Faculdade de Ciências da Universidade do Porto em

Ciência de Computadores

2014

NA

SC

lou

d–

Ca

ch

ing

SS

D e

cifra

loca

l para

dis

po

sitiv

os d

e S

tora

ge

na C

lou

dM

igu

el J

osé C

osta

So

áL

ob

oM

Sc

FCUP

2014

2.º

CICLO