texinfo: Ajout de la page ZFS.
parent
3d08cbedf9
commit
fa21704515
223
crans.texi
223
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
|
||||
|
||||
|
|
Loading…
Reference in New Issue