Comment installer et configurer ZFS sur Ubuntu – CloudSavvy IT
Le système de fichiers ZFS offre des capacités énormes, une mise en miroir RAID et des mécanismes anti-corruption dès la sortie de la boîte. Apprenez à installer Ubuntu avec ZFS et à créer un pool en miroir.
Sommaire
Qu’est-ce que ZFS ?
ZFS est un système de fichiers avancé créé par Sun Microsystems pour être utilisé avec leur système d’exploitation Solaris. Suite à l’acquisition de Sun par Oracle en 2009, ZFS appartient désormais à Oracle Corporation.
Cependant, dans un acte d’altruisme typique, à partir de 2005, Sun a publié une version open source de ZFS. Inévitablement, cela a été porté sur Linux où il a gagné en visibilité. La version open source de ZFS – openZFS – est gérée et maintenue par le projet OpenZFS.
ZFS est un système de fichiers haute capacité et tolérant aux pannes. ZFS signifiait à l’origine Zettabyte File System. L’architecture ZFS est basée sur 128 bits au lieu des 64 bits plus courants des autres systèmes de fichiers. Être capable de travailler avec des valeurs numériques plus grandes est l’un des facteurs qui ont rendu ZFS capable de gérer des zettaoctets de stockage. Pour vous donner une idée de ce que cela signifie, un zettaoctet équivaut à un milliard de téraoctets.
De nos jours, ZFS prend en charge le stockage de fichiers jusqu’à 256 zébioctets. Un zébioctet (270 octets) est plus grand qu’un zettaoctet (1021 octets), mais pas par ordre de grandeur. Il y a bien plus avec ZFS que la simple capacité, aussi ahurissant que cela puisse être. ZFS fonctionne comme son propre gestionnaire de volume et contrôleur RAID. Il possède des fonctions intégrées telles que la copie conforme en écriture qui protègent vos données contre la corruption. Il combine des fonctionnalités qui offrent le regroupement, le clonage et la copie de systèmes de fichiers, ainsi que ses fonctionnalités de type RAID, de manière native.
Ubuntu propose ZFS depuis quelques années maintenant, mais toujours avec des avertissements et des mises en garde. Dans Ubuntu 20.10, les avertissements ont été supprimés. Canonical prend officiellement en charge ZFS, mais uniquement dans les configurations de disque complet. Pour obtenir cette prise en charge, vous devrez installer ZFS lors de l’installation d’Ubuntu. Les options ZFS sont toujours cachées, mais elles sont là et plus seulement pour les intrépides ou les téméraires.
Avec Ubuntu 21.10 attendu en octobre 2021, c’est le bon moment pour voir comment l’offre ZFS dans Ubuntu évolue.
Comment installer et utiliser ZFS sur Ubuntu (et pourquoi vous le voudriez)
Recherche des options ZFS pendant l’installation
Pendant l’installation d’Ubuntu, l’écran « Type d’installation » vous permet de choisir d’effacer le disque sur lequel vous installez Ubuntu ou de faire autre chose. Cliquez sur le bouton « Fonctionnalités avancées ».
La boîte de dialogue « Fonctionnalités avancées » apparaît.
Sélectionnez le bouton radio « Effacer le disque et utiliser ZFS », puis cliquez sur le bouton « OK ».
L’écran « Type d’installation » affichera « ZFS sélectionné » pour indiquer que vous avez choisi d’utiliser ZFS.
Cliquez sur le bouton « Continuer » et terminez l’installation comme d’habitude.
Si vous avez plusieurs disques durs installés sur votre ordinateur, vous pourrez choisir comment vous voulez qu’ils soient utilisés par ZFS. Ubuntu proposera une configuration suggérée, mais vous pouvez ajuster les choses à votre guise.
Mais que se passe-t-il si vous ajoutez des disques durs une fois que vous avez installé Ubuntu ? Comment configurez-vous ZFS pour utiliser le nouveau stockage ? C’est ce que nous verrons ensuite.
Nous avons installé Ubuntu avec ZFS sur le seul disque dur de la machine de test que nous avons utilisée pour rechercher cet article. Nous avons ajouté deux disques durs supplémentaires, donnant à l’ordinateur trois disques durs au total. Ubuntu était installé sur un disque dur et les deux nouveaux disques étaient vierges, non formatés et non montés.
La première chose que nous devons faire est d’identifier comment Ubuntu fait référence aux nouveaux disques durs. Les lsblk
La commande répertorie tous les périphériques de bloc installés sur votre ordinateur. Nous pouvons être précis sur les colonnes de sortie que nous voulons voir dans les résultats.
lsblk -o name,size,fstype,type,mountpoint
Les -o
(sortie) est suivie des colonnes que nous voulons voir. Nous avons choisi:
- Nom: Le nom qu’Ubuntu utilise pour désigner le disque dur.
- Taille: La taille du disque dur. Si le disque dur comporte plusieurs partitions, elles sont toutes répertoriées et la taille de chaque partition est affichée.
- typefs: le système de fichiers qui correspond au disque dur ou à la partition.
- taper: indique si la ligne fait référence à un disque, une partition, un lecteur de CD-ROM ou un pseudo-périphérique de bouclage.
- point de montage: Le point de montage du système de fichiers sur le disque dur ou la partition.
Il y a un tas de squashfs
périphériques de bouclage, numérotés loop0
parloop6
. Chaque fois que vous installez une application snap, un de ces pseudo-périphériques est créé. Cela fait partie de l’encapsulation et du sandboxing qui s’enroule autour de chaque application snap.
Le premier disque dur est répertorié comme /dev/sda
. C’est un disque de 32 Go avec cinq partitions dessus, répertorié comme /dev/sda1
par /dev/sda5
. Ils sont formatés de différentes manières. C’est le lecteur qui était dans l’ordinateur lorsque nous avons installé Ubuntu.
Nos deux nouveaux disques durs sont répertoriés comme /dev/sdb
et /dev/sdc
. Ce sont aussi des disques de 32 Go, mais ils ne sont pas formatés et ils ne sont pas montés.
Pools, RAID 0, RAID 1
Pour utiliser les nouvelles rives dures, nous les ajoutons à un bassin. Vous pouvez ajouter autant de disques que vous le souhaitez à un pool. Il y a deux façons de faire ça. Vous pouvez configurer le pool pour pouvoir utiliser tout l’espace de stockage de chaque disque dur dans une configuration RAID 0, ou vous pouvez les configurer pour que le pool n’offre que la quantité d’espace de stockage du plus petit disque dur du pool, dans une configuration RAID 1.
L’avantage du RAID 0 est l’espace. Mais la configuration préférée (et très fortement recommandée) est RAID 1. RAID 1 met en miroir les données sur tous les disques du pool. Cela signifie que vous pouvez avoir une panne de disque dur et que le système de fichiers et vos données sont toujours en sécurité et que votre ordinateur est toujours fonctionnel. Vous pouvez remplacer le lecteur endommagé et ajouter le nouveau lecteur à votre pool.
En revanche, avec RAID 0, une seule panne de disque dur rend votre système inutilisable jusqu’à ce que vous remplaciez le disque endommagé et effectuiez une restauration à partir de vos sauvegardes.
Plus vous avez de disques dans un pool RAID 1, plus il est robuste. Le minimum dont vous avez besoin pour RAID 1 est de deux disques. Une panne dans l’un ou l’autre des lecteurs serait un inconvénient, mais pas une catastrophe. Mais une panne des deux disques durs en même temps serait bien sûr un problème plus important. La réponse semble donc être de mettre en commun autant de disques durs que possible.
Mais bien sûr, dans la pratique, il y a une limite au nombre de disques que vous souhaitez ou pouvez vous permettre d’allouer à un seul pool. Si vous disposez de huit disques durs de rechange, la configuration de deux pools RAID 1 à quatre disques constitue probablement une meilleure utilisation du matériel qu’un pool unique à huit disques. Et rappelez-vous qu’un pool RAID 1 ne peut offrir que le stockage du plus petit disque dur du pool, alors essayez toujours d’utiliser des disques de la même taille dans un seul pool.
Création d’un pool RAID 1
Nous avons identifié nos nouveaux disques durs comme /dev/sdb
et /dev/sdc
. Pour créer un pool ZFS RAID 1, nous utilisons cette commande :
sudo zpool create cloudsavvyit mirror /dev/sdb /dev/sdc
Les composants de la commande sont :
- sudo: Nous modifions la configuration du système, nous devons donc utiliser
sudo
pour obtenir les privilèges root. - zpool: Il s’agit de la commande de gestion de pool ZFS.
- créer: C’est l’action que nous voulons
zpool
à réaliser pour nous. - cloudsavvyit: C’est le nom du pool que nous souhaitons créer.
- miroir: Nous voulons que nos données soient mises en miroir sur tous les disques, ce qui nous donne un pool RAID 1. L’omission de l’option « miroir » crée un pool RAID 0.
- /dev/sdb: Le premier de nos nouveaux disques durs.
- /dev/sdc: Le deuxième de nos nouveaux disques durs.
Remplacez « cloudsavvyit » par le nom que vous souhaitez appeler votre piscine, et remplacez /dev/sdb
et /dev/sdc
avec les identifiants de vos nouveaux disques durs.
Créer une piscine est un peu anti-climatique. Si tout se passe bien, vous êtes renvoyé sans ménagement à l’invite de commande. Nous pouvons utiliser le status
agir avec le zpool
commande pour voir l’état de notre nouveau pool.
sudo zpool status cloudsavvyit
Notre nouveau pool a été créé, il est en ligne, nos deux nouveaux disques sont dans le pool, et il n’y a aucune erreur. Tout ça a l’air super. Mais où est la piscine ? Voyons si lsblk
nous montrera où il a été monté.
lsblk -o name,size,fstype,type,mountpoint
Nous pouvons voir que nos nouveaux disques durs /dev/sdb
et /dev/sdc
ont été partitionnés avec deux partitions chacun, mais aucun point de montage n’est répertorié pour eux. Les pools ne sont pas montés comme les disques durs ordinaires. Par exemple, il n’y a pas d’entrée dans le /etc/fstab
fichier pour les pools ZFS. Par défaut, un point de montage est créé dans le répertoire racine. Elle porte le même nom que la piscine.
ls /
Si vous voulez que le point de montage soit créé ailleurs, utilisez le -m
(point de montage) lorsque vous créez le pool et indiquez le chemin d’accès à l’endroit où vous souhaitez que le point de montage soit créé. Vous pouvez également donner un nom différent au point de montage.
sudo zpool create -m /path/to/mount-point-name cloudsavvyit mirror /dev/sdb /dev/sdc
Donner aux utilisateurs l’accès au pool
Le pool existe, mais seul l’utilisateur root peut y stocker des données. Ce n’est pas ce dont nous avons besoin, bien sûr. Nous voulons que d’autres utilisateurs puissent accéder à la piscine.
Pour y parvenir nous allons :
- Créez un répertoire dans le pool.
- Créez un nouveau groupe.
- Définissez le nouveau groupe comme étant le propriétaire du groupe du répertoire.
- Ajoutez des utilisateurs qui ont besoin d’accéder au stockage de données au nouveau groupe.
Ce schéma offre une grande flexibilité. Nous pouvons créer autant de répertoires de stockage de données que nécessaire, avec différents groupes qui les possèdent. Donner aux utilisateurs l’accès aux différentes zones de stockage est aussi simple que de les ajouter aux groupes appropriés.
nous utiliserons groupadd
pour créer un groupe d’utilisateurs. Notre groupe s’appelle « csavvy1 ». Nous utiliserons ensuite le usermod
commande pour ajouter un utilisateur appelé « dave » au nouveau groupe. Les -a
L’option (ajouter) ajoute le nouveau groupe à la liste des groupes existants dans lesquels se trouve l’utilisateur. Sans cette option, l’utilisateur est supprimé de tous les groupes existants et ajouté au nouveau. Cela posera des problèmes, alors assurez-vous d’utiliser le -a
option.
sudo groupadd csavvy1
sudo usermod -a -G csavvy1 dave
Pour que sa nouvelle appartenance au groupe devienne effective, l’utilisateur doit se déconnecter puis se reconnecter.
Nous allons maintenant créer un répertoire dans le pool, appelé « data1 ».
sudo mkdir /cloudsavvyit/data1
Les chgrp
La commande nous permet de définir le propriétaire du groupe du répertoire.
sudo chgrp csavvy1 /cloudsavvyit/data1
Enfin, nous allons définir les autorisations de groupe en utilisant chmod
. Le « s » est le bit spécial SGID. Cela signifie que les fichiers et répertoires créés dans le répertoire « data1 » hériteront du groupe propriétaire de ce répertoire.
sudo chmod g+rwsx /cloudsavvyit/data1/
Notre utilisateur s’est déconnecté et reconnecté. Essayons de créer un fichier dans le nouveau répertoire de stockage de données de notre nouveau pool RAID 1 ZFS.
touch /cloudsavvyit/data1/new-file.txt
Et voyons qu’il a été créé.
ls /cloudsavvyit/data1 -lh
Succès. Et si nous essayions de créer un autre fichier en dehors de notre zone de stockage data1 ?
touch /cloudsavvyit/new-file2.txt
Cela échoue comme prévu. Nos autorisations fonctionnent. Notre utilisateur ne peut manipuler que les fichiers du répertoire de stockage de données auquel il a été autorisé à accéder.
Comment utiliser SUID, SGID et Sticky Bits sur Linux
Détruire une piscine
Soyez prudent avec cette commande. Assurez-vous d’avoir des sauvegardes avant de continuer. Si vous êtes sûr de le vouloir vraiment et que vous avez vérifié que vous avez d’autres copies des données dans le pool, vous pouvez détruire un pool avec cette commande :
sudo zpool destroy cloudsavvyit
Remplacez « cloudsavvyit » par le nom du pool que vous allez détruire.
Vous n’avez qu’un seul disque dur ?
Si vous n’avez qu’un seul disque dur, ou si votre ordinateur a plusieurs disques durs mais que leur taille varie trop pour former un pool utile, vous pouvez toujours utiliser ZFS. Vous n’obtiendrez pas la mise en miroir RAID, mais les mécanismes intégrés de protection contre la corruption et les données restent des fonctionnalités intéressantes et convaincantes.
Mais n’oubliez pas qu’aucun système de fichiers, avec ou sans mise en miroir RAID, signifie que vous pouvez ignorer les sauvegardes.
Sauvegardes vs redondance : quelle est la différence ?