Le système de fichiers ZFS

OpenZFS logo

Présentation

D'après wikipédia, ZFS pour Z File System, est un système de fichiers open source sous licence CDDL.

Produit par Sun Microsystems (société rachetée par Oracle en 2009), il a été conçu par l'équipe de Jeff Bonwick.

Les caractéristiques de ce système de fichiers sont sa très haute capacité de stockage, l'intégration de tous les concepts précédents concernant les systèmes de fichiers et la gestion de volume en un seul produit. Il intègre la structure On-Disk, il est léger et permet facilement la mise en place d'une plate-forme de gestion de stockage.

Principales Caractéristiques

  • Grande capacité de stockage
  • Volume management
  • Intégrité des données
  • Clichés instantannés
  • Déduplication
  • Compression

Installation

Suivre les instructions pour debian sur le site zfsonlinux : http://zfsonlinux.org

Commandes

Création d'un pool ZFS

  • On récupère les ids des disques (ids ou chemins) :
root@host:~# ls -lah /dev/disk/by-id/
root@host:~# ls -lah /dev/disk/by-path/
  • Créer un point de montage :
root@host:~# mkdir /zfs
  • Créer un RAID 0 avec trois disques :
root@host:~# zpool create -f -m <mount_point> <pool_name> <type> <id1> <id2> <id3>
root@host:~# zpool create -f -o ashift=12 -m /zfs raid0_01 mirror scsi-SATA_WDC_WD20EARS-07_WD-WCAZA796741 scsi-SATA_WDC_WD20EARS-07_WD-WCAZB7569258 scsi-SATA_WDC_WD20EARS-07_WD-WCPZB7464217
  • create : Création d'un pool
  • -f : Force la création d'un pool. (Pour éviter l'erreur "EFI label error".
  • -o ashift=12 : aligner le zpool sur la taille des clusters (les disques actuels sont à 4K ou 8k et non pas 512k).
  • -m : Point de montage. Si non spécifié, le pool se montera sur /.
  • pool_name : Le nom du pool.
  • type : Type de pool. Exemple : mirror (raid0), raidz3, raidz2 etc...
  • ids : Les noms des disques composants le pool récupérés dans /dev/disk/by-id.
  • Ajout d'un disque de spare :
root@host:~# zpool add tank spare ada12
  • Lister les pool :
root@host:~# zpool list
  • Afficher l'historique des commandes d'un pool :
root@host:~# zpool history raid0_01
  • Modifier le point de montage du pool :
root@host:~# zfs set mountpoint=/zfs raid0_01
  • Si le volume zfs ne monte pas sur un nouveau système :
root@host:~# zpool export raid0_01
root@host:~# zpool import -a
  • Ou
root@host:~# zpool import -f raid0_01
  • Désactiver les atime :
root@host:~# zfs set atime=off <pool>
  • Activer la compression lz4 :
root@host:~# zfs set compression=lz4 <pool>
  • Activer la compression zstd :
root@host:~# zfs set compression=zstd <pool>
  • Supprimer un pool :

⚠️ Toutes les données seront effacées ⚠️

root@host:~# zfs destroy <pool>

Maintenance

Vérification des données (équivalent à chkdsk)

root@host:~# zpool scrub raid0_01
  • Pour voir l'avancement
root@host:~# zpool status

Afficher toutes les options

root@host:~# zfs get all <pool>

Remplacer un disque dans un RAID :

root@host:~# zpool replace pool1 ata-WDC_WD80EFZX-18ZW3NB_Z3K44HMB ata-ST8000DM002-1ZW212_ZX41X5MS

Monitoring

Afficher toutes les infos d'un pool

root@host:~# zpool get all raid0_01

infos sur l'état de la partition

root@host:~# zpool status -v raid0_01

infos sur les IOs

root@host:~# zpool iostat <seconde rafraichissement> <nombre de sortie>
root@host:~# zpool iostat 5 10

Chiffrement

Chiffrement avec dm-crypt

Dans les version récente de zfs on pourra utiliser le chiffrement natif (lors de la création du pool).

Chiffrement des disques

root@host:~# cryptsetup --cipher aes-xts-plain64 --key-size 512 --hash sha1 --iter-time 1000 --use-urandom -v luksFormat /dev/sdb1
root@host:~# cryptsetup --cipher aes-xts-plain64 --key-size 512 --hash sha1 --iter-time 1000 --use-urandom -v luksFormat /dev/sdc1
root@host:~# cryptsetup --cipher aes-xts-plain64 --key-size 512 --hash sha1 --iter-time 1000 --use-urandom -v luksFormat /dev/sdd1

Ouverture des disques

root@host:~# cryptsetup luksOpen /dev/sdb1 zfs01
root@host:~# cryptsetup luksOpen /dev/sdc1 zfs01
root@host:~# cryptsetup luksOpen /dev/sdd1 zfs01

Création de notre pool ZFS

root@host:~# zpool create -f -m /zfs raid0_01 mirror /dev/mapper/zfs01 /dev/mapper/zfs02 /dev/mapper/zfs03

Chiffrement natif

Création du pool

root@host:~# zpool create -f -m /zfs raid0_01 pci-0000:03:00.0-scsi-0:0:1:0-part1

Création dataset avec chiffrement

root@host:~# zpool create -o encryption=on -o keyformat=passphrase raid0_01/dataset01

sources : linuxfr.org

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :