01 – Criando e excluindo volumes de discos ZFS, uma abordagem inicial ao ZPOOL

Bom, este é o começo da utilização do ZFS, saber criar os POOLs, ou seja, os grupos de discos (ou o disco) para abrigar os sistemas de arquivos ZFS. É meio complicado entender de cara isso, mas no decorrer deste primeiro artigo garanto que isso ficará claro.

Para o melhor entendimento, vamos simular uma situação comum de hoje. Possuímos 4 discos rígidos (Hds) de 750Gb cada, e desejamos criar um sistema RAID e tornar destes 4 discos um só volume possuindo a soma do espaço em disco dos 4. Neste nosso caso teríamos 4 x 750, que seria aproximadamente 3Tb de espaço em disco, legal isso né?

Para realizar este feito nos dias de hoje, sem utilizar ZFS, precisaríamos dos 4 discos (obvio), uma controladora RAID SATA ou SCSI (dependendo dos discos), uma regra para criação do volume de 3Tb, o particionamento do volume de 3Tb e a formatação do mesmo. Trabalhoso e demorado isso não? Poise, com o ZFS a coisa é um pouco diferente, pois o mesmo cria o POOL e automaticamente torna o volume total de 3Tb como um sistema de arquivos ZFS. Isso mesmo, não precisamos particionar, nem formatar, montar, etc, basta criar o POOL ZFS com a ferramenta baseada em linha de comando ZPOOL. Para satisfazer nossa situação, passarei os comandos abaixo, tendo como discos 4 arquivos previamente criados em nosso Linux (pra que ter 4 Discos de 750Gb se podemos aprender sem gastar nada =D ), onde cada arquivo possuirá 750Mb (imagine Gb, hehe).Vamos a criação dos arquivos:

Crie um diretório no seu HD para criar os arquivos, vou usar /dsk como exemplo OK?

[root@localhost /]# mkdir /dsk

[root@localhost /]# dd if=/dev/zero of=/dsk/disco1 bs=1M count=750

[root@localhost /]# dd if=/dev/zero of=/dsk/disco2 bs=1M count=750

[root@localhost /]# dd if=/dev/zero of=/dsk/disco3 bs=1M count=750

[root@localhost /]# dd if=/dev/zero of=/dsk/disco4 bs=1M count=750

Feito isso, já teremos nossos discos e então vamos à criação do POOL ZFS..!

[root@localhost /]# zpool create CIALINUX /dsk/disco{1,2,3,4}

Ao conferir “o estrago feito”, podemos ver que temos um volume denominado CIALINUX, montado automaticamente em nosso diretório raiz, na pasta CIALINUX ( /CIALINUX ).

[root@localhost /]# df -h |grep CIALINUX

CIALINUX 2,9G 18K 2,9G 1% /CIALINUX

A ferramenta ZPOOL é bem simples de se utilizar, e bem intuitiva, e logo podemos compreender que o comando segue a sintaxe:

zpool [ação] [pool] [argumentos] ou em alguns casos zpool [ação] [pool]


Continuando em nosso mais novo POOL, vale salientar que este volume de discos não possui nenhum recurso de ganho de desempenho ou segurança nos dados, pois nada mais é que a união de 4 discos formando um único volume, onde o I/O e escrita nos discos é conforme disponibilidade (o que tiver sem requisição de I/O é escrito/lido). Este método é muito semelhante ao método JBOD³ de concatenação de discos, realizado em algumas situações de “RAID” via software ou hardware. Bom, temos um volume de discos totalizando 2,91Gb (em nosso sonho seria Tb 🙂 ), e basta utilizá-lo através do ponto de montagem /CIALINUX, realizando alguns testes de escrita de dados para validarmos a funcionalidade da ferramenta ZPOOL para monitorar-mos a utilização do espaço em disco, disponibilidade do grupo de discos, enfim, ter um parecer de nosso “filhote”. Para estes fins, devemos utilizar as opções list, status ou status -x, onde:

list Lista de forma clara os POOLs de discos existentes, informando como saída padrão informações, tais como o nome, tamanho total, espaço usado, espaço disponível e raiz alternativa para o POOL se existir. Segue um exemplo:


[root@localhost /]# zpool list

NAME SIZE USED AVAIL CAP HEALTH ALTROOT

CIALINUX 2,91G 76,5K 2,91G 0% ONLINE –

status Lista de forma mais detalhada informações sobre um POOL em específico, dando noção do estado “de vida” do conjunto de discos, os discos utilizados, se há erros de check-sum em arquivos, etc. Exemplo:


[root@localhost /]# zpool status

pool: CIALINUX

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

CIALINUX ONLINE 0 0 0

/dsk/disco1 ONLINE 0 0 0

/dsk/disco2 ONLINE 0 0 0

/dsk/disco3 ONLINE 0 0 0

/dsk/disco4 ONLINE 0 0 0

errors: No known data errors

status -x Lista de forma realmente básica a situação de vida de um POOL, informando somente se o mesmo está ativo, funcional, etc. Exemplo:


[root@localhost /]# zpool status -x

all pools are healthy

Para eliminarmos (destruir) um POOL e todo o seu conteúdo, o comando é ainda mais excitante 🙂 :

[root@localhost /]# zpool destroy CIALINUX

Pronto, o POOL de discos e seus respectivos dados foram para o espaço. Não se alarmem, mais adiante será mostrado como recuperar POOLs de discos e seus dados em caso de um destroy acidental, afinal, um comando destrutivo destes não pode ser tão precário assim…

Este é o funcionamento básico da ferramenta ZPOOL, que possibilita de forma rápida e fácil criar, destruir e monitorar os grupos de discos denominados POOLs. Abaixo, podemos conferir um vídeo criado especialmente para complementar o conteúdo acima, e ver a coisa realmente funcionando.

<iframe width=”560″ height=”315″ src=”https://www.youtube.com/embed/Tof7MAhBt8k” frameborder=”0″ allowfullscreen></iframe>

Nos próximos posts, a coisa vai começar a ficar ainda melhor…  =D

Abraços e até a próxima.

Por: Franklin Moretti

6 thoughts on “01 – Criando e excluindo volumes de discos ZFS, uma abordagem inicial ao ZPOOL

  1. Discordo do ZFS ser igual a um JBOD. é um sistema muito superior pois utiliza Dynamic striping para dividir os blocos em todos os vdevs, assim consegue atingir a maior performance de transferência de I/O , e também balanceia a carga de gravação entre todos os vdevs.
    ele utiliza o método de gravação nos vdevs chamado Copy-on-write que é evolução do método de gravação utilizado no sistema RAID5 assim eliminando o bug chamado buraco de gravação que existe no raid5.

    mais informações.
    http://en.wikipedia.org/wiki/ZFS

    o JBOD consiste em juntar os discos e ir gravando neles de forma linear, ou seja enchendo 1 depois o outro e depois o outro.

    mais informações sobre JBOD
    http://en.wikipedia.org/wiki/JBOD#Concatenation_.28SPAN.29

    1. Olá William, muito obrigado por contribuir comentando nosso artigo. Entendi perfeitamente suas colocações e concordo plenamente, porém, citei o JBOD apenas como referência para entender que no artigo não utilizei nenhum recurso de desempenho extra ou segurança, pois não fiz uso do método RAIDZ e MIRROR, compreende? os método de RAIDZ e MIRROR mostrarei nos artigos futuros. Em resumo a idéia é que sem a especificação do método de RAIDZ ou MIRROR é apenas a união de discos. Caso eu esteja errado, por favor me corrija, pois estou contribuindo enquanto ainda estou apresendendo.

      Conto com você para nos ajudar sempre…

      Abraços..

  2. MIRROR é RAID 1 ( espelhamento )
    utiliza a técnica de gravação copy-onw-rite para melhorar a performance de gravação no disco basicamente 2 Discos = 1 Disco.

    RAIDz é o famoso RAID5 ( N-1 )
    Utilizando a tecnologia copy-on-write que elimina o bug do write hole que existe no RAID5.

    RAIDz2 é o RAID6 ( N-2 )
    Utiliza 2 discos de paridade. ideal para Zpool com mais de 10 Discos.

    Acredito que você ira falar sobre os hot-spare futuramente em um outro post deixo este comentário para o post

  3. Olá Franklin! Parabéns pelo post, ficou nota 10!

    Você vai divulgar mais artigos sobre ZFS? Tenho tido um pouco de dificuldades para encontrar artigos e tutoriais PRÁTICOS sobre o uso do ZFS. Veja se pode me ajudar!

    Tenho um servidor com 3 HDs. Um dos HDs está instalado o Freebsd8 e todas as aplicações necessárias. Os outros dois HDs encontram-se vazios. Eu pensei em fazer um RAID-1 (espelhamento) com esses dois HDs vazios e usar para armazenar alguns documentos específicos, afim de garantir que, caso um HD queimar esses arquivos estarão 100% íntegros e disponíveis, sem interrupção. Dei uma olhada em RAID-Z e em ZFS e pensei em utiliza-los para isso. Tem aguma sugestão? Conhece algum tutorial que explique como fazer isso?

    Tenho outra dúvida também. Eu gostei do fato de poder gerar snapshots usando o ZFS. Como isso funciona? Onde ele armazena esse snapshot? Como faço para gerar? E para recuperar? E para listar?

    Espero que possa me ajudar com seus conhecimentos! Um abraço!

    Paulo

Leave a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *