Stockage ZFS
Nous tenons à exprimer nos remerciements à Ed Rawlings (Spaceinvader One) pour l'expertise et les conseils dont cette documentation de stockage ZFS a été adaptée. Ses tutoriels et ses remarques ont aidé d'innombrables utilisateurs d'Unraid à maîtriser les techniques avancées de stockage. Nous apprécions ses contributions continues à la communauté Unraid.
ZFS apporte une intégrité des données avancée, des configurations de stockage flexibles et de hautes performances à votre système Unraid. Ce guide explique les concepts fondamentaux de ZFS et vous guide dans la gestion des pools ZFS directement à partir du WebGUI d'Unraid. 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.
:::info[Example]
Vous pouvez utiliser les snapshots ZFS et la réplication sur un seul disque comme cible de sauvegarde, ou répliquer un pool rapide ZFS de SSD vers un disque ZFS dans l'array protégé par la parity d'Unraid - profitant ainsi du meilleur des deux mondes.
:::
L'approche hybride ZFS-in-array est utile pour des scénarios de sauvegarde ou de réplication spécifiques, mais elle ne remplace pas un pool ZFS complet. Les disques ZFS dans l'array sont gérés individuellement; vous ne bénéficiez pas de la performance combinée, de la redondance ou de l'auto-guérison d'un vrai pool multi-disques ZFS. Pour une fonctionnalité complète ZFS, utilisez toujours des pools ZFS dédiés.
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 sains. 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.
:::info[What [cette activation vous permettra]
-
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 contrôles d'intégrité au niveau des blocs (checksums). Bien qu'un seul disque ne puisse pas s'auto-réparer du rot bit, ZFS détectera la corruption et vous alertera, vous permettant de restaurer à partir d'une sauvegarde avant que des pertes de données silencieuses ne se produisent.
-
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 simple comparaison pour vous aider à décider quel profil correspond à vos besoins:
Profil | Redondance | Performance | Extension | Efficacité de l'espace | Cas d'utilisation typique |
---|---|---|---|---|---|
Bande | Aucune | Rapide, mais risqué | Ajouter plus de disques | 100 % | Stockage temporaire/d'échange |
Miroir | 1:1 (style RAID 1) | Excellente pour les E/S 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ée | 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ée | 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 | Inférieure | Critique pour la mission, tolérance aux pannes de 3 disques |
:::important[How [à choisir]
- 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 placez tous vos disques dans un grand vdev RAIDZ2, vous pouvez perdre deux disques sans perte de données. Cependant, l'expansion signifie ajouter un autre vdev complet.
- Vous gagnerez une meilleure performance parallèle 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 du stockage d'Unraid. Deux sujets d'intérêt courants 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 RAM de ZFS - Cliquez pour développer/réduire
Vous avez peut-être rencontré le conseil obsolète : « ZFS nécessite 1 GB de RAM pour 1 TB de stockage. » Ceci n'est plus applicable pour la plupart des utilisateurs. ZFS utilise la RAM pour son Cache de Remplacement Adaptatif (ARC), ce 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/réduire
- 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 log, cache/L2ARC, spécial/dedup) sont listés sous Subpools dans le WebGUI. Il n'est pas nécessaire d'ajouter des sous-pools séparément après l'initialisation de l'importation. Unraid les importera automatiquement avec les disques de données principaux lorsque tous les disques requis sont 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) | But | Risque/Notes |
---|---|---|
Vdev spécial | Stocke les métadonnées et les petits fichiers | La piscine devient illisible si elle est perdue. |
Vdev de déduplication | Active la déduplication | Requiert de grandes quantités de RAM ; risqué pour la plupart des utilisateurs. Évitez, sauf si vous avez des besoins d'expert. |
Vdev de log (SLOG) | Améliore les performances d'écriture synchrone | Optionnel. Seulement bénéfique pour certaines charges de travail. |
Vdev de cache (L2ARC) | Fournit un cache de lecture basé sur SSD | Optionnel. Peut améliorer les vitesses de lecture pour des ensembles de travail volumineux. |
Vdev de réserve | 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 que vous n'ayez un besoin spécifique et bien compris. Ils sont conçus pour des charges de travail spécialisées et peuvent introduire de la complexité ou du 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 emplacements du pool. Unraid reconnaîtra automatiquement le rôle de chaque disque (données, log, cache, spécial, ou dedup) une fois que l'array démarre. Vous n'avez pas besoin de spécifier manuellement quel disque remplit quel rôle.
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 lecteur manque pendant l'importation | Résultat |
---|---|---|
Vdev spécial ou de déduplication | La piscine ne s'importera pas ou sera inutilisable | Ces vdevs stockent des métadonnées critiques ou des tables de déduplication. Sans eux, ZFS ne peut pas monter le pool en toute sécurité. |
Vdev de 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 de cache (L2ARC) | La piscine 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 original, y compris tous les vdevs de support, lors de l'importation dans Unraid. Cela garantit une détection et une intégration fluide. Pour les nouveaux pools créés dans Unraid, les vdevs de support sont optionnels et généralement inutiles 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 le rendre plus grand.
Des moyens pour étendre votre piscine incluent :
- Ajouter un nouveau vdev : Augmentez votre pool en ajoutant un autre vdev (comme un nouveau mirroir ou un groupe RAIDZ). Cela augmente la capacité, mais vous devez ajouter les disques par ensembles correspondant à la configuration du vdev.
- Remplacer les disques par des plus grands : Échangez chaque disque d'un vdev, un à la fois, pour un disque plus grand. Voir remplacement de disque pour des procédures détaillées. Après le remplacement de tous les disques et la résolution du pool, 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.
:::tip[Planning [en avant]
Avant de construire votre pool, considérez combien de stockage vous aurez besoin - non seulement aujourd'hui, mais à l'avenir. ZFS récompense une bonne planification, surtout si vous souhaitez éviter des mises à niveau 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 | Stockez la part appdata pour des conteneurs et des bases de données rapides et réactifs. Cela supporte les snapshots pour des retours en arrière faciles et peut aussi héberger des VMs pour un I/O élevé. | De nombreux utilisateurs choisissent un miroir ZFS à 2 disques pour cela. C'est facile à étendre et offre de bonnes performances. |
Pool ZFS pour des données importantes | Utilisez un miroir ZFS ou un pool RAIDZ2 pour des fichiers irremplaçables comme des photos, des documents fiscaux et des données de %%user-share|partage-utilisateur%%. %%ZFS|zfs%% vérifie les corruptions et se guérit lui-même avec la redondance. | Cette configuration protège les données critiques avec des vérifications d'intégrité automatiques et des capacités d'auto-réparation. |
Cible de sauvegarde quotidienne ou de réplication | Utilisez un disque ZFS (même dans l'array d'Unraid) comme cible de réplication. Vous pouvez répliquer d'autres pools localement ou à partir d'un autre serveur Unraid. | Utilisez zfs send/receive ou des outils comme Syncoid pour des sauvegardes et récupérations rapides et fiables. |
[%Snapshot|snapshot%-based recovery pool] | Gardez des snapshots ponctuels de données ou de conteneurs critiques. Les snapshots peuvent être auto-planifiés et sont économes en espace. | Cette fonctionnalité permet une récupération rapide des suppressions accidentelles ou des erreurs de configuration. |
Éviter les erreurs communes de ZFS
ZFS est un système de fichiers puissant, 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 :
-
Incompatibilité de taille des disques dans RAIDZ : ZFS traite tous les disques d'un vdev RAIDZ comme la taille du plus petit. Pour garantir la meilleure efficacité, utilisez toujours des disques de taille identique dans chaque vdev.
-
Expansion des vdevs RAIDZ via le WebGUI: Bien qu'Unraid 7.1.x et plus récent prennent en charge l'extension RAIDZ via la ligne de commande, cette fonctionnalité n'est pas encore disponible dans le WebGUI. Pour l'instant, développez via CLI ou ajoutez de nouveaux vdevs par l'interface 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.
-
Deduplication sans RAM adéquate : La déduplication nécessite une mémoire significative, et l'activer sans assez de RAM peut gravement impacter la performance. Activez la déduplication seulement si vous comprenez pleinement les exigences.
-
La redondance des vdevs est locale : La redondance dans ZFS est locale à chaque vdev et non partagée à travers le pool. Assurez-vous de planifier la disposition de vos vdevs pour atteindre le niveau de résilience dont vous avez besoin.