Como ativar a compactação do ZFS

Como ativar a compactação do ZFS
O recurso de compactação do sistema de arquivos comprime os arquivos armazenados no sistema de arquivos automaticamente para salvar o precioso espaço em disco do seu dispositivo de armazenamento.

Como muitos outros sistemas de arquivos, o sistema de arquivos ZFS também suporta compactação no nível do sistema de arquivos.

Os benefícios da compactação do sistema de arquivos ZFS são:

i) salva espaços de disco: Como mencionei, quando a compactação do ZFS é ativada, os arquivos que você armazena no seu pool/sistema de arquivos ZFS são compactados para salvar o espaço do disco.

ii) reduz o tempo de acesso ao arquivo: Os processadores hoje em dia são muito rápidos. Eles podem descomprimir arquivos em tempo real. Portanto, leva menos tempo para descomprimir um arquivo do que recuperá -lo de um dispositivo de armazenamento (i.e., disco rígido). Como os arquivos compactados tomam menos área de armazenamento, eles podem ser recuperados mais rapidamente do dispositivo de armazenamento (i.e., disco rígido) do que arquivos não compactados e pode ser descomprimido em tempo real. No geral, isso reduz o tempo de acesso ao arquivo e melhora o desempenho do sistema de arquivos.

Este artigo mostrará como ativar a compactação no seu pool ZFS e sistemas de arquivos. Também mostrarei como funciona a compactação local e herdada do pool ZFS e os sistemas de arquivos. Então vamos começar.

Criando um pool ZFS:

Para experimentar a compactação do ZFS, você deve criar um pool de teste ZFS Pool1 com dois dispositivos de armazenamento em uma configuração espelhada.

Este artigo usará o vdb e VDC Dispositivos de armazenamento para criar um VDEV (dispositivo virtual) em configuração espelhada e usá -lo para criar um pool Pool1.

$ sudo lsblk -e7

Para criar uma nova piscina Pool1 usando o vdb e VDC Dispositivos de armazenamento em uma configuração espelhada, execute o seguinte comando:

$ sudo zpool create -f pool1 espelho /dev /vdb /dev /vdc

Uma nova piscina do ZFS Pool1 deve ser criado usando o vdb e VDC Dispositivos de armazenamento em uma configuração espelhada, como mostrado na captura de tela abaixo.

$ sudo zpool status pool1

Criando sistemas de arquivos ZFS:

Para testar a compactação local e herdada, você também precisa criar alguns sistemas de arquivos ZFS no seu pool ZFS Pool1.

Quando você cria um pool ZFS, o ZFS cria um sistema de arquivos com o mesmo nome que o nome do pool e o monta automaticamente no diretório raiz do seu computador (/). O ponto de montagem terá o mesmo nome que o nome da piscina.

Por exemplo, o pool ZFS Pool1 que você criou anteriormente criará automaticamente um sistema de arquivos ZFS Pool1 e monte -o no /pool1 Diretório do seu computador, como você pode ver na captura de tela abaixo.

Lista de $ sudo zfs

OBSERVAÇÃO: Vou chamar o sistema de arquivos de nível superior Pool1 da piscina Pool1 um pool de ZFS neste artigo. Você está livre para chamá -lo de pool ou sistema de arquivos. Está tudo bem.

Para criar um novo sistema de arquivos ZFS fs1 Na piscina Pool1, Execute o seguinte comando:

$ sudo zfs crie pool1/fs1

Como você pode ver, um novo sistema de arquivos ZFS Pool1/FS1 é criado e é montado no /pool1/fs1 diretório.

Lista de $ sudo zfs

Você pode criar um sistema de arquivos FS2 no fs1 sistema de arquivos, que está no pool Pool1 do seguinte modo:

$ sudo zfs crie pool1/fs1/fs2

Como você pode ver, o sistema de arquivos FS2 está aninhado dentro do sistema de arquivos Pool1/FS1.

Lista de $ sudo zfs

Crie outro sistema de arquivos fs3 Na piscina Pool1 do seguinte modo:

$ sudo zfs crie pool1/fs3

Um sistema de arquivos fs3 deve ser criado na piscina Pool1, Como você pode ver na captura de tela abaixo.

Lista de $ sudo zfs

Os sistemas de arquivos fs1, FS2, e fs3 deve criar a seguinte estrutura de diretório na piscina Pool1:

$ árvore /pool1

Os sistemas de arquivos ZFS são como diretórios que você cria em qualquer outro sistema de arquivos. Eles podem ser aninhados um no outro. Geralmente, eles são montados no ponto de montagem da piscina (eu.e.,/pool1 para a piscina Pool1). Você pode configurar o ZFS para montá -los em qualquer lugar do seu computador como qualquer outro sistema de arquivos. Este é um tópico para outro artigo.

Agora, você deve ter um entendimento básico de como os sistemas de arquivos são aninhados um no outro em ZFS. Isso é o suficiente para entender a compressão local e herdada do ZFS nas próximas seções deste artigo.

Ativando a compactação nos pools do ZFS:

Se você ativar a compactação em um pool ZFS, a compactação também será ativada em todos os sistemas de arquivos desse pool ZFS.

Você pode descobrir se a compactação está ativada no seu pool ZFS Pool1 com o seguinte comando:

$ sudo zfs get wool pool1

A compactação não está ativada nos pools do ZFS por padrão, como você pode ver na captura de tela abaixo.

Da mesma maneira, você pode verificar se a compactação está ativada no fs1, FS2, e fs3 sistemas de arquivos. A compactação não está ativada nos sistemas de arquivos ZFS por padrão também.

$ sudo zfs obtive compressão pool1/fs1
$ sudo zfs get compressão pool1/fs1/fs2
$ sudo zfs obtive compressão pool1/fs3

Você pode ativar a compressão na piscina Pool1 Definindo o compressão propriedade da piscina para sobre do seguinte modo:

$ sudo zfs set compact = on pool1

Como você pode ver, compressão está ativado (sobre), e é um local propriedade da piscina Pool1.

OBSERVAÇÃO: Se uma propriedade for local, Isso significa que a propriedade está diretamente definida no pool ou sistema de arquivos. Não é herdado de seus pais (pool ou sistema de arquivos).

$ sudo zfs get wool pool1

Agora, se você verificar o compressão propriedade do fs1, FS2, e fs3 sistemas de arquivos, você deve ver que a compactação está ativada (sobre) em todos eles, e a propriedade é herdado do pool1.

Como você não definiu o compressão propriedade para o fs1, FS2, e fs3 sistemas de arquivos, é herdado da piscina Pool1.

$ sudo zfs obtive compressão pool1/fs1
$ sudo zfs get compressão pool1/fs1/fs2
$ sudo zfs obtive compressão pool1/fs3

Você pode desativar compressão apenas para o fs1 sistema de arquivos definindo o compressão propriedade do fs1 sistema de arquivos para desligado do seguinte modo:

$ sudo zfs set compact = off pool1/fs1

Como você pode ver, compressão está desabilitado (desligado) para o fs1 sistema de arquivo. Agora que o compressão A propriedade é definida localmente para o fs1 sistema de arquivo. Não vai ser herdado da piscina Pool1.

$ sudo zfs obtive compressão pool1/fs1

O FS2 sistema de arquivos é um filho do fs1 sistema de arquivo. Então, herdou o compressão propriedade do fs1 sistema de arquivos (pai), como você pode ver na captura de tela abaixo.

$ sudo zfs get compressão pool1/fs1/fs2

Como você ativou a compactação na piscina Pool1, A propriedade é herdada automaticamente por todos os sistemas de arquivos aninhados (criança - fs1, FS2, e fs3) da piscina Pool1 (o pai). É assim que as propriedades são herdadas nos sistemas de arquivos ZFS - os sistemas de arquivos infantis obtêm suas propriedades dos sistemas de arquivos ou pool de arquivos parental, a menos que você defina explicitamente propriedades específicas para o sistema de arquivos infantis.

Se você enlouquecer com os sistemas de arquivos ZFS Nesting sem nenhum planejamento anterior, pode ser muito difícil para você gerenciar a compactação no seu pool ZFS. Então, não enlouqueça com os sistemas de arquivos ZFS Nesting.

Ativando a compactação nos sistemas de arquivos ZFS:

Você também pode ativar a compactação em sistemas de arquivos ZFS específicos. Vamos ativar a compactação no fs3 Sistema de arquivos ZFS que você criou anteriormente.

Neste ponto, a compressão está ativada para o fs3 Sistema de arquivos ZFS porque a compactação está ativada no pool Pool1, Como você pode ver na captura de tela abaixo.

A propriedade de compressão para o fs3 O sistema de arquivos é herdado do pool Pool1.

$ sudo zfs obtive compressão pool1/fs3

Se você desativar a compressão na piscina Pool1, A compactação também será desativada para o sistema de arquivos ZFS fs3.

$ sudo zfs set compact = off pool1

Como você pode ver, compressão também está desativado (desligado) para o sistema de arquivos fs3 como herdou da piscina Pool1. Se você ativar a compactação para o fs3 sistema de arquivos localmente, então isso não vai acontecer.

$ sudo zfs obtive compressão pool1/fs3

Para ativar a compactação para o fs3 sistema de arquivos, defina a propriedade de compressão do fs3 sistema de arquivos para sobre do seguinte modo:

$ sudo zfs set compact = on pool1/fs3

Como você pode ver, compressão está ativado (sobre) para o fs3 sistema de arquivos localmente.

Se você quiser, você pode desativar compressão para o fs3 sistema de arquivos da seguinte forma:

$ sudo zfs set compact = off pool1/fs3

A compressão deve ser desativada para o fs3 sistema de arquivos, como você pode ver na captura de tela abaixo.

$ sudo zfs obtive compressão pool1/fs3

Verificando como os dados estão sendo compactados:

Depois de ativar a compactação no seu pool ZFS ou sistema de arquivos, você deve saber quão bem os dados armazenados no pool ZFS ou no sistema de arquivos são compactados. Nesta seção, mostrarei como fazer isso.

Vamos destruir o pool zfs pool1 que você acabou de criar e recriá -lo para tornar as coisas um pouco mais simples.

Para destruir a piscina do ZFS Pool1, Execute o seguinte comando:

$ sudo zpool destruir pool1

Agora, crie o pool ZFS Pool1 novamente usando o vdb e VDC Dispositivos de armazenamento na configuração do espelho da seguinte forma:

$ sudo zpool create -f pool1 espelho /dev /vdb /dev /vdc

Ativar compressão na piscina Pool1 do seguinte modo:

$ sudo zfs set compact = on pool1

A compressão deve ser ativada para o pool ZFS Pool1.

$ sudo zfs get wool pool1

Você pode ver a taxa de compressão do pool ZFS Pool1 com o seguinte comando:

$ sudo zfs obter compressratio pool1

Agora, a piscina Pool1 está vazia. Então, a taxa de compressão é 1.00x. Isso significa que nenhum dado foi comprimido ainda.

Como você pode ver, apenas 108 KB de dados é usado no pool Pool1.

Lista de $ sudo zfs

Vamos copiar o /etc Diretório para o pool ZFS Pool1.

$ sudo cp -r/ etc/ pool1/

Como você pode ver, o /etc O diretório é copiado para o pool ZFS Pool1.

$ ls /pool1

Observe que o tamanho do /etc diretório na piscina é 4.2 MB1. Se apenas 3.26 MB2 de espaço é usado da piscina Pool1.

$ sudo du -sh /pool1
Lista de $ sudo zfs

Na realidade, o /etc diretório é 11 MB em tamanho, como você pode ver na captura de tela abaixo.

$ sudo du -sh /etc

A taxa de compressão é sobre 1.93x. É uma taxa de compressão muito boa. Quanto maior a taxa de compressão, mais espaço de disco você economizará com a compactação ZFS.

$ sudo zfs obter compressratio pool1

Algoritmos de compressão suportados pelo ZFS:

No momento da redação deste artigo, o ZFS suporta os seguintes algoritmos de compactação de dados:

i) lzjb: Este algoritmo é otimizado para desempenho. Ele também fornece uma taxa de compressão de dados decente.

ii) LZ4: Este algoritmo é um substituto para o lzjb algoritmo. Fornece compressão e descompressão mais rápidas. A taxa de compressão é moderadamente maior que a lzjb algoritmo.

iii) gzip: Usa o mesmo algoritmo de compressão que o gzip comando. O gzip O algoritmo de compressão suporta diferentes níveis de compressão. O nível de compressão pode ser 1-9. Você pode usar gzip-n (N é o nível) para definir um nível para o gzip Algoritmo de compressão. Se você não especificar um nível para o gzip Algoritmo de compressão, o ZFS usa o nível 6 (GZIP-6) por padrão.

gzip-1: Nível 1 Gzip - Taxa de compressão mais rápida, mas mais baixa.

GZIP-2: Nível 2 Gzip - mais lento que o nível 1, mas maior taxa de compressão que o nível 1.

GZIP-3: Nível 3 Gzip - mais lento que o nível 2, mas maior taxa de compressão que o nível 2.

GZIP-4: Nível 4 Gzip - mais lento que o nível 3, mas maior taxa de compressão que o nível 3.

GZIP-5: Nível 5 Gzip - mais lento que o nível 4, mas maior taxa de compressão que o nível 4.

GZIP-6: Nível 6 gzip - mais lento que o nível 5, mas maior taxa de compressão que o nível 5.

GZIP-7: Nível 7 Gzip - mais lento que o nível 6, mas maior taxa de compressão que o nível 6.

GZIP-8: Nível 8 Gzip - mais lento que o nível 7, mas maior taxa de compressão que o nível 7.

GZIP-9: Nível 9 GZIP - Taxa de compressão mais lenta, mas mais alta.

iv) Zle: Este algoritmo é otimizado para comprimir corridas de zeros.

lzjb é o algoritmo de compactação de dados padrão do sistema de arquivos ZFS.

Se você tem o lz4_compress Recurso ativado no seu pool ZFS, então o algoritmo de compactação de dados padrão será LZ4.

Para verificar se o lz4_compress O recurso está ativado no seu pool ZFS Pool1, Execute o seguinte comando:

$ sudo zpool Get Feature@lz4_compress pool1

Como você pode ver, o lz4_compress O recurso está ativado no pool ZFS Pool1.

Você pode definir um algoritmo de compactação diferente no seu pool ZFS ou sistema de arquivos da seguinte forma:

$ sudo zfs set compact =

Substituir com um dos algoritmos de compressão suportados pelo ZFS e com o pool ZFS ou sistema de arquivos onde você deseja ativar a compactação usando o algoritmo de compactação .

Por exemplo, para ativar a compressão e usar o GZIP-9 Algoritmo de compressão na piscina Pool1, Execute o seguinte comando:

$ sudo zfs set compact = gzip-9 pool1

Como você pode ver, GZIP-9 A compressão está ativada na piscina Pool1.

$ sudo zfs get wool pool1

Agora, crie um sistema de arquivos ZFS fs3 na piscina do ZFS Pool1 do seguinte modo:

$ sudo zfs crie pool1/fs3

Da mesma maneira, você pode ativar a compressão no fs3 Sistema de arquivos ZFS usando o Zle Algoritmo de compressão da seguinte forma:

$ sudo zfs set compact = zle pool1/fs3

Como você pode ver, Zle A compactação está ativada no sistema de arquivos ZFS fs3.

$ sudo zfs obtive compressão pool1/fs3

Devo ativar a compactação do ZFS?

O tamanho de todo tipo de arquivo não é reduzido quando compactado. Vídeo (i.e., Mp4), áudio (i.e., Mp3) e imagem (eu.e., JPEG) arquivos, por exemplo. Em vez de seu tamanho ser reduzido, às vezes, eles ficam maiores quando compactados. Esta é uma desvantagem da compactação do sistema de arquivos.

Se você estiver armazenando vídeo, áudio e imagens apenas no seu sistema de pool/arquivo ZFS, a compactação pode não lhe dar muitos benefícios. Mas se você estiver armazenando arquivos de texto e outros arquivos compressíveis (eu.e., Documento do Word, binários/programas executáveis) e, em seguida. Ele economizará muito espaço em disco e melhorará o seu desempenho do sistema de pool/arquivo ZFS.

Conclusão:

Neste artigo, mostrei como ativar a compactação em seus pools ZFS e sistemas de arquivos. Eu também mostrei como verificar a taxa de compactação de seus pools ZFS e sistema de arquivos para descobrir com que eficácia os dados estão sendo compactados. Eu discuti os algoritmos de compactação do ZFS disponíveis e mostrei como ativar a compactação em seus pools e sistemas de arquivos ZFS usando algoritmos de compressão ZFS específicos também.

Referências:

[1] MANPAGE DE ZFS