Estou tentando testar um projeto que precisa de armazenamento compactado com o uso do sistema de arquivos ext4, pois o aplicativo que eu uso depende dos recursos do ext4.
Existem soluções de produção / estáveis para compressão transparente no ext4?
O que eu tentei:
Volume Ext4 sobre ZFS com a compactação ativada. Isso realmente teve um efeito adverso. Tentei criar um volume ZFS com a compactação lz4 ativada e criar um sistema de arquivos ext4 em / dev / zvol / ... mas o volume zfs mostrou o dobro do uso real e a compactação não pareceu ter efeito.
# du -hs /mnt/test
**1.1T** /mnt/test
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
pool 15.2T 2.70G 290K /pool
pool/test 15.2T 13.1T **2.14T** -
Comandos de criação do ZFS
zpool create pool raidz2 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde2 /dev/sdf1 /dev/sdg1 /dev/sdh2 /dev/sdi1
zfs set recordsize=128k pool
zfs create -p -V15100GB pool/test
zfs set compression=lz4 pool/test
mkfs.ext4 -m1 -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink /dev/zvol/pool/test
Fusecompress: Parecia funcionar, mas não 100% estável. Procurando alternativas.
LessFS: É possível usar o Lessfs em conjunto com o ext4? Ainda não tentei, mas estaria interessado na percepção do usuário.
Um grande problema: transparência não verdadeira
Um problema que vi com a fusecompress era as cotas. Por exemplo, se eu ativasse a compactação no sistema de arquivos, gostaria que meu sistema se beneficiasse da compactação, não necessariamente o usuário final. Se eu habilitasse uma cota de 1 GB para um usuário, com uma taxa de compactação de 1,5, ele seria capaz de fazer upload de 1,5 GB de dados, em vez de 1 GB de dados e do sistema que se beneficia da compactação. Isso também apareceu no df -h. Existe uma solução para que a compactação seja transparente para cotas?
fonte
Respostas:
Eu uso o ZFS no Linux como um gerenciador de volume e um meio de fornecer proteções e funcionalidades adicionais aos sistemas de arquivos tradicionais. Isso inclui trazer instantâneos em nível de bloco, replicação, desduplicação, compactação e cache avançado para os sistemas de arquivos XFS ou ext4.
Consulte: https://pthree.org/2012/12/21/zfs-administration-part-xiv-zvols/ para obter outra explicação.
No meu caso de uso mais comum, aproveito o recurso ZFS zvol para criar um volume esparso em um zpool existente. As propriedades desse zvol podem ser definidas como as de um sistema de arquivos ZFS normal. Nesta conjuntura, você pode definir propriedades como tipo de compactação, tamanho do volume, método de cache, etc.
A criação deste zvol apresenta um dispositivo de bloco para o Linux que pode ser formatado com o sistema de arquivos de sua escolha. Use
fdisk
ouparted
para criar sua partição emkfs
o volume final.Monte isso e você essencialmente terá um sistema de arquivos apoiado por um zvol e com todas as suas propriedades.
Aqui está o meu fluxo de trabalho ...
Crie um zpool composto por quatro discos:
você desejará a
ashift=12
diretiva para o tipo de disco que está usando. O nome do zpool é "vol0" neste caso.Definir configurações iniciais do zpool:
defino
autoexpand=on
no nível do zpool caso substitua os discos por unidades maiores ou expanda o pool em uma configuração de espelhos do ZFS . Normalmente, não uso o ZFS raidz1 / 2/3 devido ao baixo desempenho e à incapacidade de expandir o zpool.Definir propriedades iniciais do sistema de arquivos zfs:
Use o
lz4
algoritmo de compactação para novas instalações do ZFS. Não há problema em deixá-lo ligado o tempo todo.Criar zvol do ZFS:
para o ZFS no Linux, é muito importante usar um tamanho de bloco grande.
-o volblocksize=128k
é absolutamente essencial aqui. A-s
opção cria um zvol esparso e não consome espaço na piscina até que seja necessário. Você pode se comprometer demais aqui, se conhece bem seus dados. Nesse caso, tenho cerca de 444 GB de espaço em disco utilizável no pool, mas estou apresentando um volume de 800 GB ao XFS.Dispositivo de partição zvol:
( deve ser / dev / zd0 para o primeiro zvol; / dev / zd16, / dev / zd32, etc. para zvols subsequentes )
Crie e monte o sistema de arquivos:
mkfs.xfs ou ext4 na partição recém-criada, / dev / zd0p1.
Pegue o UUID
blkid
e modifique-o/etc/fstab
.Monte o novo sistema de arquivos.
Resultados...
Listagem do sistema de arquivos ZFS.
Lista zpool do ZFS.
Propriedades ZFS zvol ( Anote
referenced
,compressratio
evolsize
).fonte
/dev/sdb
versus/dev/sdb1
.Você também precisa ativar o descarte no sistema de arquivos ext4. Sem descartar, o zfs não recupera o espaço quando os arquivos são removidos. Isso pode levar a grandes discrepâncias de espaço entre o que o sistema de arquivos ext4 informa e o volume zfs.
fonte
fstrim
comando periodicamente .