1. Système de fichiers Oracle Solaris ZFS (introduction)
2. Mise en route d'Oracle Solaris ZFS
3. Différences entre les systèmes de fichiers Oracle Solaris ZFS et classiques
4. Gestion des pools de stockage Oracle Solaris ZFS
Composants d'un pool de stockage ZFS
Utilisation de disques dans un pool de stockage ZFS
Utilisation de tranches dans un pool de stockage ZFS
Utilisation de fichiers dans un pool de stockage ZFS
Fonctions de réplication d'un pool de stockage ZFS
Configuration de pool de stockage mis en miroir
Configuration de pool de stockage RAID-Z
Données d'autorétablissement dans une configuration redondante
Entrelacement dynamique dans un pool de stockage
Création et destruction de pools de stockage ZFS
Création d'un pool de stockage ZFS
Création d'un pool de stockage de base
Création d'un pool de stockage mis en miroir
Création d'un pool de stockage RAID-Z
Création d'un pool de stockage ZFS avec des périphériques de journal
Création d'un pool de stockage ZFS avec des périphériques de cache
Affichage des informations d'un périphérique virtuel de pool de stockage
Gestion d'erreurs de création de pools de stockage ZFS
Détection des périphériques utilisés
Niveaux de réplication incohérents
Réalisation d'un test à la création d'un pool de stockage
Point de montage par défaut pour les pools de stockage
Destruction de pools de stockage ZFS
Destruction d'un pool avec des périphériques défaillants
Gestion de périphériques dans un pool de stockage ZFS
Ajout de périphériques à un pool de stockage
Connexion et séparation de périphériques dans un pool de stockage
Création d'un pool par scission d'un pool de stockage ZFS mis en miroir
Mise en ligne et mise hors ligne de périphériques dans un pool de stockage
Mise hors ligne d'un périphérique
Mise en ligne d'un périphérique
Effacement des erreurs de périphérique de pool de stockage
Remplacement de périphériques dans un pool de stockage
Désignation des disques hot spare dans le pool de stockage
Activation et désactivation de disque hot spare dans le pool de stockage
Gestion des propriétés de pool de stockage ZFS
Requête d'état de pool de stockage ZFS
Affichage des informations des pools de stockage ZFS
Liste des informations concernant tous les pools de stockage ou un pool spécifique
Liste de statistiques spécifiques à un pool de stockage
Script de sortie du pool de stockage ZFS
Affichage de l'historique des commandes du pool de stockage ZFS
Visualisation des statistiques d'E/S des pools de stockage ZFS
Liste des statistiques d'E/S à l'échelle du pool
Liste des statistiques d'E/S des périphériques virtuels
Détermination de l'état de maintenance des pools de stockage ZFS
État de maintenance de base de pool de stockage
Collecte des informations sur l'état du pool de stockage ZFS
Migration de pools de stockage ZFS
Préparatifs de migration de pool de stockage ZFS
Exportation d'un pool de stockage ZFS
Définition des pools de stockage disponibles pour importation
Importation de pools de stockage ZFS à partir d'autres répertoires
Importation de pools de stockage ZFS
Importation d'un pool avec un périphérique de journal manquant
Importation d'un pool en mode lecture seule
Importation d'un pool via le chemin d'accès au périphérique
Récupération de pools de stockage ZFS détruits
Mise à niveau de pools de stockage ZFS
5. Installation et initialisation d'un système de fichiers racine ZFS Oracle Solaris
6. Gestion des systèmes de fichiers Oracle Solaris ZFS
7. Utilisation des instantanés et des clones ZFS Oracle Solaris
8. Utilisation des ACL et des attributs pour protéger les fichiers Oracle Solaris ZFS
9. Administration déléguée de ZFS dans Oracle Solaris
10. Rubriques avancées Oracle Solaris ZFS
11. Dépannage d'Oracle Solaris ZFS et récupération de pool
Vous trouverez la plupart des informations de base concernant les périphériques dans la section Composants d'un pool de stockage ZFS. Après la création d'un pool, vous pouvez effectuer plusieurs tâches de gestion des périphériques physiques au sein du pool.
Connexion et séparation de périphériques dans un pool de stockage
Création d'un pool par scission d'un pool de stockage ZFS mis en miroir
Mise en ligne et mise hors ligne de périphériques dans un pool de stockage
Vous pouvez ajouter de l'espace disque à un pool de façon dynamique, en ajoutant un périphérique virtuel de niveau supérieur. Cet espace disque est disponible immédiatement pour l'ensemble des jeux de données du pool. Pour ajouter un périphérique virtuel à un pool, utilisez la commande zpool add. Exemple :
# zpool add zeepool mirror c2t1d0 c2t2d0
Le format de spécification des périphériques virtuels est le même que pour la commande zpool create. Une vérification des périphériques est effectuée afin de déterminer s'ils sont en cours d'utilisation et la commande ne peut pas modifier le niveau de redondance sans l'option -f. La commande prend également en charge l'option -n, ce qui permet d'effectuer un test. Exemple :
# zpool add -n zeepool mirror c3t1d0 c3t2d0 would update 'zeepool' to the following configuration: zeepool mirror c1t0d0 c1t1d0 mirror c2t1d0 c2t2d0 mirror c3t1d0 c3t2d0
Cette syntaxe de commande ajouterait les périphériques en miroir c3t1d0 et c3t2d0 à la configuration existante du pool zeepool.
Pour plus d'informations sur la validation des périphériques virtuels, reportez-vous à la section Détection des périphériques utilisés.
Exemple 4-1 Ajout de disques à une configuration ZFS mise en miroir
Dans l'exemple suivant, un autre miroir est ajouté à une configuration ZFS en miroir existante sur un système Oracle Sun Fire x4500.
# zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors # zpool add tank mirror c0t3d0 c1t3d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 mirror-2 ONLINE 0 0 0 c0t3d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors
Exemple 4-2 Ajout de disques à une configuration RAID-Z
De la même façon, vous pouvez ajouter des disques supplémentaires à une configuration RAID-Z. L'exemple suivant illustre la conversion d'un pool de stockage avec un périphérique RAID–Z composé de trois disques en pool de stockage avec deux périphériques RAID-Z composés de trois disques chacun.
# zpool status rzpool pool: rzpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rzpool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 c1t4d0 ONLINE 0 0 0 errors: No known data errors # zpool add rzpool raidz c2t2d0 c2t3d0 c2t4d0 # zpool status rzpool pool: rzpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rzpool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 raidz1-1 ONLINE 0 0 0 c2t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 c2t4d0 ONLINE 0 0 0 errors: No known data errors
Exemple 4-3 Ajout et suppression d'un périphérique de journal mis en miroir
L'exemple ci-dessous illustre l'ajout d'un périphérique de journal mis en miroir à un pool de stockage mis en miroir. Pour plus d'informations sur l'utilisation des périphériques de journal dans votre pool de stockage, reportez-vous à la section Configuration de périphériques de journal ZFS distincts.
# zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 errors: No known data errors # zpool add newpool log mirror c0t6d0 c0t7d0 # zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 logs mirror-1 ONLINE 0 0 0 c0t6d0 ONLINE 0 0 0 c0t7d0 ONLINE 0 0 0 errors: No known data errors
connexion d'un périphérique de journal à un périphérique journal existant afin de créer un périphérique mis en miroir. Cette opération est similaire à la connexion d'un périphérique à un pool de stockage qui n'est pas mis en miroir.
Vous pouvez supprimer les périphériques de journal en utilisant la commande zpool remove. Le périphérique de journal mis en miroir dans l'exemple précédent peut être supprimé en spécifiant l'argument miroir-1. Par exemple :
# zpool remove newpool mirror-1 # zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 errors: No known data errors
Si votre configuration de pool contient un seul périphérique de journal, supprimez-le en saisissant le nom du périphérique. Par exemple :
# zpool status pool pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c0t8d0 ONLINE 0 0 0 c0t9d0 ONLINE 0 0 0 logs c0t10d0 ONLINE 0 0 0 errors: No known data errors # zpool remove pool c0t10d0
Exemple 4-4 Ajout et suppression des périphériques de cache
Vous pouvez les ajouter à votre pool de stockage ZFS et les supprimer s'ils ne sont plus nécessaires.
Utilisez la commande zpool add pour ajouter des périphériques de cache. Par exemple :
# zpool add tank cache c2t5d0 c2t8d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 cache c2t5d0 ONLINE 0 0 0 c2t8d0 ONLINE 0 0 0 errors: No known data errors
Les périphériques de cache ne peuvent pas être mis en miroir ou faire partie d'une configuration RAID-Z.
Utilisez la commande zpool remove pour supprimer des périphériques de cache. Exemple :
# zpool remove tank c2t5d0 c2t8d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 errors: No known data errors
Actuellement, la commande zpool remove prend uniquement en charge la suppression des disques hot spare, des périphériques de journal et des périphériques de cache. Les périphériques faisant partie de la configuration de pool mis en miroir principale peuvent être supprimés à l'aide de la commande zpool detach. Les périphériques non redondants et RAID-Z ne peuvent pas être supprimés d'un pool.
Pour plus d'informations sur l'utilisation des périphériques de cache dans un pool de stockage ZFS, reportez-vous à la section Création d'un pool de stockage ZFS avec des périphériques de cache.
Outre la commande zpool add, vous pouvez utiliser la commande zpool attach pour ajouter un périphérique à un périphérique existant, en miroir ou non.
Si vous connectez un disque pour créer un pool racine mis en miroir, reportez-vous à la section Création d'un pool racine ZFS mis en miroir (post-installation).
Si vous remplacez un disque dans le pool racine ZFS, reportez-vous à la section Remplacement d'un disque dans le pool racine ZFS.
Exemple 4-5 Conversion d'un pool de stockage bidirectionnel mis en miroir en un pool de stockage tridirectionnel mis en miroir
Dans cet exemple, zeepool est un miroir bidirectionnel. Il est converti en un miroir tridirectionnel via la connexion de c2t1d0, le nouveau périphérique, au périphérique existant, c1t1d0.
# zpool status zeepool pool: zeepool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 errors: No known data errors # zpool attach zeepool c1t1d0 c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 12:59:20 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 592K resilvered errors: No known data errors
Si le périphérique existant fait partie d'un miroir tridirectionnel, la connexion d'un nouveau périphérique crée un miroir quadridirectionnel, et ainsi de suite. Dans tous les cas, la resynchronisation du nouveau périphérique commence immédiatement.
Exemple 4-6 Conversion d'un pool de stockage ZFS non redondant en pool de stockage ZFS en miroir
En outre, vous pouvez convertir un pool de stockage non redondant en pool de stockage redondant à l'aide de la commande zpool attach. Exemple :
# zpool create tank c0t1d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 errors: No known data errors # zpool attach tank c0t1d0 c1t1d0 # zpool status tank pool: tank state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 14:28:23 2010 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 73.5K resilvered errors: No known data errors
Vous pouvez utiliser la commande zpool detach pour séparer un périphérique d'un pool de stockage mis en miroir. Exemple :
# zpool detach zeepool c2t1d0
Cependant, en l'absence de répliques de données valides, cette opération échoue. Exemple :
# zpool detach newpool c1t2d0 cannot detach c1t2d0: only applicable to mirror and replacing vdevs
Vous pouvez rapidement cloner un pool de stockage ZFS mis en miroir en tant que pool de sauvegarde avec la commande zpool split.
Cette fonctionnalité ne peut actuellement pas être utilisée pour scinder un pool racine mis en miroir.
Vous pouvez utiliser la commande zpool split pour déconnecter un ou plusieurs disques à partir d'un pool de stockage ZFS mis en miroir afin de créer un pool de stockage avec l'un des disques déconnectés. Le nouveau pool contiendra les mêmes données que le pool de stockage ZFS d'origine mis en miroir.
Par défaut, une opération zpool split sur un pool mis en miroir déconnecte le dernier disque du nouveau pool. Une fois l'opération de scission terminée, importez le nouveau pool. Par exemple :
# zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors # zpool split tank tank2 # zpool import tank2 # zpool status tank tank2 pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 errors: No known data errors pool: tank2 state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank2 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors
Vous pouvez identifier le disque à utiliser par le nouveau pool en le définissant avec la commande zpool split. Exemple :
# zpool split tank tank2 c1t0d0
Avant l'opération de scission, les données de la mémoire sont vidées vers les disques mis en miroir. Une fois les données vidées, le disque est déconnecté du pool et reçoit un nouveau GUID de pool. Un pool GUID est généré pour que le pool puisse être importé sur le même système que celui sur lequel il a été scindé.
Si le pool à scinder possède des points de montage de jeu de données autres que celui par défaut et si le nouveau pool est créé sur le même système, utilisez l'option zpool split -R pour identifier un autre répertoire racine pour le nouveau pool afin d'éviter tout conflit entre les points de montage existants. Par exemple :
# zpool split -R /tank2 tank tank2
Si vous n'utilisez pas l'option zpool split -R et si des points de montage entrent en conflit lorsque vous tentez d'importer le nouveau pool, importez celui-ci à l'aide de l'option -R. Si le nouveau pool est créé sur un autre système, il n'est pas nécessaire de spécifier un autre répertoire racine, sauf en cas de conflits entre les points de montage.
Avant d'utiliser la fonctionnalité zpool split, veuillez prendre en compte les points suivants :
Cette fonction n'est pas disponible dans une configuration RAID-Z ou un pool non redondant composé de plusieurs disques.
Avant de tenter une opération zpool split, les opérations des données et des applications doivent être suspendues.
Si vous voulez que les disques effectuent les opérations demandées et qu'ils ne les ignorent pas, la commande de mise en cache des enregistrements de vidage des disques est importante.
Vous ne pouvez pas scinder un pool si une réargenture est en cours.
Lorsqu'un pool mis en miroir est composé de deux à trois disques et que le dernier disque du pool d'origine est utilisé pour le nouveau pool créé, la meilleure solution consiste à scinder le pool mis en miroir. Vous pouvez ensuite utiliser la commande zpool attach pour recréer votre pool de stockage d'origine mis en miroir ou convertir votre nouveau pool dans un pool de stockage mis en miroir. Il n'existe actuellement aucun moyen de créer un nouveau pool mis en miroir à partir d'un pool mis en miroir existant à l'aide de cette fonction.
Si le pool existant est un miroir tri-directionnel, le nouveau pool contiendra un disque après l'opération de scission. Si le pool existant est un miroir bi-directionnel composé de deux disques, cela donne deux pools non redondants composés de deux disques. Vous devez connecter deux disques supplémentaires pour convertir les pools non redondants en pools mis en miroir.
Pour conserver vos données redondantes lors d'une scission, scindez un pool de stockage mis en miroir composé de trois disques pour que le pool d'origine soit composé de deux disques mis en miroir après la scission.
Exemple 4-7 Scission d'un pool ZFS mis en miroir
Dans l'exemple suivant, un pool de stockage mis en miroir nommé trinity et contenant trois disques (c1t0d0, c1t2d0 et c1t3d0) est scindé. Les deux pools correspondants sont le pool mis en miroir trinity contenant les disques c1t0d0 et c1t2d0 et le nouveau pool neo contenant le disque c1t3d0. Chaque pool contient les mêmes données.
# zpool status trinity pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors # zpool split trinity neo # zpool import neo # zpool status trinity neo pool: neo state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM neo ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors
ZFS permet la mise en ligne ou hors ligne de périphériques. Lorsque le matériel n'est pas fiable ou fonctionne mal, ZFS continue de lire ou d'écrire les données dans le périphérique en partant du principe que le problème est temporaire. Dans le cas contraire, vous pouvez indiquer à ZFS d'ignorer le périphérique en le mettant hors ligne. Le système de fichiers ZFS n'envoie aucune demande à un périphérique déconnecté.
Remarque - Il est inutile de mettre les périphériques hors ligne pour les remplacer.
La commande zpool offline permet de mettre un périphérique hors ligne. Vous pouvez spécifier le périphérique via son chemin ou via son nom abrégé s'il s'agit d'un disque. Exemple :
# zpool offline tank c1t0d0 bringing device c1t0d0 offline
Lors de la déconnexion d'un périphérique, veuillez prendre en compte les points suivants :
Vous ne pouvez pas mettre un périphérique hors ligne au point où il devient défaillant. Vous ne pouvez par exemple pas mettre hors ligne deux périphériques d'une configuration raid-z1, ni ne pouvez mettre hors ligne un périphérique virtuel de niveau supérieur.
# zpool offline tank c1t0d0 cannot offline c1t0d0: no valid replicas
Par défaut, l'état OFFLINE est persistant. Le périphérique reste hors ligne lors du redémarrage du système.
Pour mettre un périphérique hors ligne temporairement, utilisez l'option -t de la commande zpool offline. Exemple :
# zpool offline -t tank c1t0d0 bringing device 'c1t0d0' offline
En cas de réinitialisation du système, ce périphérique revient automatiquement à l'état ONLINE.
Lorsqu'un périphérique est mis hors ligne, il n'est pas séparé du pool de stockage. En cas de tentative d'utilisation du périphérique hors ligne dans un autre pool, même en cas de destruction du pool d'origine, un message similaire au suivant s'affiche :
device is part of exported or potentially active ZFS pool. Please see zpool(1M)
Si vous souhaitez utiliser le périphérique hors ligne dans un autre pool de stockage après destruction du pool de stockage d'origine, remettez le périphérique en ligne puis détruisez le pool de stockage d'origine.
Une autre mode d'utilisation d'un périphérique provenant d'un autre pool de stockage si vous souhaitez conserver le pool de stockage d'origine consiste à remplacer le périphérique existant dans le pool de stockage d'origine par un autre périphérique similaire. Pour obtenir des informations sur le remplacement de périphériques, reportez-vous à la section Remplacement de périphériques dans un pool de stockage.
Les périphériques mis hors ligne s'affichent dans l'état OFFLINE en cas de requête de l'état de pool. Pour obtenir des informations sur les requêtes d'état de pool, reportez-vous à la section Requête d'état de pool de stockage ZFS.
Pour de plus amples informations sur la maintenance des périphériques, reportez-vous à la section Détermination de l'état de maintenance des pools de stockage ZFS.
Lorsqu'un périphérique est mis hors ligne, il peut être restauré grâce à la commande zpool online. Exemple :
# zpool online tank c1t0d0 bringing device c1t0d0 online
Lorsqu'un périphérique est mis en ligne, toute donnée écrite dans le pool est resynchronisée sur le périphérique nouvellement disponible. Notez que vous ne pouvez pas utiliser la mise en ligne d'un périphérique pour remplacer un disque. Si vous mettez un périphérique hors ligne, le remplacez, puis tentez de le mettre en ligne, son état continue à indiquer qu'il est défaillant.
Si vous tentez de mettre un périphérique défaillant en ligne, un message similaire au suivant s'affiche :
# zpool online tank c1t0d0 warning: device 'c1t0d0' onlined, but remains in faulted state use 'zpool replace' to replace devices that are no longer present
Vous pouvez également afficher les messages de disques erronés dans la console ou les messages enregistrés dans le fichier /var/adm/messages. Exemple :
SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Wed Jun 30 14:53:39 MDT 2010 PLATFORM: SUNW,Sun-Fire-880, CSN: -, HOSTNAME: neo SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: 504a1188-b270-4ab0-af4e-8a77680576b8 DESC: A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information. AUTO-RESPONSE: No automated response will occur. IMPACT: Fault tolerance of the pool may be compromised. REC-ACTION: Run 'zpool status -x' and replace the bad device.
Pour obtenir des informations sur le remplacement d'un périphérique défaillant, reportez-vous à la section Réparation d'un périphérique manquant.
Vous pouvez utiliser la commande zpool online -e pour développer la taille du pool si un plus grand disque a été associé au pool ou si un petit disque a été remplacé par un plus grand disque. Par défaut, un disque ajouté à un pool n'est pas étendu à sa taille maximale, à moins que la propriété autoexpand du pool ne soit activée. Vous pouvez étendre automatiquement le pool en utilisant la commande zpool online -e, même si le disque de remplacement est déjà en ligne ou s'il est actuellement hors ligne. Par exemple :
# zpool online -e tank c1t13d0
Si un périphérique est mis hors ligne en raison d'une défaillance qui entraîne l'affichage d'erreurs dans la sortie zpool status, la commande zpool clear permet d'effacer les nombres d'erreurs.
Si elle est spécifiée sans argument, cette commande efface toutes les erreurs de périphérique dans le pool. Exemple :
# zpool clear tank
Si un ou plusieurs périphériques sont spécifiés, cette commande n'efface que les erreurs associées aux périphériques spécifiés. Exemple :
# zpool clear tank c1t0d0
Pour de plus amples informations sur l'effacement d'erreurs de zpool reportez-vous à la section Suppression des erreurs transitoires.
Vous pouvez remplacer un périphérique dans un pool de stockage à l'aide de la commande zpool replace.
Pour remplacer physiquement un périphérique par un autre, en conservant le même emplacement dans le pool redondant, il vous suffit alors d'identifier le périphérique remplacé. Sur certains matériels, ZFS reconnaît que le périphérique est un disque différent au même emplacement. Par exemple, pour remplacer un disque défaillant (c1t1d0), supprimez-le, puis ajoutez le disque de rechange au même emplacement, à l'aide de la syntaxe suivante :
# zpool replace tank c1t1d0
Si vous remplacez un périphérique dans un pool de stockage par un disque dans un autre emplacement physique, vous devez spécifier les deux périphériques. Par exemple :
# zpool replace tank c1t1d0 c1t2d0
Si vous remplacez un disque dans le pool racine ZFS, reportez-vous à la section Remplacement d'un disque dans le pool racine ZFS.
Voici les étapes de base pour remplacer un disque :
Le cas échéant, mettez le disque hors ligne à l'aide de la commande zpool offline.
Enlevez le disque à remplacer.
Insérez le disque de remplacement.
Exécutez la commande zpool replace. Exemple :
# zpool replace tank c1t1d0
Remettez le disque en ligne à l'aide de la commande zpool online.
Sur certains systèmes, notamment Oracle Sun Fire , vous devez annuler la configuration d'un disque avant de pouvoir le mettre hors ligne. Si vous remplacez un disque dans le même emplacement sur ce système, vous pouvez exécuter la commande zpool replace comme décrit dans le premier exemple de cette section.
Pour obtenir un exemple de remplacement d'un disque sur un système Sun Fire X4500, reportez-vous à l'Exemple 11-1.
Lorsque vous remplacez des périphériques dans un pool de stockage ZFS, veuillez prendre en compte les points suivants :
Si vous définissez la propriété de pool autoreplace sur on, tout nouveau périphérique détecté au même emplacement physique qu'un périphérique appartenant précédemment au pool est automatiquement formaté et remplacé. Lorsque cette propriété est activée, vous n'êtes pas obligé d'utiliser la commande zpool replace. Cette fonction n'est pas disponible sur tous les types de matériel.
La taille du périphérique de remplacement doit être égale ou supérieure au disque le plus petit d'une configuration RAID-Z ou mise en miroir.
Lorsqu'un périphérique de remplacement dont la taille est supérieure à la taille du périphérique qu'il remplace est ajouté à un pool, ce dernier n'est pas automatiquement étendu à sa taille maximale. La valeur de propriété autoexpand du pool détermine si le pool est développé lorsqu'un plus grand disque est ajouté au pool. Par défaut, la propriété autoexpand est désactivée. Vous pouvez activer cette propriété pour augmenter la taille du pool avant ou après avoir ajouté le plus grand disque au pool.
Dans l'exemple suivant, deux disques de 16 Go d'un pool mis en miroir sont remplacés par deux disques de 72 Go. La propriété autoexpand est activée après le remplacement du disque pour étendre le disque à sa taille maximale.
# zpool create pool mirror c1t16d0 c1t17d0 # zpool status pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t16d0 ONLINE 0 0 0 c1t17d0 ONLINE 0 0 0 zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 76.5K 16.7G 0% ONLINE - # zpool replace pool c1t16d0 c1t1d0 # zpool replace pool c1t17d0 c1t2d0 # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 88.5K 16.7G 0% ONLINE - # zpool set autoexpand=on pool # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 68.2G 117K 68.2G 0% ONLINE -
Le remplacement d'un grand nombre de disques dans un pool volumineux prend du temps, en raison de la resynchronisation des données sur les nouveaux disques. En outre, il peut s'avérer utile d'exécuter la commande zpool scrub entre chaque remplacement de disque afin de garantir le fonctionnement des périphériques de remplacement et l'exactitude des données écrites.
Si un disque défectueux a été remplacé automatiquement par un disque hot spare, il se peut que vous deviez déconnecter le disque hot spare une fois le disque défectueux remplacé. Vous pouvez utiliser la commande zpool detach pour déconnecter le disque hot spare d'un pool RAID-Z ou mis en miroir. Pour plus d'informations sur la déconnexion d'un disque hot spare, reportez-vous à la section Activation et désactivation de disque hot spare dans le pool de stockage.
Pour plus d'informations sur le remplacement de périphériques, reportez-vous aux sections Réparation d'un périphérique manquant et Remplacement ou réparation d'un périphérique endommagé .
La fonction de disque hot spare permet d'identifier les disques utilisables pour remplacer un périphérique défaillant dans un ou plusieurs pools de stockage. Un périphérique désigné en tant que disque hot spare n'est pas actif dans un pool, mais en cas d'échec d'un périphérique actif du pool, le disque hot spare le remplace automatiquement
Pour désigner des périphériques en tant que disques hot spare, vous avez le choix entre les méthodes suivantes :
lors de la création du pool à l'aide de la commande zpool create ;
après la création du pool à l'aide de la commande zpool create.
L'exemple suivant explique comment désigner des périphériques en tant que disques hot spare lorsque le pool est créé :
# zpool create trinity mirror c1t1d0 c2t1d0 spare c1t2d0 c2t2d0 # zpool status trinity pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c1t2d0 AVAIL c2t2d0 AVAIL errors: No known data errors
L'exemple suivant explique comment désigner des disques hot spare en les ajoutant à un pool après la création du pool :
# zpool add neo spare c5t3d0 c6t3d0 # zpool status neo pool: neo state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM neo ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c3t3d0 ONLINE 0 0 0 c4t3d0 ONLINE 0 0 0 spares c5t3d0 AVAIL c6t3d0 AVAIL errors: No known data errors
Vous pouvez supprimer les disques hot spare d'un pool de stockage à l'aide de la commande zpool remove. Exemple :
# zpool remove zeepool c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c1t3d0 AVAIL errors: No known data errors
Vous ne pouvez pas supprimer un disque hot spare si ce dernier est actuellement utilisé par un pool de stockage.
Lorsque vous utilisez des disques hot spare ZFS, veuillez prendre en compte les points suivants :
Actuellement, la commande zpool remove ne peut être utilisée que pour la suppression de disques hot spare, de périphériques de journal et de périphériques de cache.
Pour ajouter un disque en tant que disque hot spare, la taille du disque hot spare doit être égale ou supérieure à la taille du plus grand disque du pool. L'ajout d'un disque de rechange plus petit dans le pool est autorisé. Toutefois, lorsque le plus petit disque de rechange est activé, automatiquement ou via la commande zpool replace, l'opération échoue et une erreur du type suivant s'affiche :
cannot replace disk3 with disk4: device is too small
Les disques hot spare s'activent des façons suivantes :
Remplacement manuel : remplacez un périphérique défaillant dans un pool de stockage par un disque hot spare à l'aide de la commande zpool replace.
Remplacement automatique : en cas de détection d'une défaillance, un agent FMA examine le pool pour déterminer s'il y a des disques hot spare. Dans ce cas, le périphérique défaillant est remplacé par un disque hot spare disponible.
En cas de défaillance d'un disque hot spare en cours d'utilisation, l'agent FMA sépare le disque hot spare et annule ainsi le remplacement. L'agent tente ensuite de remplacer le périphérique par un autre disque hot spare s'il y en a un de disponible. Cette fonction est actuellement limitée par le fait que le moteur de diagnostics ZFS ne génère des défaillances qu'en cas de disparition d'un périphérique du système.
Si vous remplacez physiquement un périphérique défaillant par un disque spare actif, vous pouvez réactiver le périphérique original en utilisant la commande zpool detach pour déconnecter le disque spare. Si vous définissez la propriété de pool autoreplace sur on, le disque spare est automatiquement déconnecté et retourne au pool de disques spare lorsque le nouveau périphérique est inséré et que l'opération en ligne s'achève.
La commande zpool replace permet de remplacer manuellement un périphérique par un disque hot spare. Reportez-vous à l'Exemple 4-8.
Tout périphérique défaillant est remplacé automatiquement si un disque hot spare est disponible. Exemple :
# zpool status -x pool: zeepool state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: resilver completed after 0h0m with 0 errors on Mon Jan 11 10:20:35 2010 config: NAME STATE READ WRITE CKSUM zeepool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 DEGRADED 0 0 0 c2t1d0 UNAVAIL 0 0 0 cannot open c2t3d0 ONLINE 0 0 0 88.5K resilvered spares c2t3d0 INUSE currently in use errors: No known data errors
Vous pouvez actuellement désactiver un disque hot spare en ayant recourant à l'une des méthodes suivantes :
en supprimant le disque hot spare du pool de stockage ;
en déconnectant le disque hot spare après avoir remplacé physiquement un disque défectueux ; Reportez-vous à l'Exemple 4-9.
en swappant de manière temporaire ou permanente les données vers le disque hot spare ; Reportez-vous à l'Exemple 4-10.
Exemple 4-8 en remplaçant manuellement un disque par un disque hot spare.
Dans cet exemple, la commande zpool replace est utilisée pour remplacer le disque c2t1d0 par un disque hot spare c2t3d0.
# zpool replace zeepool c2t1d0 c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered spares c2t3d0 INUSE currently in use errors: No known data errors
Déconnectez ensuite le disque c2t1d0.
# zpool detach zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered errors: No known data errors
Exemple 4-9 Déconnexion d'un disque hot spare après le remplacement du disque défectueux
Dans cet exemple, le disque défectueux (c2t1d0) est remplacé physiquement et ZFS est averti à l'aide de la commande zpool replace.
# zpool replace zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:08:44 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered c2t1d0 ONLINE 0 0 0 spares c2t3d0 INUSE currently in use errors: No known data errors
Vous pouvez ensuite utiliser la commande zpool detach pour retourner le disque hot spare au pool de disques hot spare. Exemple :
# zpool detach zeepool c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed with 0 errors on Wed Jan 20 10:08:44 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c2t3d0 AVAIL errors: No known data errors
Exemple 4-10 Déconnexion d'un disque défectueux et utilisation d'un disque hot spare
Si vous souhaitez remplacer un disque défectueux par un swap temporaire ou permanent dans le disque hot spare qui le remplace actuellement, vous devez déconnecter le disque d'origine (défectueux). Si le disque défectueux finit par être remplacé, vous pouvez l'ajouter de nouveau au groupe de stockage en tant que disque hot spare. Exemple :
# zpool status zeepool pool: zeepool state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: resilver in progress for 0h0m, 70.47% done, 0h0m to go config: NAME STATE READ WRITE CKSUM zeepool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 DEGRADED 0 0 0 c2t1d0 UNAVAIL 0 0 0 cannot open c2t3d0 ONLINE 0 0 0 70.5M resilvered spares c2t3d0 INUSE currently in use errors: No known data errors # zpool detach zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:46:46 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 70.5M resilvered errors: No known data errors (Original failed disk c2t1d0 is physically replaced) # zpool add zeepool spare c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:48:46 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 70.5M resilvered spares c2t1d0 AVAIL errors: No known data errors