J'essaie de tester un projet qui nécessite un stockage compressé avec l'utilisation du système de fichiers ext4 car l'application que j'utilise repose sur des fonctionnalités ext4.
Existe-t-il des solutions de production / stables pour une compression transparente sur ext4?
Ce que j'ai essayé:
Ext4 sur le volume ZFS avec compression activée. Cela a en fait eu un effet négatif. J'ai essayé de créer un volume ZFS avec la compression lz4 activée et de créer un système de fichiers ext4 sur / dev / zvol / ... mais le volume zfs montrait le double de l'utilisation réelle et la compression ne semblait pas avoir d'effet.
# 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** -
Commandes de création 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: Semblait fonctionner mais pas stable à 100%. Recherche d'alternatives.
LessFS: Est-il possible d'utiliser Lessfs en conjonction avec ext4? Je n'ai pas encore essayé mais je serais intéressé par les informations des utilisateurs.
Un problème majeur: pas une vraie transparence
Un problème que j'ai vu avec fusecompress était les quotas. Par exemple, si j'active la compression sur le système de fichiers, je souhaiterais que mon système bénéficie de la compression, pas nécessairement l'utilisateur final. Si j'activais un quota de 1 Go pour un utilisateur, avec un taux de compression de 1,5, il serait en mesure de télécharger 1,5 Go de données, plutôt que 1 Go de données et le système bénéficiant de la compression. Cela semble également apparaître sur df -h. Existe-t-il une solution pour que la compression soit transparente aux quotas?
la source
Réponses:
J'utilise ZFS sous Linux comme gestionnaire de volume et comme moyen de fournir des protections et des fonctionnalités supplémentaires aux systèmes de fichiers traditionnels. Cela inclut la création 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 fonction ZFS zvol pour créer un volume clairsemé sur un zpool existant. Les propriétés de 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 de bloc pour Linux qui peut être formaté avec le système de fichiers de votre choix. Utilisez
fdisk
ouparted
pour créer votre partition etmkfs
le volume fini.Montez cela 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 aurez besoin de la
ashift=12
directive pour le type de disques que vous utilisez. Le nom zpool est "vol0" dans ce cas.Définir les paramètres initiaux de zpool:
je définis
autoexpand=on
au niveau de zpool au cas où je remplacerais les disques par des disques plus gros ou étendrais le pool dans une configuration de miroirs ZFS . 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.Définissez les propriétés initiales du système de fichiers zfs:
veuillez utiliser l'
lz4
algorithme de compression pour les nouvelles installations ZFS. Il est normal de le laisser allumé tout le temps.Créer ZFS zvol:
Pour ZFS sous Linux, il est très important d'utiliser une grande taille de bloc.
-o volblocksize=128k
est absolument essentiel ici. L'-s
option crée un zvol clairsemé et ne consomme pas d'espace de pool tant qu'il n'est pas nécessaire. Vous pouvez engager trop 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.Périphérique de partition zvol:
( devrait être / dev / zd0 pour le premier zvol; / dev / zd16, / dev / zd32, etc. pour les zvols suivants )
Créez et montez le système de fichiers:
mkfs.xfs ou ext4 sur la partition nouvellement créée, / dev / zd0p1.
Saisissez l'UUID avec
blkid
et modifiez/etc/fstab
.Montez le nouveau système de fichiers.
Résultats...
Liste des systèmes de fichiers ZFS.
Liste ZFS zpool.
Propriétés ZFS zvol ( prendre note de
referenced
,compressratio
etvolsize
).la source
/dev/sdb
versus/dev/sdb1
.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 finir par conduire à des écarts d'espace importants entre les rapports du système de fichiers ext4 et les rapports de volume zfs.
la source
fstrim
commande.