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
ou parted
para criar sua partição e mkfs
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.
zpool create -o ashift = 12 -f vol0 espelho scsi-AccOW140403AS1322043 scsi-AccOW140403AS1322042 espelho scsi-AccOW140403AS1322013 scsi-AccOW140403AS1322044
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.
zpool set autoexpand=on vol0
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.
zfs set compression=lz4 vol0
zfs set atime=off vol0
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.
zfs create -o volblocksize=128K -s -V 800G vol0/pprovol
Dispositivo de partição zvol:
( deve ser / dev / zd0 para o primeiro zvol; / dev / zd16, / dev / zd32, etc. para zvols subsequentes )
fdisk /dev/zd0 # (create new aligned partition with the "c" and "u" parameters)
Crie e monte o sistema de arquivos:
mkfs.xfs ou ext4 na partição recém-criada, / dev / zd0p1.
mkfs.xfs -f -l size=256m,version=2 -s size=4096 /dev/zd0p1
Pegue o UUID blkid
e modifique-o /etc/fstab
.
UUID=455cae52-89e0-4fb3-a896-8f597a1ea402 /ppro xfs noatime,logbufs=8,logbsize=256k 1 2
Monte o novo sistema de arquivos.
mount /ppro/
Resultados...
[root@Testa ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sde2 20G 8.9G 9.9G 48% /
tmpfs 32G 0 32G 0% /dev/shm
/dev/sde1 485M 63M 397M 14% /boot
/dev/sde7 2.0G 68M 1.9G 4% /tmp
/dev/sde3 12G 2.6G 8.7G 24% /usr
/dev/sde6 6.0G 907M 4.8G 16% /var
/dev/zd0p1 800G 398G 403G 50% /ppro <-- Compressed ZFS-backed XFS filesystem.
vol0 110G 256K 110G 1% /vol0
Listagem do sistema de arquivos ZFS.
[root@Testa ~]# zfs list
NAME USED AVAIL REFER MOUNTPOINT
vol0 328G 109G 272K /vol0
vol0/pprovol 326G 109G 186G - <-- The actual zvol providing the backing for XFS.
vol1 183G 817G 136K /vol1
vol1/images 183G 817G 183G /images
Lista zpool do ZFS.
[root@Testa ~]# zpool list -v
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
vol0 444G 328G 116G 73% 1.00x ONLINE -
mirror 222G 164G 58.1G -
scsi-AccOW140403AS1322043 - - - -
scsi-AccOW140403AS1322042 - - - -
mirror 222G 164G 58.1G -
scsi-AccOW140403AS1322013 - - - -
scsi-AccOW140403AS1322044 - - - -
Propriedades ZFS zvol ( Anote referenced
, compressratio
evolsize
).
[root@Testa ~]# zfs get all vol0/pprovol
NAME PROPERTY VALUE SOURCE
vol0/pprovol type volume -
vol0/pprovol creation Sun May 11 15:27 2014 -
vol0/pprovol used 326G -
vol0/pprovol available 109G -
vol0/pprovol referenced 186G -
vol0/pprovol compressratio 2.99x -
vol0/pprovol reservation none default
vol0/pprovol volsize 800G local
vol0/pprovol volblocksize 128K -
vol0/pprovol checksum on default
vol0/pprovol compression lz4 inherited from vol0
vol0/pprovol readonly off default
vol0/pprovol copies 1 default
vol0/pprovol refreservation none default
vol0/pprovol primarycache all default
vol0/pprovol secondarycache all default
vol0/pprovol usedbysnapshots 140G -
vol0/pprovol usedbydataset 186G -
vol0/pprovol usedbychildren 0 -
vol0/pprovol usedbyrefreservation 0 -
vol0/pprovol logbias latency default
vol0/pprovol dedup off default
vol0/pprovol mlslabel none default
vol0/pprovol sync standard default
vol0/pprovol refcompressratio 3.32x -
vol0/pprovol written 210M -
vol0/pprovol snapdev hidden default