Guide d'administration Oracle Solaris ZFS

Création et destruction de pools de stockage ZFS

Les sections suivantes illustrent différents scénarios de création et de destruction de pools de stockage ZFS :

La création et la destruction de pools est rapide et facile. Cependant, ces opérations doivent être réalisées avec prudence. Des vérifications sont effectuées pour éviter une utilisation de périphériques déjà utilisés dans un nouveau pool, mais ZFS n'est pas systématiquement en mesure de savoir si un périphérique est déjà en cours d'utilisation. Il est plus facile de détruire un pool que d'en créer un. Utilisez la commande zpool destroy avec précaution. L'exécution de cette commande simple a des conséquences considérables.

Création d'un pool de stockage ZFS

Pour créer un pool de stockage, exécutez la commande zpool create. Cette commande prend un nom de pool et un nombre illimité de périphériques virtuels en tant qu'arguments. Le nom de pool doit se conformer aux conventions d'attribution de noms décrites à la section Exigences d'attribution de noms de composants ZFS.

Création d'un pool de stockage de base

La commande suivante crée un pool appelé tank et composé des disques c1t0d0 et c1t1d0:


# zpool create tank c1t0d0 c1t1d0

Ces noms de périphériques représentant les disques entiers se trouvent dans le répertoire /dev/dsk et ont été étiquetés de façon adéquate par ZFS afin de contenir une tranche unique de grande taille. Les données sont entrelacées de façon dynamique sur les deux disques.

Création d'un pool de stockage mis en miroir

Pour créer un pool mis en miroir, utilisez le mot-clé mirror suivi du nombre de périphériques de stockage que doit contenir le miroir. Pour spécifier plusieurs miroirs, répétez le mot-clé mirror dans la ligne de commande. La commande suivante crée un pool avec deux miroirs bidirectionnels :


# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0

Le second mot-clé mirror indique qu'un nouveau périphérique virtuel de niveau supérieur est spécifié. Les données sont dynamiquement entrelacées sur les deux miroirs, ce qui les rend redondantes sur chaque disque.

Pour plus d'informations sur les configurations mises en miroir recommandées, consultez le site suivant :

http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide

Actuellement, les opérations suivantes sont prises en charge dans une configuration ZFS en miroir :

Vous ne pouvez pas forcer la suppression d'un périphérique qui n'est pas un périphérique de journal ni de cache d'un pool de stockage mis en miroir. Cette fonction fait l'objet d'une demande d'amélioration.

Création d'un pool racine ZFS

Vous pouvez installer et initialiser un système de fichiers racine ZFS. Vérifiez les informations de configuration du pool racine :

Pour plus d'informations sur l'installation et l'initialisation d'un système de fichiers racine ZFS, reportez-vous Chapitre 5Installation et initialisation d'un système de fichiers racine Oracle Solaris ZFS.

Création d'un pool de stockage RAID-Z

La création d'un pool RAID-Z à parité simple est identique à celle d'un pool mis en miroir, à la seule différence que le mot-clé raidz ou raidz1 est utilisé à la place du mot-clé mirror. Les exemples suivants illustrent la création d'un pool avec un périphérique RAID-Z unique composé de cinq disques :


# zpool create tank raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 /dev/dsk/c5t0d0

Cet exemple montre que les disques peuvent être spécifiés à l'aide de leurs noms de périphérique abrégés ou complets. Les deux éléments /dev/dsk/c5t0d0 et c5t0d0 font référence au même disque.

Vous pouvez créer une configuration RAID-Z à double ou à triple parité à l'aide du mot-clé raidz2 ou raidz3 lors de la création du pool. Par exemple :


# zpool create tank raidz2 c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0
# zpool status -v tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz2-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c3t0d0  ONLINE       0     0     0
            c4t0d0  ONLINE       0     0     0
            c5t0d0  ONLINE       0     0     0

errors: No known data errors

# zpool create tank raidz3 c0t0d0 c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0
# zpool status -v tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz3-0  ONLINE       0     0     0
            c0t0d0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c3t0d0  ONLINE       0     0     0
            c4t0d0  ONLINE       0     0     0
            c5t0d0  ONLINE       0     0     0
            c6t0d0  ONLINE       0     0     0
            c7t0d0  ONLINE       0     0     0

errors: No known data errors

Actuellement, les opérations suivantes sont prises en charge dans une configuration RAID-Z ZFS :

Actuellement, les opérations suivantes ne sont pas prises en charge dans une configuration RAID-Z :

Pour obtenir des informations supplémentaire, reportez-vous à la section Configuration de pool de stockage RAID-Z.

Création d'un pool de stockage ZFS avec des périphériques de journal

Par défaut, le ZIL est attribué à partir de blocs dans le pool principal. Il est cependant possible d'obtenir de meilleures performances en utilisant des périphériques de journalisation d'intention distincts, notamment une NVRAM ou un disque dédié. Pour plus d'informations sur les périphériques de journal ZFS, reportez-vous à la section Configuration de périphériques de journal ZFS distincts.

Vous pouvez installer un périphérique de journalisation ZFS au moment de la création du pool de stockage ou après sa création.

L'exemple suivant explique comment créer un pool de stockage mis en miroir contenant des périphériques de journal mis en miroir :


# zpool create datap mirror c1t1d0 c1t2d0 mirror c1t3d0 c1t4d0 log mirror c1t5d0 c1t8d0
# zpool status datap
  pool: datap
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        datap       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0
            c1t4d0  ONLINE       0     0     0
        logs
          mirror-2  ONLINE       0     0     0
            c1t5d0  ONLINE       0     0     0
            c1t8d0  ONLINE       0     0     0

errors: No known data errors

Pour plus d'informations sur la récupération suite à une défaillance de périphérique de journal, reportez-vous à l'Exemple 11–2.

Création d'un pool de stockage ZFS avec des périphériques de cache

Vous pouvez créer un pool de stockage avec des périphériques de cache afin de mettre en cache des données de pool de stockage. Par exemple :


# zpool create tank mirror c2t0d0 c2t1d0 c2t3d0 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

Prenez en compte les points suivants lorsque vous envisagez de créer 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

Chaque pool de stockage contient un ou plusieurs périphériques virtuels. Un périphérique virtuel est une représentation interne du pool de stockage qui décrit la disposition du stockage physique et les caractéristiques par défaut du pool de stockage. Ainsi, un périphérique virtuel représente les périphériques de disque ou les fichiers utilisés pour créer le pool de stockage. Un pool peut contenir un nombre quelconque de périphériques virtuels dans le niveau supérieur de la configuration. Ces périphériques sont appelés top-level vdev.

Si le périphérique virtuel de niveau supérieur contient deux ou plusieurs périphériques physiques, la configuration assure la redondance des données en tant que périphériques virtuels RAID-Z ou miroir. Ces périphériques virtuels se composent de disques, de tranches de disques ou de fichiers. Un disque de rechange (spare) est un périphérique virtuel spécial qui effectue le suivi des disques hot spare disponibles d'un pool.

L'exemple suivant illustre la création d'un pool composé de deux périphériques virtuels de niveau supérieur, chacun étant un miroir de deux disques :


# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0

L'exemple suivant illustre la création d'un pool composé d'un périphérique virtuel de niveau supérieur de quatre disques :


# zpool create mypool raidz2 c1d0 c2d0 c3d0 c4d0

Vous pouvez ajouter un autre périphérique virtuel de niveau supérieur à ce pool en utilisant la commande zpool add. Exemple :


# zpool add mypool raidz2 c2d1 c3d1 c4d1 c5d1

Les disques, tranches de disque ou fichiers utilisés dans des pools non redondants fonctionnent en tant que périphériques virtuels de niveau supérieur. Les pools de stockage contiennent en règle générale plusieurs périphériques virtuels de niveau supérieur. ZFS entrelace automatiquement les données entre l'ensemble des périphériques virtuels de niveau supérieur dans un pool.

Les périphériques virtuels et les périphériques physiques contenus dans un pool de stockage ZFS s'affichent avec la commande zpool status. 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
            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

Gestion d'erreurs de création de pools de stockage ZFS

Les erreurs de création de pool peuvent se produire pour de nombreuses raisons. Certaines raisons sont évidentes, par exemple lorsqu'un périphérique spécifié n'existe pas, mais d'autres le sont moins.

Détection des périphériques utilisés

Avant de formater un périphérique, ZFS vérifie que le disque n'est pas utilisé par ZFS ou une autre partie du système d'exploitation. Si le disque est en cours d'utilisation, les erreurs suivantes peuvent se produire :


# zpool create tank c1t0d0 c1t1d0
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c1t0d0s0 is currently mounted on /. Please see umount(1M).
/dev/dsk/c1t0d0s1 is currently mounted on swap. Please see swap(1M).
/dev/dsk/c1t1d0s0 is part of active ZFS pool zeepool. Please see zpool(1M).

Certaines erreurs peuvent être ignorées à l'aide de l'option -f, mais pas toutes. Les conditions suivantes ne peuvent pas à être ignorées via l'option - f et doivent être corrigées manuellement :

Système de fichiers monté

Le disque ou une de ses tranches contient un système de fichiers actuellement monté. La commande umount permet de corriger cette erreur.

Système de fichiers dans /etc/vfstab

Le disque contient un système de fichiers répertorié dans le fichier /etc/vfstab, mais le système de fichiers n'est pas monté. Pour corriger cette erreur, supprimez ou commentez la ligne dans le fichier /etc/vfstab.

Périphérique de vidage dédié

Le disque est utilisé en tant que périphérique de vidage dédié pour le système. La commande dumpadm permet de corriger cette erreur.

Elément d'un pool ZFS

Le disque ou fichier fait partie d'un pool de stockage ZFS. Pour corriger cette erreur, utilisez la commande zpool destroy afin de détruire l'autre pool s'il est obsolète. Utilisez sinon la commande zpool detach pour déconnecter le disque de l'autre pool. Vous pouvez déconnecter un disque que s'il est connecté à un pool de stockage mis en miroir.

Les vérifications en cours d'utilisation suivantes constituent des avertissements. Pour les ignorer, appliquez l'option -f afin de créer le pool :

Contient un système de fichiers

Le disque contient un système de fichiers connu bien qu'il ne soir pas monté et n'apparaisse pas comme étant en cours d'utilisation.

Elément d'un volume

Le disque fait partie d'un volume Solaris Volume Manager.

Live upgrade

Le disque est en cours d'utilisation en tant qu'environnement d'initialisation de remplacement pour Oracle Solaris Live Upgrade.

Elément d'un pool ZFS exporté

Le disque fait partie d'un pool de stockage exporté ou supprimé manuellement d'un système. Dans le deuxième cas, le pool est signalé comme étant potentiellement actif, dans la mesure où il peut s'agir d'un disque connecté au réseau en cours d'utilisation par un autre système. Faites attention lorsque vous ignorez un pool potentiellement activé.

L'exemple suivant illustre l'utilisation de l'option -f :


# zpool create tank c1t0d0
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c1t0d0s0 contains a ufs filesystem.
# zpool create -f tank c1t0d0

Si possible, corrigez les erreurs au lieu d'utiliser l'option -f pour les ignorer.

Niveaux de réplication incohérents

Il est déconseillé de créer des pools avec des périphériques virtuels de niveau de réplication différents. La commande zpool tente de vous empêcher de créer par inadvertance un pool comprenant des niveaux de redondance différents. Si vous tentez de créer un pool avec un telle configuration, les erreurs suivantes s'affichent :


# zpool create tank c1t0d0 mirror c2t0d0 c3t0d0
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: both disk and mirror vdevs are present
# zpool create tank mirror c1t0d0 c2t0d0 mirror c3t0d0 c4t0d0 c5t0d0
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: 2-way mirror and 3-way mirror vdevs are present

Vous pouvez ignorer ces erreurs avec l'option -f. Toutefois, cette pratique est déconseillée. La commande affiche également un avertissement relatif à la création d'un pool RAID-Z ou mis en miroir à l'aide de périphériques de tailles différentes. Même si cette configuration est autorisée, les niveaux de redondance sont incohérents. Par conséquent, l'espace disque du périphérique de plus grande taille n'est pas utilisé. Vous devez spécifier l'option -f pour ignorer l'avertissement.

Réalisation d'un test à la création d'un pool de stockage

Les tentatives de création d'un pool peuvent échouer soudainement de plusieurs façons ; vous pouvez formater les disques, mais cela peut avoir des conséquences négatives. C'est pourquoi la commande zpool create dispose d'une option supplémentaire, à savoir l'option -n, qui simule la création du pool sans écrire les données sur le périphérique. Cette option de test vérifie le périphérique en cours d'utilisation et valide le niveau de réplication, puis répertorie les erreurs survenues au cours du processus. Si aucune erreur n'est détectée, la sortie est similaire à la suivante :


# zpool create -n tank mirror c1t0d0 c1t1d0
would create 'tank' with the following layout:

        tank
          mirror
            c1t0d0
            c1t1d0

Certaines erreurs sont impossibles à détecter sans création effective du pool. L'exemple le plus courant consiste à spécifier le même périphérique deux fois dans la même configuration. Cette erreur ne peut pas être détectée de façon fiable sans l'enregistrement effectif des données. Par conséquent, la commande zpool create -n peut indiquer que l'opération a réussi sans pour autant parvenir à créer le pool, lors de son exécution sans cette option.

Point de montage par défaut pour les pools de stockage

Lors de la création d'un pool, le point de montage par défaut du jeu de données de niveau supérieur est /pool-name. Le répertoire doit être inexistant ou vide. Le répertoire est créé automatiquement s'il n'existe pas. Si le répertoire est vide, le jeu de données racine est monté sur le répertoire existant. Pour créer un pool avec un point de montage par défaut différent, utilisez l'option - m de la commande zpool create : Par exemple :


# zpool create home c1t0d0
default mountpoint '/home' exists and is not empty
use '-m' option to provide a different default
# zpool create -m /export/zfs home c1t0d0

Cette commande crée le pool home et le jeu de données home avec le point de montage /export/zfs.

Pour de plus amples informations sur les points de montage, reportez-vous à la section Gestion des points de montage ZFS.

Destruction de pools de stockage ZFS

La commande zpool destroy permet de détruire les pools. Cette commande détruit le pool même s'il contient des jeux de données montés.


# zpool destroy tank

Attention – Attention –

Faites très attention lorsque vous détruisez un pool. Assurez-vous de détruire le pool souhaité et de toujours disposer de copies de vos données. En cas de destruction accidentelle d'un pool, vous pouvez tenter de le récupérer. Pour obtenir des informations supplémentaires, reportez-vous à la section Récupération de pools de stockage ZFS détruits.


Destruction d'un pool avec des périphériques défaillants

La destruction d'un pool requiert l'écriture des données sur le disque pour indiquer que le pool n'est désormais plus valide. Ces informations d'état évitent que les périphériques ne s'affichent en tant que pool potentiel lorsque vous effectuez une importation. La destruction du pool est tout de même possible si un ou plusieurs périphériques ne sont pas disponibles. Cependant, les informations d'état requises ne sont pas écrites sur ces périphériques indisponibles.

Ces périphériques, lorsqu'ils sont correctement réparés, sont signalés comme potentiellement actifs, lors de la création d'un pool. Lorsque vous recherchez des pools à importer, ils s'affichent en tant que périphériques valides. Si un pool a tant de périphérique défaillants que le pool lui-même est défaillant (en d'autres termes, un périphérique virtuel de niveau supérieur est défaillant), alors la commande émet un avertissement et ne peut pas s'exécuter sans l'option -f. Cette option est requise car l'ouverture du pool est impossible et il est impossible de savoir si des données y sont stockées. Exemple :


# zpool destroy tank
cannot destroy 'tank': pool is faulted
use '-f' to force destruction anyway
# zpool destroy -f tank

Pour de plus amples informations sur les pools et la maintenance des périphériques, reportez-vous à la section Détermination de l'état de maintenance des pools de stockage ZFS.

Pour de plus amples informations sur l'importation de pools, reportez-vous à la section Importation de pools de stockage ZFS.