DestaqueGuias

How-to: Sistema de ficheiros ZFS

Configuração ZFS


Devido à quantidade de discos e o os nomes crípticos com que eles ficam no Solaris, uma forma fácil de listar os discos é correndo o comando (não se assustem):

format


Depois de executado o comando, podemos fazer “ctrl+c” para sair.

Os discos c9xxxx são os discos que vou usar em Raid-Z2, mais um disco de spare. Os discos c8t0d0 e c8t1d0 para o ZIL e os discos c8t2d0 e c8t3d0 para o L2arc. O disco c7t0d0, é o disco de sistema. Com esta informação, já tem a informação que é necessário.


Antes de avançar, corro o comando:

zpool status

Para mostrar que só tenho uma pool configurada de ZFS, a de sistema e que só tem um disco.


Para criarmos a pool Raid-Z2 com os 6 discos alocados para o efeito, é preciso correr o comando:

zpool create zwame raidz2 c9t0d0 c9t1d0 c9t2d0 c9t3d0 c9t4d0 c9t5d0


Corremos o comando:

zpool status

E podemos ver que temos criada uma pool, com o nome zwame, com os 6 discos em Raid-z2 (dupla paridade) e já se encontra online, pronta a usar.


No entanto, vamos adicionar um sétimo disco em spare. Isto é, caso um dos outros avarie, este entra automaticamente online na pool. Para isso corremos o comando:

zpool add zwame spare c9t6d0

No fundo, estou a adicionar um disco ao volume, com ele online, o que é totalmente possível com ZFS. Retirar e adicionar discos com o volume online.


Voltamos a correr o comando:

zpool status

E podemos ver que temos na categoria “spares”, o disco que adicionei, já “Available”.


Em seguida, podemos ir à root do sistema de ficheiros, com o comando:

cd /

E podemos ver que se encontra uma pasta com o nome “zwame”, que é o volume que criamos. Podemos aceder a ele por:

cd /zwame

E verificar que estamos dentro do volume, com o comando:

pwd

Que nos mostra onde nos encontramos no sistema de ficheiros.


Em seguida, podemos activar a compressão, com o comando:

zfs set compression=on zwame

No entanto, com este comando, passando o parâmetro “on”, ficamos com o algoritmo de compressão por default, que é “lzjb” (lossless data compression algorithm). Existe também a possibilidade de comprimir em gzip, como vão ver a seguir.


Passando o comando:

zfs set compression=gzip-6 zwame

Passamos a ter compressão por “gzip” de nível 6. A escala funciona de 1 a 9, sendo que 1 é o que comprime menos e 9 o máximo possível. Claro que quanto mais alto for o nível de compressão, mais pesado é para o processador, mas menos espaço os ficheiros ocupam em disco. É um jogo de cintura.


Aqui fica um pormenor, que pode ajudar. O ZFS em volumes com redundância, está sempre à procura de erros de ficheiros e corrige-os automaticamente. No entanto, se quisermos forçar essa verificação, corremos o comando:

zpool scrub zwame

Em seguida, executamos:

zpool status

Onde podemos ver que o “scrub” não reparou qualquer ficheiro, porque também não havia qualquer ficheiro com erro.


Em seguida, vamos passar os logs de escrita do sistema de ficheiros, para dois discos à parte em Raid 1 (mirror). Isto seria bom para aumentar a performance, se estes dois discos fossem SSDs. Para isso executa-se o comando:

zpool add zwame log mirror c8t0d0 c8t1d0


Voltamos a correr o comando:

zpool status

Onde podemos verificar que foi criada uma nova entrada com o nome “logs” em “mirror-1”, com os discos que indicamos e já se encontram “online”.


Em seguida, vamos usar dois discos para L2ARC, que é uma cache de segundo nível. Isto é, o que é mais transaccionado, fica em memória RAM. O que não couber em memória RAM, fica em L2ARC, que como é óbvio, convém ser discos rápidos, como SSDs. Para tal, corremos o comando:

zpool add zwame cache c8t2d0 c8t3d0


Voltamos, mais uma vez, a correr o comando:

zpool status

Em que podemos ver uma entrada na pool, com o nome “cache” e com os dois discos que adicionamos.

Depois de termos configurado o básico do volume “zwame”, passamos a uma parte bastante interessante. Para acedermos por NFS ou SMB (que é este o caso, de partilha de ficheiros em Windows), não precisamos de instalar qualquer serviço. Por exemplo, no caso do SMB, não precisamos de instalar o “Samba”.

Passamos, primeiro, por correr o comando:

zfs set sharesmb=on zwame

Em windows, se fizermos no run:

\\ip do servidor zfs

Ou se formos à parte de “Network” e acedermos aos servidor, vemos a share “zwame”.
No entanto, se o servidor não estiver integrado na active directory ou num workgroup, não vamos conseguir aceder à share.


Se executarmos o comando:

sharemgr show -vp

Vemos todas as propriedades do share que criamos à pouco, em SMB e não temos nada em NFS.


Para termos acesso à share, com utilizadores locais do servidor, temos que editar o ficheiro “/etc/pam.conf”, com o comando.

nano /etc/pam.conf

Dentro de esse ficheiro, vamos quase até ao fim e adicionamos a seguinte linha:

other   password   required   pam_smb_passwd.so.1   nowarn

Carregar em “CTRL+X”, para sair e gravar o ficheiro.

Em seguida, temos que alterar ou colocar a mesma password, dos utilizadores que queremos que tenham acesso, com o comando:

passwd utilizador

E colocar a mesma ou outra password.

Depois o controlo de acessos à share pode ser feita com “ACLs” (Access Control Lists), no servidor.

Em seguida, podemos no windows aceder novamente à share, tentar aceder à pasta “zwame” e vai pedir autenticação. Colocar “ip do servidor zfs\root” no login e a password de “root” em “password”.

E aqui estamos via file share em windows, no volume ZFS que criamos.

Comecei a copiar algumas coisas, com aproximadamente 700MB e não liguem à velocidade, pois o servidor está a correr na mesma máquina, virtualizado, com RAID em dupla paridade e compressão. Isto “mata” qualquer máquina virtual, mesmo que as especificações da máquina física não sejam más.
Para não demorar tanto tempo, não cheguei a copiar os 700MB, mas sim, só por volta de 180MB em ficheiros.

Enquanto passavam os ficheiros, lembrei-me de uma dica que pode ser útil. O ARC, que coloca em memória os ficheiros mais transaccionados, usa toda a memória que houver disponível. No entanto, podemos ter outros processos importantes a correr na máquina e querer limitar o tamanho máximo do ARC.
No meu caso o servidor tem 1.5GB de RAM total e quero limitar o ARC a 1GB de RAM. Para tal, temos que editar o ficheiro “/etc/system”, com o comando:

nano /etc/system

No fim deste ficheiro, colocamos:

set zfs:zfs_arc_max=1048576

Este número representa 1GB em bytes.

Voltando ao Windows, mapeei a share e tenho um total de perto de 200GB, o que faz todo o sentido, pois os discos são 7, de 50 GB, mas perde-se 1 para “spare” e 2 para “paridade”, o que faz 4 X 50GB, que dá os tais 200GB.


Depois de copiar os ficheiros, no servidor, corri o comando:

ls -lh

Onde podem ver que o total do espaço em disco ocupado é de 170MB


Em Windows, na share mapeada na letra “Z:”, corri o comando:

dir

onde podem verificar que o tamanho fica perto dos 180MB, no total. A diferença está na compressão que é feita no servidor.

Em seguida passamos aos “snapshots”, que nos permite efectuar uma “imagem” do volume e se quisermos, voltar a repor, como um backup. Temos também os clones de snapshots, para via ZFS enviar o snapshot para outras máquinas.

Para criar um snapshot, executo o seguinte comando:

zfs snapshot zwame@snapshot-zwame

Neste comando, estamos a dizer para fazer um snapshot ao volume “zwame”, com o nome “snapshot-zwame”.

Como fiz o snapshot, no Windows, acedi de novo à share de rede e apaguei todos os ficheiros.

Para repor o backup (snapshot), executo o comando:

zfs rollback zwame@snapshot-zwame

Volto ao Windows, efectuo um “refresh” à share e tenho de volta todos os ficheiros que tinha lá, antes de os apagar.


Para clonarmos um snapshot, para, por exemplo, enviarmos para outra máquina, corremos o comando:

zfs clone zwame@snapshot-zwame zwame/clone

O que estamos aqui a dizer é que queremos criar um clone do snapshot, com o nome “clone” do snapshot “snapshot-zwame”.

Para apagarmos um “clone” ou um “snapshot”, basta correr o comando:

zfs destroy zwame/clone
Página anterior 1 2 3 4Página seguinte

Artigos Relacionados

Botão Voltar ao Topo