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.
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 |
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 |
L'exemple suivant illustre l'ajout d'un périphérique de journal en miroir à un pool de stockage en miroir.Pour plus d'informations sur l'utilisation de 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.
Les périphériques de journal peuvent être supprimés à l'aide de 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. 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 la configuration de votre pool contient uniquement un périphérique de journal, vous devez le supprimer en spécifiant le nom de ce dernier. 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 |
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 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.
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.
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 les 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. 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 ne contient aucun point de montage de jeu de données par défaut et que le nouveau pool est créé sur le même système, vous devrez utiliser 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 le cas échéant. Exemple :
# zpool split -R /tank2 tank tank2 |
Si vous n'utilisez pas l'option zpool split -R et que 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, vous ne devez pas 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 dans lesquels 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 des pools mis en miroir existants en utilisant 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 après la scission.
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é.
Il est inutile de mettre les périphériques hors ligne pour les remplacer.
Vous pouvez utiliser la commande zpool offline pour déconnecter temporairement le stockage. Par exemple, si vous devez déconnecter physiquement une baie d'un jeu de commutateurs Fibre Channel et la connecter à un autre jeu, vous pouvez mettre les LUN hors ligne dans la baie utilisée dans les pools de stockage ZFS. Une fois la baie reconnectée et opérationnelle sur le nouveau jeu de commutateurs, vous pouvez mettre les mêmes LUN en ligne. La resynchronisation des données ajoutées aux pools de stockage alors que les LUN étaient hors ligne s'effectue sur les LUN, une fois ceux-ci en ligne.
Ce scénario est possible si les systèmes en question ont accès au stockage une fois qu'il est connecté aux nouveaux commutateurs, éventuellement par le biais de contrôleurs différents, et si les pools sont définis en tant que configurations RAID-Z ou en miroir.
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 étendre un LUN. Par défaut, un LUN 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 LUN en utilisant la commande zpool online -e, même si le LUN est déjà en ligne ou s'il est actuellement hors ligne. 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é. Le système de fichiers ZFS reconnaît que le périphérique est un disque différent dans le même emplacement d'un composant matériel. 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. 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 sur Sun Fire x4500, 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 la propriété autoexpand du pool détermine si un LUN de remplacement est étendu à sa taille maximale lorsque le 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 LUN avant ou après avoir ajouté le plus grand LUN 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 LUN à 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é. 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.
Les périphériques hot spare peuvent être partagés entre plusieurs pools. Cependant, ils ne peuvent pas être partagés entre plusieurs pools sur plusieurs systèmes.
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.
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 |
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 |
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 |