Por favor, habilite JavaScript para poder visualizar esta página corretamente.

Thin Provisioning em Storage com ZFS

Criado em 21/04/2020, por Hosco.

Sobre as Tecnologias

Thin Provisioning

Thin provisioning é um conceito relativo à alocação de dados, presente nos principais hypervisors e gerenciadores de volumes. Ele possibilita supra dimensionamento de espaço e alocação dinâmica de um disco virtual (até atingir sua capacidade pré estabelecida). Constam mais detalhes no artigo sobre overbooking de storage.

ZFS

ZFS é um poderoso sistema de arquivos e gestor de volumes lançado, em 2005, pela Sun Microsystems. Ele proporciona resiliência e alta disponibilidade, sendo muito usado em grandes storages e plataformas high-end (Oracle ZS3, ZS5, etc.). Diversos sistemas operacionais possuem suporte nativo a ZFS, como Solaris, FreeNAS e XigmaNAS. Mais informações podem ser encontradas na página sobre recuperação de dados em ZFS.

O objetivo deste documento é descrever e demonstrar o uso combinado dessas duas tecnologias.

Criando um Pool ZFS

Pool é composto de um ou mais dispositivos vdev. Nesse exemplo usamos os HDs /dev/hd5 /dev/hd6 /dev/hd7 /dev/hd8 e /dev/hd9 para criar o pool denominado ThinProv.

Zpool status

Para melhor ilustrar este artigo, foi escolhido um volume do tipo RAID-Z - que é muito usado em appliances (Oracle ZS3, ZS5, etc.) e servidores NAS (FreeNAS, dentre outros) com ambientes pré-configurados. A operação foi efetuada com o comando zpool create ThinProv raidz /dev/hd[5-9].

Cada um dos 5 discos rígidos utilizados nessa demonstração têm 1 terabyte de capacidade. Portanto o RAID criado abrange, aproximadamente, 4 terabytes.

Supra Capacidade

Nesse primeiro exemplo, foi provisionado dentro do pool ThinProv o volume thinvol. O comando executado nesse procedimento é zfs create -s -V 20TB ThinProv/thinvol. Deve-se reparar que a capacidade (20 TB) do volume recém criado excede, deliberadamente, o tamanho (4 TB) do pool a qual ele pertence.

Thin Provisioning + ZFS

A propriedade de criar um disco virtual acima da capacidade real dos seus dispositvos de armazenamento é atrativa, mas deve ser usada com devida cautela. Esse assunto é discutido com mais profundidade no artigo sobre overbooking de storage.

Após criação do volume é possível usar o comando zfs get para exibir as características do provisionamento. Na propriedade volsize observa-se capacidade muito além daquela disponível pelo conjunto de discos; em available aparece a capacidade real de armazenamento. A configuração de thin provisioning adicionou ao volume um potencial de armazenamento superestimado.

Alocação Dinâmica

Nesse segundo exemplo, foi provisionado outro dispositivo de bloco virtual, chamado thinvol2, com objetivo de apenas ilustrar a alocação progressiva de espaço.

O comando empregado nesse procedimento é zfs create -s -V [tamanho_do_volume] ThinProv/thinvol2, sendo que o tamanho indicado deverá ser menor ou igual ao tamanho do pool. Esse é um modelo comum em implementações de iSCSI para ambientes com ZFS.

Thin Provisioning e Alocação Dinâmica em ZFS

Logo quando um disco virtual convencional (thick provisioning) é criado, ele aloca 100% de seu tamanho em storage. Quando usamos thin provisioning, o espaço usado em storage só aumenta quando dados são inseridos no dispositivo virtual. Podemos reparar que o zvol thinvol2, usado como exemplo, tem capacidade de 100GB mas ocupa apenas 19,2K em disco.

Para entender melhor a alocação dinâmica é recomendado formatar o volume e inserir dados na partição. Assim, pode-se observar o aumento gradativo do disco virtual.

Recomendações Importantes

O uso de provisionamento não programado pode ocasionar danos em discos ou máquinas virtuais por exceder a capacidade real de armazenamento do ambiente. Os recursos de storage devem sempre atender, com folga, as demandas exigidas pelos ambientes de produção.

O ambiente deve conter equipamentos que permitem adequada escalabilidade de armazenamento. Devem ser usadas tecnologias de volumes (RAID MD, LVM, Bioctl, etc.) e sistemas de arquivos (ZFS, BTRFS, z/FS, etc.) que suportam adição online de drives, assim como expansão de particionamento em tempo real (Ext4, JFS, XFS, entre outros.).

Ambientes com informações críticas devem ter uma estrutura eficiente de backup e planos de data restore.

#thin #provisioning #zfs #storage #disco #virtual #hypervisor #dynamic #disk #vhdx