Stockage ZFS
Nous tenons à exprimer nos remerciements à Ed Rawlings (Spaceinvader One) pour l'expertise et les conseils qui ont permis d'adapter cette documentation de stockage ZFS. Ses tutoriels et ses idées ont aidé d'innombrables utilisateurs d'Unraid à maîtriser les techniques de stockage avancées. Nous apprécions ses contributions continues à la communauté Unraid.
ZFS apporte une intégrité des données avancée, des configurations de stockage flexible et des performances élevées à votre système Unraid. Ce guide explique les concepts fondamentaux de ZFS et vous guide dans la gestion des pools ZFS directement via l'Unraid WebGUI. Que vous configuriez un nouveau stockage ZFS ou intégriez un pool existant, vous trouverez les étapes et le contexte nécessaires pour commencer en toute confiance.
Pourquoi ZFS ?
ZFS est un système de fichiers moderne et un gestionnaire de volumes conçu pour protéger vos données, prévenir la corruption et simplifier la gestion du stockage.
Avec ZFS, vous bénéficiez de :
- Vérifications automatiques de l'intégrité des données et auto-réparation
- Support RAID intégré (miroirs, RAIDZ)
- Snapshots et clones pour faciliter les sauvegardes et les retours arrière
- Envoi/réception ZFS pour une réplication efficace
- Compression à la volée
Unraid supports ZFS for any storage pool. You can create a new ZFS pool, import one from another system, or use Unraid’s unique hybrid ZFS setup: add a ZFS-formatted disk directly to the Unraid array (not a pool) and combine ZFS features with Unraid’s parity protection.
The hybrid ZFS-in-array approach is helpful for specific backup or replication scenarios but is not a replacement for a full ZFS pool. ZFS disks in the array are managed individually; you do not get the combined performance, redundancy, or self-healing of a true multi-disk ZFS pool. For full ZFS functionality, always use dedicated ZFS pools.
Pools, vdevs et redondance
Un pool ZFS (appelé "zpool") est composé d'un ou de plusieurs vdevs (périphériques virtuels). Chaque vdev est un groupe de disques physiques avec son propre niveau de redondance. ZFS écrit des données à travers les vdevs, mais chaque vdev est responsable de sa tolérance aux pannes.
La redondance est toujours par vdev. Si un vdev échoue, l’ensemble du pool échoue, même si d’autres vdevs sont en bonne santé. Planifiez vos vdevs avec soin !
Créer un pool ZFS
Pour créer un pool ZFS à l'aide du WebGUI :
- Arrêtez le array.
- Cliquez sur Ajouter un pool.
- Choisissez un nom pour votre pool (par exemple,
raptor
). - Définissez le nombre d'emplacements pour correspondre au nombre de disques que vous souhaitez dans votre ou vos vdev(s) de données principal(aux).
Ce nombre initial d’emplacements est uniquement pour les vdevs de données. Les vdevs de support (comme les disques de journal ou de cache) peuvent être ajoutés séparément après la création du pool.
- Assignez les disques au pool (l'ordre des disques n'a pas d'importance).
- Cliquez sur le nom du pool (par exemple,
raptor
) pour ouvrir son écran de configuration. - Définissez le type de système de fichiers sur
zfs
ouzfs-encrypted
(pour le cryptage LUKS).
- Choisissez votre profil d'allocation - cela détermine la redondance et les performances de votre pool.
Avant de finaliser, consultez les sections sur les profils d'allocation et la topologie pour faire un choix éclairé.
- Activez la compression si désiré (recommandé pour la plupart des charges de travail).
- Cliquez sur Terminé, puis démarrez l'array.
Ajout d'un disque ZFS à l'array (configuration hybride)
Vous pouvez ajouter un disque ZFS autonome à votre array Unraid (pas un pool ZFS) pour combiner les fonctionnalités ZFS avec la protection parity d'Unraid.
-
Protection de parité : Le disque ZFS est protégé par la parity de l'array d'Unraid, garantissant que vos données sont sécurisées contre les défaillances d'un (ou plusieurs, selon vos parity drives) disques.
-
Intégrité des données : ZFS fournit des vérifications d'intégrité au niveau des blocs (somme de contrôle). Bien qu'un disque unique ne puisse pas s'auto-guérir d'un bit rot, ZFS détectera la corruption et vous alertera, vous permettant de restaurer à partir de sauvegardes avant qu'une perte de données silencieuse ne se produise.
-
Fonctionnalités ZFS : Vous pouvez utiliser les snapshots ZFS et la réplication sur ce disque, ce qui le rend idéal pour des cibles de sauvegarde, des ensembles de données spécifiques ou des scénarios où vous souhaitez des fonctionnalités ZFS aux côtés du stockage traditionnel Unraid.
Pour ajouter un disque ZFS à l'array :
- Allez dans l'onglet Main du WebGUI.
- Arrêtez le array.
- Cliquez sur un emplacement vide sous Appareils de l'array.
- Sélectionnez le disque que vous souhaitez ajouter.
- Sous Système de fichiers, choisissez
zfs
ouzfs-encrypted
.
- Cliquez sur Appliquer.
- Démarrez l'array et laissez le disque être formaté si nécessaire.
Choisir un profil d'allocation
Lorsque vous configurez un pool ZFS, votre profil d'allocation détermine comment vos données sont protégées, comment votre pool fonctionne, et comment vous pouvez l'étendre. Voici une comparaison simple pour vous aider à décider quel profil convient à vos besoins :
Profil | Redondance | Performance | Expansion | Efficacité de l'espace | Cas d'utilisation typique |
---|---|---|---|---|---|
Bande | Aucun | Rapide, mais risqué | Ajouter plus de disques | 100 % | Stockage temporaire/de secours |
Miroir | 1:1 (style RAID 1) | Excellent pour les I/O aléatoires | Ajouter plus de miroirs | 50 % | Haute performance, extension facile |
RAIDZ1 | 1 disque par vdev | Rapide pour les gros fichiers. Pas idéal pour les écritures petites ou aléatoires. | Ajouter de nouveaux vdevs | Élevé | Usage général, tolérance aux pannes de 1 disque |
RAIDZ2 | 2 disques par vdev | Comme Z1 mais écritures légèrement plus lentes (parité supplémentaire) | Ajouter de nouveaux vdevs | Modéré | Données importantes, tolérance aux pannes de 2 disques |
RAIDZ3 | 3 disques par vdev | Comme Z2, avec plus de surcharge d'écriture (pour une sécurité maximale) | Ajouter de nouveaux vdevs | Plus bas | Critique pour la mission, tolérance aux pannes de 3 disques |
- Utilisez Miroir si vous voulez la meilleure performance et une extension facile et flexible, et que vous êtes d'accord pour utiliser plus d'espace disque pour la redondance.
- Choisissez RAIDZ1/2/3 si vous voulez maximiser l'espace utilisable et stocker de gros fichiers, mais gardez à l'esprit que l'extension est moins flexible et que la performance d'écriture aléatoire est plus faible.
- Bande n'est adaptée que pour les données non critiques, temporaires - si un disque tombe en panne, vous perdez tout.
Topologie et extension
La façon dont vous regroupez les disques dans des vdevs affecte à la fois la sécurité des données et la vitesse.
- Si vous mettez tous vos disques dans un grand vdev RAIDZ2, vous pouvez perdre deux disques sans perdre de données. Cependant, l'expansion signifie ajouter un autre vdev complet.
- Vous obtiendrez de meilleures performances parallèles si vous divisez les disques en plusieurs petits vdevs RAIDZ1. Soyez prudent ; si deux disques échouent dans le même vdev, vous perdrez l'ensemble du pool.
- ZFS distribue les données à travers des vdevs, pas des disques individuels, donc plus de vdevs peuvent conduire à de meilleures performances pour les charges de travail comprenant de nombreux petits fichiers ou des I/O aléatoires.
- L'extension d'un pool ZFS signifie généralement ajouter un nouveau vdev de la même configuration, pas seulement un seul disque.
Compression et RAM
ZFS offre des fonctionnalités avancées qui peuvent améliorer significativement l'efficacité et la performance de stockage d'Unraid. Deux sujets d'intérêt commun sont la compression et les exigences en mémoire.
La compression ZFS est transparente - elle fonctionne en arrière-plan, réduisant la taille des données avant qu'elles n'atteignent le disque.
Cela présente deux avantages majeurs :
- Réduction de l'utilisation du disque : Moins d'espace de stockage est consommé.
- Amélioration des performances : Écrire et lire moins de données peut entraîner des opérations plus rapides, surtout sur les processeurs modernes.
Le mythe de la RAM ZFS - Cliquez pour développer/replier
Vous avez peut-être entendu parler de l'ancien conseil : "ZFS nécessite 1 Go de RAM par To de stockage." Cela ne s'applique plus à la plupart des utilisateurs. ZFS utilise la RAM pour son cache de remplacement adaptable (ARC), qui accélère les lectures fréquemment accédées.
Unraid limite automatiquement ZFS à utiliser une portion raisonnable de la RAM de votre système (généralement 1/8ème de la RAM totale). Cela permet à ZFS de bien fonctionner sans affecter les conteneurs Docker, les VMs, ou l'OS Unraid.
Importer des pools ZFS créés sur d'autres systèmes
Unraid peut importer des pools ZFS créés sur d'autres plateformes avec un minimum de tracas.
Comment importer un pool ZFS - Cliquez pour développer/replier
- Arrêtez l'array : Assurez-vous que votre array Unraid est arrêté.
- Ajoutez un nouveau pool : Cliquez sur Ajouter un pool.
- Assignez tous les disques :
- Définissez Nombre d'emplacements de données sur le nombre total de disques de votre pool ZFS (y compris les vdevs de données et les vdevs de support).
- Assignez chaque disque à l'emplacement correct.
- Exemple: Pour un pool avec un vdev miroir de 4 disques et un vdev L2ARC de 2 disques, définissez 6 emplacements et attribuez les six disques.
- Définissez le système de fichiers sur "Auto" : Cliquez sur le nom du pool (par exemple,
raptor
) et définissez Système de fichiers sur Auto. - Terminez et démarrez l'array : Cliquez sur Terminé, puis démarrez l'array.
Unraid détectera et importera automatiquement le pool ZFS. Les vdevs de support (comme le log, cache/L2ARC, spécial/dedup) sont listés sous Subpools dans le WebGUI. Il n'est pas nécessaire d'ajouter séparément les sous-pools après avoir initié l'importation. Unraid les importera automatiquement aux côtés des principaux disques de données lorsque tous les disques requis seront assignés.
Après l'importation, il est fortement recommandé d'exécuter un scrub pour vérifier l'intégrité des données.
- Cliquez sur le nom de la piscine (p. ex.,
raptor
) pour ouvrir sa configuration. - Sous État de la piscine, vérifiez l'état et cliquez sur Scrub.
Vdevs de support (sous-piscines)
Unraid se réfère aux vdevs de support ZFS comme des sous-pools. La plupart des utilisateurs n'en ont pas besoin, mais les utilisateurs avancés peuvent les rencontrer :
Vdev de support (sous-piscine) | Objectif | Risque/Notes |
---|---|---|
Vdev spécial | Stocke les métadonnées et les petits fichiers | Le pool devient illisible s'il est perdu. |
Vdev dedup | Active la déduplication | Nécessite de grandes quantités de RAM; risqué pour la plupart des utilisateurs. À éviter sauf si vous avez des besoins experts. |
Vdev log (SLOG) | Améliore les performances d'écriture synchrone | Optionnel. Bénéfique uniquement pour certaines charges de travail. |
Vdev de cache (L2ARC) | Fournit un cache de lecture basé sur SSD | Optionnel. Peut améliorer la vitesse de lecture pour de grands ensembles de travail. |
Vdev spare | Non pris en charge dans Unraid (à partir de la version 7.1.2) |
La plupart des utilisateurs d'Unraid devraient éviter les vdevs de support/sous-pools à moins d'avoir un besoin spécifique et bien compris. Ils sont destinés à des charges de travail spécialisées et peuvent introduire de la complexité ou un risque s'ils sont mal utilisés.
Lecteurs critiques de vdevs de support non assignés pendant l'importation
Lorsque vous importez un pool ZFS dans Unraid, vous devez assigner chaque disque de votre pool d'origine, y compris ceux utilisés pour les vdevs de support, aux slots de pool. Unraid reconnaîtra automatiquement le rôle de chaque disque (données, journal, cache, spécial, ou dedup) une fois que l' array démarre. Vous n'avez pas besoin de spécifier manuellement quel disque sert à quoi.
Si vous oubliez d'inclure un lecteur qui faisait partie d'un vdev de support lors de l'importation, le résultat dépendra de la fonction du vdev :
Type de vdev | Si le disque manque lors de l'importation | Résultat |
---|---|---|
Vdev spécial ou de déduplication | La piscine ne s'importera pas ou sera inutilisable | Ces vdevs conservent des métadonnées critiques ou des tables de déduplication. Sans eux, %%ZFS |
Vdev log (SLOG) | La piscine importe, mais les performances d'écriture synchrone diminuent. | La piscine reste accessible, mais vous pouvez observer des performances réduites pour les charges de travail qui dépendent des écritures synchrones. |
Vdev cache (L2ARC) | Le pool s'importe, mais le cache de lecture est perdu. | Le pool fonctionne normalement, mais vous perdez le gain de performance du cache L2ARC. Aucune donnée n'est perdue. |
Assignez toujours chaque disque physique de votre pool ZFS d'origine, y compris tous les vdevs de support, lors de l'importation dans Unraid. Cela garantit une détection et une intégration fluides. Pour les nouveaux pools créés dans Unraid, les vdevs de support sont optionnels et généralement non nécessaires pour la plupart des utilisateurs.
Expansion du stockage
ZFS est puissant, mais il est important de comprendre comment son expansion de stockage fonctionne - surtout si vous prévoyez une future croissance.
Historiquement, les vdevs ZFS ont une largeur fixe. Vous ne pouvez pas ajouter un disque à un vdev RAIDZ existant pour l'agrandir.
Des moyens pour étendre votre piscine incluent :
- Ajouter un nouveau vdev : Augmentez votre pool en ajoutant un autre vdev (comme un nouveau miroir ou groupe RAIDZ). Cela augmente la capacité, mais vous devez ajouter des disques en ensembles correspondant à la configuration du vdev.
- Remplacer les disques par des plus grands : Remplacez chaque disque dans un vdev, un par un, par un disque plus grand. Voir remplacement de disque pour des procédures détaillées. Après que tous les disques soient remplacés et que le pool soit résolu, la capacité du vdev augmente.
- Créer une nouvelle piscine : Démarrer une nouvelle piscine ZFS maintient l'organisation et l'indépendance pour différents types de données ou charges de travail.
Avant de construire votre pool, réfléchissez à la quantité de stockage dont vous aurez besoin - pas seulement aujourd'hui, mais à l'avenir. ZFS récompense une bonne planification, surtout si vous souhaitez éviter des mises à jour perturbatrices plus tard.
Utilisation de piscines ZFS sur un serveur Unraid existant
Si vous utilisez un array Unraid traditionnel et souhaitez ajouter des piscines ZFS, voici quelques moyens efficaces de les intégrer :
Cas d'utilisation | Description | Détails / Exemples |
---|---|---|
Piscine SSD/NVMe rapide pour appdata & Docker | Stocker le partage appdata pour des conteneurs et bases de données rapides et réactifs. Cela permet des %%snapshot | snapshot%%s pour des restaurations faciles et peut également accueillir des %%VM |
Pool %%ZFS | zfs%% pour données importantes | Utilisez un miroir %%ZFS |
Cible de sauvegarde quotidienne ou de réplication | Utilisez un disque %%ZFS | zfs%% (même dans l' %%array |
Snapshot-based recovery pool | Conservez des %%snapshot | snapshot%%s de point temps de données ou conteneurs critiques. Les %%snapshot |
Éviter les erreurs communes de ZFS
ZFS est un puissant système de fichiers, mais il y a plusieurs pièges courants qui peuvent compromettre ses avantages. Il est important de garder à l'esprit les points suivants avant de configurer votre pool pour une expérience plus fluide :
-
Défaut de taille des disques dans RAIDZ : ZFS traite tous les disques dans un vdev RAIDZ comme la taille du plus petit. Pour garantir la meilleure efficacité, utilisez toujours des disques de taille identique dans chaque vdev.
-
Étendre les vdevs RAIDZ via le WebGUI : Bien qu'Unraid 7.1.x et versions plus récentes prennent en charge l'expansion RAIDZ via la ligne de commande, cette fonctionnalité n'est pas encore disponible dans le WebGUI. Pour l'instant, étendez via le CLI ou ajoutez de nouveaux vdevs via le GUI.
-
ZFS disk vs. full zpool: A single ZFS-formatted disk in the Unraid array does not offer the redundancy or features of a dedicated ZFS pool. To leverage advanced functionality, use standalone pools.
-
Déduplication sans RAM adéquate : La déduplication nécessite une mémoire importante, et l'activer sans suffisamment de RAM peut avoir des impacts sévères sur les performances. N'activez la déduplication que si vous comprenez pleinement les exigences.
-
La redondance du vdev est locale : La redondance dans ZFS est locale à chaque vdev et non partagée sur le pool. Assurez-vous de planifier la disposition de vos vdevs pour atteindre le niveau de résilience dont vous avez besoin.