From fa217045152fd0fa0e1639eef46d1fcbed9c2e50 Mon Sep 17 00:00:00 2001 From: Arnaud Daby-Seesaram Date: Sun, 13 Oct 2024 14:44:29 +0200 Subject: [PATCH] texinfo: Ajout de la page ZFS. --- crans.texi | 223 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 222 insertions(+), 1 deletion(-) diff --git a/crans.texi b/crans.texi index bb3d19d..d35a15d 100644 --- a/crans.texi +++ b/crans.texi @@ -1636,7 +1636,222 @@ Host *.adm.crans.org @node ZFS @subsection ZFS -TODO. +@subsubsection ZFS c'est quoi ? + +ZFS est un système de fichier avec plein de features natives, notamment +de la gestion de volume, du RAID (RAID-Z), des snapshots, etc. + +@quotation +ZFS a été ouvert sous licence +@uref{https://en.wikipedia.org/wiki/Common_Development_and_Distribution_License,CDDL} +incompatible avec la GPL. Par conséquent, ZFS n'est pas supporté +nativement par le noyau Linux. +@end quotation + +@subsubsection Petit glossaire + +@table @asis +@item RAID-Z#N +Le raid de ZFS. Le chiffre #N correspond au nombre de disques que l'on +peut perdre (e.g. RAID-Z2 correspond à du RAID 6 classique). + +@item Pool +Une @dfn{pool} de stockage est le bloc de base de ZFS. C'est un ensemble +logique de données. Une pool ZFS est composée d'un ou plusieurs +@dfn{vdev}. + +@item Vdev +Un @dfn{vdev} (pour ``virtual device'') est un sous élément d'une pool. +Un vdev peut contenir un ou plusieurs disques physiques. Dans le cas où +plusieurs disques sont utilisés, les données sont étendues +(@dfn{stripped}) sur tous les disques afin d'améliorer sa durée de vie. + +@item Dataset +@dfn{Dataset} est le terme générique pour désigner un volume de fichiers +ZFS. Chaque dataset a un nom unique de la forme @code{Pool/Dataset}. La +racine de la pool est techniquement un dataset aussi. Les dataset sont +organisés comme des dossiers classique, avec une arborescence, et les +enfants héritent des propriétés des parents. +@end table + +@subsubsection Installation + +Il faut ajouter les dépots @code{contrib} de debian dans lesquels se +trouvent les paquets installés ci-dessous. + +Pour installer le module noyau ZFS sous Debian et les outils +d'administration : + +@verbatim +apt install linux-headers-amd64 +apt install zfs-dkms +@end verbatim + +Il faut ensuite reboot pour loader le module zfs, puis : + +@verbatim +apt install zfsutils-linux +@end verbatim + +Cela installe aussi @code{zfs-zed} un daemon permettant de monitorer les +pool ZFS. Les headers du noyau doivent être installés à chaque mise à +jour du noyau. + +@subsubsection Créer une pool ZFS + +La première étape de création d'un filesystem ZFS est la création d'une +pool. Une pool contient des vdev qui eux même contiennent des disques, +la commande suivante permet de créer une pool de nom «pool» et montée +dans @file{/pool} avec un vdev en RAIDZ-3 : + +@verbatim +zpool create -f -m /pool pool raidz3 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03494499 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03563166 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03570970 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03575828 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03614378 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03626582 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03694920 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03704580 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03707506 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03731830 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03734763 \ + ata-WDC_WD2003FYYS-02W0B0_WD-WMAY03734769 +@end verbatim + + +Les identifiants de disques peuvent être récupérés dans +@file{/dev/disks/by-id/}. + +L'état des pool peut-être consulté avec la commande : + +@verbatim +zpool status +@end verbatim + +@subsubsection Créer un dataset + +Une fois la pool créée il est préférable de créer des datasets qui +permettent une gestion plus fine de la pool. Pour cela on utilise la +commande suivante qui créé un dataset du nom de «home» dans la pool +«pool» : + +@verbatim +zfs create pool/home +@end verbatim + +@subsubsection Partager un dataset en NFS + +ZFS permet de partager un dataset en NFS pour cela il faut installer le +paquet @code{nfs-kernel-server} : + +@verbatim +apt install nfs-kernel-server +@end verbatim + +Le dataset «home» de la pool «pool» peut ensuite être partager ainsi : + +@verbatim +zfs set sharenfs="no_root_squash,rw=@172.16.10.0/24" pool/home +@end verbatim + +Cette commande partage le dataset au sous-réseau @code{172.16.10.0/24}, +l'option @code{no_root_squash} permet au root du client NFS d'avoir tous +les droits sur les fichiers du dataset. + +Il est également préférable d'activer les acl POSIX sur la pool, dans le +cas contraire il peut y avoir des problèmes de permissions à la création +de fichiers : + +@verbatim +zfs set acltype=posixacl pool +@end verbatim + +@subsubsection Détruire un dataset + +Pour détruire le dataset @code{pool/path} on utilise la commande : + +@verbatim +sudo zfs destroy pool/path +@end verbatim + +@subsubsection Désactiver le sync + +Renvoyer une confirmation d'écriture sur le disque après chaque +opération diminue énormément les performances du NFS. On peut dire à ZFS +de mentir au NFS sur le retour des opérations sync(). Pour ça, on +utilise la commande : + +@verbatim +sudo zfs set sync=disabled pool/path +@end verbatim + +@subsubsection Changer un disque + +Récupérer le guid du disque qu'on souhaite changer avec @code{zdb} +(@code{zpool status} peut aider à récuperer le nom du disque +concerné). Une fois que c'est fait on peut retirer le disque avec : +@code{zpool offline pool $@{guid@}} puis on remplace l'ancien disque par +le nouveau : @code{zpool replace pool $@{guid@} $@{nouveau disque@}}. +Après ça, on peut monitorer la reconstruction avec @code{zpool status}. + +@subsubsection Chiffrement + +ZFS permet de nativement chiffrer un dataset. Attention, il faut que ça +soit fait à la @emph{creation} du dataset. Ça ne peut pas se changer +après. + +@center Créer un dataset chiffré + +Pour créer un dataset chiffré il suffit de rajouter les options de +chiffrement avec @code{encryption=on}. Il faut aussi spécifier le format +de la clé (@code{raw}, @code{hex}, @code{passphrase}). Par défaut, la +clé va être promptée, mais il est possible de la stocker sur le système +de fichier, ou bien via une URL. L'option @code{encryption} permet +aussi de spéficier l'algorithme de chiffrement à utiliser. + +Par exemple: + +@verbatim +sudo zfs create -o encryption=aes-256-gcm -o keyformat=passphrase pool/dataset +@end verbatim + + +Pour vérifier que tout va bien on peut récupérer la propriété de +chiffrement : + +@verbatim +sudo zfs get encryption pool/dataset +@end verbatim + +Pour changer la clé il suffit d'utiliser la commande suivante : + +@verbatim +sudo zfs key -c pool/dataset +@end verbatim + +qui va demander la nouvelle passphrase. + +Il est aussi possible de changer la source de la clé (pour aller +chercher la clé dans un fichier par exemple). + +@center Monter/démonter un dataset chiffré + +Par défaut le dataset sera monté. Pour le démonter il suffit d'utiliser +la commande @code{unmount}. Attention, la clé de chiffrement sera +toujours chargée, et le dataset pourra être remonté sans redemander la +clé. Pour ça, il faut décharger la clé : + +@verbatim +sudo zfs unmount pool/dataset && sudo zfs unload-key pool/dataset +@end verbatim + +Pour remonter le dataset il faut alors recharger la clé : + +@verbatim +sudo zfs load-key pool/dataset && sudo zfs mount pool/dataset +@end verbatim @node Systemd @subsection Systemd @@ -1651,6 +1866,7 @@ TODO. @menu * LDAP:: +* DNS:: @end menu @node LDAP @@ -1658,6 +1874,11 @@ TODO. TODO. +@node DNS +@subsection DNS + +TODO. + @node Index @unnumbered Index