Solution 1 :
J'utilise ZFS sous Linux en tant que gestionnaire de volumes et un moyen de fournir des protections et des fonctionnalités supplémentaires aux systèmes de fichiers traditionnels. Cela inclut l'apport d'instantanés au niveau du bloc, la réplication, la déduplication, la compression et la mise en cache avancée sur les systèmes de fichiers XFS ou ext4.
Voir :https://pthree.org/2012/12/21/zfs-administration-part-xiv-zvols/ pour une autre explication.
Dans mon cas d'utilisation le plus courant, j'utilise la fonctionnalité ZFS zvol pour créer un volume sparse sur un zpool existant. Les propriétés de ce zvol peuvent être définies comme celles d'un système de fichiers ZFS normal. À ce stade, vous pouvez définir des propriétés telles que le type de compression, la taille du volume, la méthode de mise en cache, etc.
La création de ce zvol présente un périphérique bloc à Linux qui peut être formaté avec le système de fichiers de votre choix. Utilisez fdisk
ou parted
pour créer votre partition et mkfs
le volume fini.
Montez ceci et vous avez essentiellement un système de fichiers soutenu par un zvol et avec toutes ses propriétés.
Voici mon flux de travail...
Créez un zpool composé de quatre disques :
Vous voudrez le ashift=12
directive pour le type de disques que vous utilisez. Le nom du zpool est "vol0" dans ce cas.
zpool create -o ashift=12 -f vol0 mirrorscsi-AccOW140403AS1322043scsi-AccOW140403AS1322042 mirrorscsi-AccOW140403AS1322013scsi-AccOW140403AS1322044
Définir les paramètres zpool initiaux :
J'ai mis autoexpand=on
au niveau du zpool au cas où je remplacerais les disques par des disques plus grands ou étendrais le pool dans un miroirs ZFS mettre en place. Je n'utilise généralement pas ZFS raidz1/2/3 en raison de performances médiocres et de l'impossibilité d'étendre le zpool.
zpool set autoexpand=on vol0
Définissez les propriétés initiales du système de fichiers zfs :
Veuillez utiliser le lz4
algorithme de compression pour les nouvelles installations ZFS. Vous pouvez le laisser allumé tout le temps.
zfs set compression=lz4 vol0
zfs set atime=off vol0
Créer un zvol ZFS :
Pour ZFS sur Linux, il est très important que vous utilisiez une grande taille de bloc. -o volblocksize=128k
est absolument essentiel ici. Le -s
L'option crée un zvol clairsemé et ne consomme pas d'espace de pool tant qu'il n'est pas nécessaire. Vous pouvez vous surengager ici, si vous connaissez bien vos données. Dans ce cas, j'ai environ 444 Go d'espace disque utilisable dans le pool, mais je présente un volume de 800 Go à XFS.
zfs create -o volblocksize=128K -s -V 800G vol0/pprovol
Dispositif de partitionnement zvol :
(doit être /dev/zd0 pour le premier zvol ; /dev/zd16, /dev/zd32, etc. pour les zvols suivants )
fdisk /dev/zd0 # (create new aligned partition with the "c" and "u" parameters)
Créez et montez le système de fichiers :
mkfs.xfs ou ext4 sur la partition nouvellement créée, /dev/zd0p1.
mkfs.xfs -f -l size=256m,version=2 -s size=4096 /dev/zd0p1
Saisissez l'UUID avec blkid
et modifier /etc/fstab
.
UUID=455cae52-89e0-4fb3-a896-8f597a1ea402 /ppro xfs noatime,logbufs=8,logbsize=256k 1 2
Montez le nouveau système de fichiers.
mount /ppro/
Résultats...
[[email protected] ~]# 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
Liste des systèmes de fichiers ZFS.
[[email protected] ~]# 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
Liste zpool ZFS.
[[email protected] ~]# 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 - - - -
Propriétés ZFS zvol (notez referenced
, compressratio
et volsize
).
[[email protected] ~]# 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
Solution 2 :
Vous devez également activer la suppression sur le système de fichiers ext4. Sans suppression, zfs ne récupère pas l'espace lorsque les fichiers sont supprimés. Cela peut entraîner de grandes différences d'espace entre ce que signale le système de fichiers ext4 et les rapports de volume zfs.