Solaris Volume Manager SDS SVM

De Le Wiki de Bibiche Solaris Sun Sparc Veritas San Nas Svm Sds Vxfs Vxvm Vmware Zone LiveUpgrade Cfengine OcsInventory Flar Pool Jumpstart Zfs
Aller à : navigation, rechercher

Solaris Volume Manager sous Solaris 10 (Vol 1)

- 3 databases minimum.

- Nécessaire pour booter au minimum : la moitié + 1 db ( notre paramétrable ds /etc/system )

- Si la moitié tombe : c’est ok … Si < à la moitié : PROBLEME

- Jusqu'à Sol8 inclus : infos des metadbs ds /etc/system

- Les devices sont créés ds md.cf /dev/md/rdsk* et /dev/md/dsk*

- BACKUP a faire avant crash : /etc/vfstab, /etc/system, backup des prtvtoc, backup de la conf SVM

- NE PAS TOUCHER AUX FICHIERS : /etc/lvm/mddb.cf, /etc/lvm/md.cf, /kernel/drv/md.conf ( config de SUN ).

- ON PEUT TOUCHER : /etc/lvm/md.tab.

- metaparam : paramétrer : l’ordre de synchro des disques, méthode d’écriture/lecture sur les disques : metapram -5 d20 : synchro en 5° place … etc.

faire du sds sur 2 disques et garantir le boot en cas de panne d'un des disques,

voici une option a placer dans le /etc/system pour contourner l'algorithme de

consensus de majorité des metadb :

set md:mirrored_root_flag=1

Avec ça le systeme boot normalement, meme avec un seul disque systeme sous sds.

Notions de base

1. Avant-propos

Voici un nouvel article traitant cette fois-ci du logiciel de gestion de volumes RAID Solaris Volume Manager (SVM). Cet article comporte 2 volumes. Le premier traite des notions de base et le second, de la maintenance SVM. Cet article fait suite à l'article "Gestion de disques sous Solaris" qui permet aux lecteurs d'acquérir les connaissances de base sur la gestion de disques, connaissances indispensables pour une bonne comprehension des deux articles SVM. J'invite donc les lecteurs qui n'auraient pas encore acquis toutes ces notions à se reporter aux documents d'administration Solaris 10.

Ces articles ont été rédigés à partir de la version SVM disponible sous Solaris 10 (01/06) Les apports de cette version par rapport à celle fournie avec Solaris 9 sont la suppression des volumes transactionnels (volumes devenus inutiles compte tenu que l'UFS logging permet déjà de gérer la journalisation des systèmes de fichiers), l'ajout de la commande metassist et de nouvelles options aux commandes d'administration comme par exemple l'option -c de la commande metastat ou l'option -c de la commande metasync. http://www.sunwizard.net/html/articles/vr005.html


Chaque chapitre de cet article sera composé de trois sous-rubriques; création, agrandissement et suppression. Aucune sous-rubrique ne traitera de la réduction d'un volume compte tenu que l'Unix File System (UFS) ne gère pas cette réduction

Allez, commençons et bonne lecture à tous...

Concepts

Pour commencer, je tiens à faire une petite explication sur le concept d'utilisation du logiciel SVM.

SVM est un produit fourni en standard sous Solaris, qui contient les packages SUNWmdr (drivers) et SUNWmdu (commandes d'administration). Le man SVM se trouve inclus dans le package SUNman. Toutes les commandes d'administration commencent soit par "meta" soit par "md" (metadevice) Ces deux termes font références aux volumes... Tout au long de cette documentation je pourrais aussi bien utiliser le terme volume que celui de metadevice...

SVM est un logiciel qui permet de faire du RAID logiciel. Pour rappel, le RAID est une technologie qui permet de créer des systèmes de fichiers s'étendant sur plusieurs disques créant ainsi des volumes de disques. Ce procédé va permettre aussi bien de protèger les données contre une défaillance d'un disque, que d'augmenter la capacité de stockage ainsi que les performances d'entrée/sortie (E/S) en. Il existe plusieurs type de RAID. Pour choisir le type de RAID à employer, on établit un compromis entre performance, redondance des données et coût (la multiplication des disques à un coût).

  • RAID-0 Concatenation (ou agrégat) : Création de volume par récupération de l'espace libre sur un ou plusieurs disques. Ce RAID ne protège pas les données et il n'y pas d'augmentation significative des performances d'E/S.
  • RAID-0 Striping :Création de volume sur plusieurs disques afin d'augmenter les performances d'E/S. Les données vont utiliser des stripes (bandes en Français) pour stocker les données. Le stripe est équivalent à la notion de secteur pour les disques. C'est la plus petite unité adressable. Pour écrire les données on commence par le stripe 1 du premier disque, puis Le stripe 1 du second. Ensuite on revient sur le premier disque sur le stripe 2 etc... Répartir les données sur plusieurs disques augmente considérablement les performances d'E/S car cela revient à écrire en parallèle sur les disques. La taille du stripe doit être fonction des données à écrire sur le volume (16k, 32k, 64k, etc.) Cette taille est choisie à la création du volume.
  • RAID-1 Mirroing : Dans le cas des volumes en miroir, le principe est la protection des données contre une défaillance d'un disque. Pour cela on utilise plusieurs partitions qui vont contenir les même données. Si un disque échoue, les données seront toujours accessibles grâce aux autres disques. Avec SVM on peut utiliser jusqu'à 4 sous-mirroirs par volume (4 copies des données). Ce type de RAID est coûteux à cause de l'augmentation du nombre de disques.
  • RAID-5 Striping avec parité distribuée : Le RAID-5 permet de minimiser le coût de la protection des données. Celui-ci utilise le principe du striping (RAID-0). La protection se fait grâce au calcul d'une somme (parité) de l'ensemble des données de même numéro de stripe. Cette parité sera stockée sur un disque supplémentaire. Si un disque échoue, il sera toujours possible de reconstituer les données manquantes grâce à la parité. On parle de parité distribuée car on ne stocke pas toutes les parités sur le même disque afin d'éviter les baisses de performances effroyables dans le cas où se serait le disque de parité qui échouerait. La parité change de disque à chaque numéro de bande. Le RAID-5 nécessite au minimum trois disques et l'espace utile pour les données est égal à toutes les partitions moins une. Le problème du RAID-5 est qu'il engendre une baisse des performances due au calcul de parité.
  • RAID exotique :Afin de s'approcher au mieux du résultat escompté (trio perfo/protection/coût) on peut cumuler les types de RAID. On peut effectuer par exemple un striping (2 disques) et mirorer ce volume (2 disques). On obtient un volume (RAID-0+1) à quatre disques très performants. Un autre exemple, on crée un miroir que l'on stripe ensuite. On obtient un volume (RAID-10), toujours à quatre disques mais dans ce cas 2 disques peuvent échouer simultanément. Ce type de RAID n'est possible qu'en utilisant du RAID matériel pour le mirroir.

SVM utilise le RAID logiciel avec les partitions comme réceptacle de données. Ce point est important car cela diffère du RAID matériel qui utilise l'ensemble du disque comme réceptacle. L'utilisation de partitions augmente la flexibilité des dépannages et des créations de volume.

Convention de nommage des volumes : Il n'existe pas de règle bien définie sur la convention de nommage des volumes. Ceux-ci se nomment « d » suivi d'un numéro. (par exemple d1, d21, d123). Il peut être intéressant de créer des volumes contenant le n° de target SCSI et le n° de partition afin de rendre plus limpide le nom du volume. Par exemple pour la partition 0 du disque target 1 on pourrait mettre d10. Pour ma part j'utilise des numéros de volumes inférieurs à 10 pour les volumes directement adressables (RAID-0, RAID-5) et des numéros supérieurs à 10 pour les sous-miroirs des volumes en miroir.

  Gestion de la base de données SVM (metadb)

La metadb est la base de données (db pour "data base") des objets SVM. Ces objets peuvent être des volumes (metadevices), des partitions (slices) ou tous autres objets utiles à la configuration SVM. A chaque changement dans la configuration SVM, celle-ci est mise à jour. Cette mise à jour peut être due à une modification dans la configuration ou au changement d'état d'un volume (comme le passage en mode maintenance par exemple).

Cette metadb est indispensable au fonctionnement de Solaris Volume Manager et de ce fait, elle est dupliquée afin de garantir son fonctionnement. Les copies se nomment des replicas et ont une taille de 4 Mo par défaut (8192 blocks) On peut stocker les replicas directement dans des partitions utilisées par des volumes, des systèmes de fichiers mais il est préférable d'utiliser des partitions dédiées pour une facilité d'administration. Par convention on utilise la partition S7 des disques pour stocker les replicas.

Le stockage des replicas sur un système de fichiers est fortement déconseillé car cette opération est destructrice pour les données. Si vous désirez tout de même effectuer cette opération, il est nécessaire de commencer par créer les replicas sur le système de fichiers puis stocker les données. Il est bien sûr impossible d'utiliser une telle procédure pour les systèmes de fichiers root(/), swap et /usr sous peine de rendre le système inutilisable.

Les replicas sont utilisés également comme zone de synchronisation des volume miroirs(RAID-1). Un nombre insuffisant de repliques provoquerait une baisse significative des performances d'entrée/sortie pour les volumes mirorés. En général, on préconise la création d'au moins 2 replicas par volume RAID-1 jusqu'a une limite de 50 replicas par disque.

Le fichier /etc/lvm/mddb.cf contient l'emplacement de la metadb et de ses replicas. Ce fichier est utile lors d'une récupération après un crash système.<a href="/html/articles/vr005.html">(cf. Vol2 - Maintenance SVM)</a>

Le fichier /kernel/drv/md.conf reflète les informations du fichier mddb.cf. Il est nécessaire au fonctionnement du driver md.

Comme je l'ai expliqué précédemment SVM ne peut pas fonctionner sans la présence de sa base de données. En effet celle-ci lui indique où chercher ses informations de configuration et surtout, lui permet de savoir quels sont les éléments qui sont valides et ceux qui ne le sont pas.

Que se passe t-il lorsqu'un disque tombe en panne ?
SVM modifie sa configuration afin qu'elle répercute l'absence du disque.

Et les données ? Si le disque fait partie d'un miroir ou d'un RAID-5 pas de problème, il existe une copie des données. Dans le cas d'un RAID-0 (concaténation ou striping) les données seront perdues.

Lorsqu'une désynchronisation entre 2 sous-miroirs survient, comment le système fait t-il pour savoir quel est le sous-miroir qui est valide ?
C'est là qu'entre en jeu la metadb. En effet, il va y avoir une élection pour connaître l'emplacement des données valides. Cette élection (quorum) est régie par l'algorithme suivant :

  1. Au moins trois replicas doivent être créées. Pour permettre une élection à la majorité absolue, il nous faut au moins trois répliques (oui oui, à deux c'est pas évident d'avoir la majorité).
  2. Au moins la moitié des replicas doit être accessible losque le système est en cours de fonctionnement. Dans le cas contraire le système crash.
  3. Au moins la moitié des replicas + 1 doit être accessible pour qu'un système puisse booter. C'est cette règle qui est la plus déroutante pour les non-initiés et elle nécessite quelques explications. Afin que l'élection remporte la majorité absolue il est nécessaire qu'il y ait au moins 50% +1 de répliques valides.
    Que se passe t-il pour un système qui ne possède que 2 disques alors ?
    Dans le cas d'un système à 2 disques (utilisé pour mettre en miroir la partition root par exemple), si un disque tombe en panne, la règle des 50% +1 ne pourra jamais être respectée et le système crash en boucle.
    Alors comment faire ?
    Ce problème est assez gênant mais plusieurs solutions s'offrent à nous. On peut ajouter un troisième disque qui servira uniquement de stockage pour la metadb. On peut également, mettre une metadb supplémentaire sur l'un des 2 disques et laisser la chance travailler pour nous. Malheureusement si c'est le disque contenant le moins de répliques qui tombe en panne le système ne peut toujours pas booter.
    Il est tout de même possible de booter sur un système sans obtenir la majorité absolue. Pour cela on positionne le paramètre md:mirrored_root_flag=1 dans le fichier /etc/system. En effet, Celui-ci va autoriser le boot sans obtention de la majorité. On positionne ce paramètre comme ceci :
'''# echo "set md:mirrored_root_flag=1" >>/etc/system'''



Création :

La commande metadb permet d'administrer la base de données SVM.

  • -a : Permet d'ajouter une réplique.
  • -f : Permet de forcer un état de la metadb. Cette option est à utiliser lors de la création de la première réplique ou lors de la suppression de la dernière.
  • -c n : Permet de spécifier le nombre de répliques à ajouter sur une partition. Cette option permet de placer plusieurs répliques sur une seule partition. Ceci est très utile pour respecter le consensus dans le cas d'une utilisation de 2 disques seulement (respectant la règle des 3 replicas au moins)

# metadb -f -a -c 3 c0t0d0s7

# metadb

flags first blk block count

a u 16 8192 /dev/dsk/c0t0d0s7

a u 8208 8192/dev/dsk/c0t0d0s7

a u 16400 8192 /dev/dsk/c0t0d0s7

La commande metadb sans argument affiche l'état de la metadb. On peut observer que trois replicas ont été crées dans la partition c0t0d0s7 et ont une taille de 4 Mo (8192 blocks). Lors de l'utilisation des commandes SVM, il n'est pas nécessaire de préciser le chemin absolu des devices.

# metadb -i

flags first blk block count

a u 16 8192 /dev/dsk/c0t0d0s7

a u 8208 8192/dev/dsk/c0t0d0s7

a u 16400 8192 /dev/dsk/c0t0d0s7


r - replica does not have device relocation information

o - replica active prior to last mddb configuration change

u - replica is up to date

l - locator for this replica was read successfully

c - replica's location was in /etc/lvm/mddb.cf

p - replica's location was patched in kernel

m - replica is master, this is replica selected as input

W - replica has device write errorsa - replica is active, commits are occurring to this replica

M - replica had problem with master blocks

D - replica had problem with data blocks

F - replica had format problems - replica is too small to hold current data base

R - replica had device read errors


L'option -i permet d'afficher une explication sur l'état de la metadb. Tant qu'aucun volume n'existe sur le système, aucune réplique n'est considérée comme metadb principale (m pour maître)

Suppression :

Pour supprimer une réplique on utilise l'option -d.

# metadb -d c0t0d0s7

metadb: heckel: must have at least 1 database (-f overrides)

Pour supprimer la dernière réplique il est obligatoire de forcer cette action avec l'option -f

# metadb -f -d c0t0d0s7

Maintenant que nous savons gérer la base de données SVM nous pouvons commencer à créer des volumes...


Volumes concaténés (RAID-0)

La concaténation permet d'utiliser des partitions, d'une taille identique ou différente afin de créer un volume. Ceci peut être utile pour rassembler de la place inutilisée sur des disques afin de créer un seul système de fichiers. De plus, on peut utiliser un système de fichier existant afin de lui ajouter de l'espace. SVM utilisant directement les partitions des disques pour stocker les données du volume, il est tout à fait possible d'utiliser plusieurs partitions du même disque dans un volume. Ceci peut se révéler utile pour récupérer l'espace libre non contigu d'un disque sans être obligé de changer tout le partitionnement du disque.

Création :

Dans ce premier exemple, on crée un volume d50 comportant 2 stripes indépendants avec une partition par stripe. SVM utilise le stripe comme réceptacle des éléments élémentaires d'écriture des données. (Dans le cas d'un volume concaténé il devrait y avoir autant de stripes que de partitions)

Dans l'exemple ci-dessous, le "2" correspond au nombre de stripes indépendants employés pour créer le volume et les "1" correspondent au nombre de partition par stripe. On obtient bien un volume fonctionnant avec 2 partitions indépendantes.

# metainit d50 2 1 c0t6d0s0 1 c0t7d0s0

d50: Concaténation/Bande configurée

On vérifie :

# metastat -p

d50 2 1 c0t6d0s0 1 c0t7d0s0


# metastat d50

d50: Concat/Stripe

Taille : 35145117 blocs (16 GB)

Bande 0 :Périphérique Bloc de débu Base Redistribution

c0t6d0s0 0 Non Oui

Bande 1 :Périphérique Bloc de débu Base Redistribution

c0t7d0s0 3591 Non Oui

Device Relocation Information:

Device Reloc Device ID

c0t6d0 Oui id1,ssd@n200000203708c7b6

c0t7d0 Oui id1,ssd@n2000002037265115

Agrandissement :

Dans ce deuxième exemple, on va utiliser un système de fichiers existant, le transformer en volume puis lui ajouter une partition afin d'agrandir le volume et le système de fichier qui s'y trouve.

# df -h /disk

Système de fichiers taille utilisé dispo capacité Monté sur

/dev/dsk/c0t7d0s0 8,3G 8,4M 8,2G 1% /disk

La partition c0t7d0s0 est utilisée par le système de fichier /disk.

# umount /disk

# metainit d20 1 1 c0t7d0s0

d20: Concaténation/Bande configurée

On démonte le système de fichiers puis on concatène la partition dans le volume d20.
Attention, cette méthode n'est pas valide pour du striping, car celui-ci détruirait les données lors de l'entrelacement des stripes sur les différentes partitions.

# fsck /dev/md/rdsk/d20

    • /dev/md/rdsk/d20
    • Last Mounted on /disk
    • Phase 1 - Check Blocks and Sizes
    • Phase 2 - Check Pathnames** Phase 3a - Check Connectivity
    • Phase 3b - Verify Shadows/ACLs** Phase 4 - Check Reference counts
    • Phase 5 - Check Cylinder Groups

3 files, 10 used, 8643914 free (10 frags, 1080488 blocks, 0.0% fragmentation)

# mount /dev/md/dsk/d20 /disk

On effectue un fsck afin de s'assurer de l'intégrité des données du système de fichiers puis on le monte.

# metattach d20 c0t8d0s0

d20: composant connecté

# metastat -p

d20 2 1 c0t7d0s0 1 c0t8d0s0

On ajoute une partition c0t8d0s0 au volume d20. Cet ajout n'a pas modifié le système de fichiers. Il va falloir maintenant l'agrandir :

# df -h /disk

Système de fichiers taille utilisé dispo capacité Monté sur

/dev/md/dsk/d20 8,3G 8,4M 8,2G 1% /disk


# growfs -M /disk /dev/md/rdsk/d20

Avertissement : 1 secteur(s) du dernier cylindre n'ont pas été alloués

/dev/md/rdsk/d20: 35145116 secteurs dans 9787 cylindres de 27 pistes, 133 secteurs

17160,7 Mo dans 612 groupes de cylindres (16 c/g, 28,05 Mo/g, 3392 i/g)

sauvegardes de super-blocs (pour fsck -F ufs -o b=#) at:

32, 57632, 115232, 172832, 230432, 288032, 345632, 403232, 460832, 518432,

Initialisation des groupes de cylindres:

............sauvegardes de super-blocs pour les 10 derniers groupes de cylindres dans :

34592288, 34649888, 34707488, 34765088, 34822688, 34880288,

34933280,34990880, 35048480, 35106080


# df -h /disk

Système de fichiers taille utilisé dispo capacité Monté sur

/dev/md/dsk/d20 17G 17M 16G 1% /disk

La commande growfs a permis d'augmenter la taille du système de fichiers (alors qu'il est bien monté) Le commande df permet de constater l'augmentation de sa taille (de 8,3 Go à 17 Go)


Suppression :

Pour détruire un volume concaténé on utilise la commande metaclear. Cette commande ne fonctionne que si le volume n'est pas en cours d'utilisation.

# df -h /disk

Système de fichiers taille utilisé dispo capacité Monté sur

/dev/md/dsk/d20 17G 17M 16G 1% /disk

On observe que le volume d20 est actuellement monté sur /disk Si on essaye de supprimer le volume d20...

# metaclear d20

metaclear: sad21afr: d20: métapériphérique ouvert

...La commande échoue car le volume est en cours d'utilisation. Pour supprimer le volume il faut le démonter.

# umount /disk

# metaclear d20

d20: Concaténation/Bande supprimée

Le volume a bien été supprimé.

Il est intéressant de noter que les données stockées dans un volume concaténé à une seule partition sont toujours récupérables après la suppression du volume. En effet, le gros avantage de SVM par rapport à d'autres logiciels de gestion de volumes, c'est qu'il utilise directement les partitions du disque pour stocker les données sans ajouter d'information de gestion. Ce principe va être très utile pour récupérer les données des sous-miroirs d'un volume RAID-1. En effet les volumes RAID-1 utilisent des volumes concaténés comme sous-miroir. Si un problème d'incohérence survenait, nous serions toujours capables de monter les partitions natives.<a href="/html/articles/vr005.html">(cf. Vol2 - Maintenance SVM)</a>
Ce principe de fonctionnement est également très utile pour effectuer des sauvegardes stables d'un volume qu'il n'est pas possible d'arrêter car nous pouvons détacher l'un des sous-miroirs, effectuer une sauvegarde (avec des données stables) et réattacher à nouveau le sous-miroir qui se synchronisera automatiquement.<a href="/html/articles/vr005.html">(cf. Vol2 - Maintenance SVM)</a>


Volumes striping (RAID-0)

Le principe du striping est la création d'un volume à bandes réparties sur plusieurs partitions. Ces stripes vont servir de réceptacle aux éléments élémentaires utilisés au stockage des données. Le striping permet donc d'écrire les données en parallèle sur plusieurs partitions.

La mise en place du striping permet une amélioration significative du taux de transfert mais induit une augmentation du risque de perte des données par l'augmentation du nombre de disques utilisés. Bien entendu, il est nécessaire d'utiliser des partitions se trouvant sur des disques différents afin d'améliorer les performances. Si les partitions n'ont pas la même taille, le volume utilise celle correspondant à la plus petite partition.

Création :

Le premier exemple montre la création d'un volume d50 avec 1 stripe (chiffre "1" de la commande metainit) réparti sur 2 partitions (chiffre "2" de la commande metainit) L'option -i permet de définir la taille du stripe sur chaque partition. Dans cet exemple la taille utilisée est de 32k soit 64 blocks (secteurs) de 512 octets. Cette taille de stripes sera en fontion de la taille des données qui seront stockées sur le volume.


# metainit d50 1 2 c0t6d0s0 c0t7d0s0 -i 32b

d50: Concaténation/Bande configurée

# metastat -p

d50 1 2 c0t6d0s0 c0t7d0s0 -i 64b

Agrandissement :

Comme pour les volumes concaténés, il est possible d'augmenter la taille d'un volume striping. Cette augmentation ne provoque pas la refonte complète des stripes car il y aurait une destruction des données mais va augmenter la taille du volume en concaténant deux stripes. Cette méthode s'appelle le striping concaténé (Concatenated stripe)

L'exemple suivant montre l'augmentation d'un volume et de son système de fichiers par la concaténation de deux stripes. Le volume striping d21 contient le système de fichiers /disk

# metastat -p d21

d21 1 2 c0t7d0s0 c0t8d0s0 -i 1024b

# df -h /disk

Système de fichiers taille utilisé dispo capacité Monté sur

/dev/md/dsk/d21 16G 17M 16G 1% /disk

On attache 2 partitions au volume d21. Ces partitions doivent avoir la même taille sinon le volume utilise une taille correspondant à la plus petite partition.

# metattach d21 c0t9d0s0 c0t10d0s0

d21: composants déconnectés

En vérifiant, on observe que le volume est maintenant composé de deux stripes utilisant chacun deux partitions.

# metastat -p

d21 2 2 c0t7d0s0 c0t8d0s0 -i 1024b \

2 c0t9d0s0 c0t10d0s0 -i 1024b

Le système de fichiers doit maintenant être agrandi...

# growfs -M /disk /dev/md/rdsk/d21

/dev/md/rdsk/d21: 70275870 secteurs dans 19570 cylindres de 27 pistes, 133 secteurs

34314,4 Mo dans 1224 groupes de cylindres (16 c/g, 28,05 Mo/g, 3392 i/g)

sauvegardes de super-blocs (pour fsck -F ufs -o b=#) at:

32, 57632, 115232, 172832, 230432, 288032, 345632, 403232, 460832, 518432,

Initialisation des groupes de cylindres :

........................

sauvegardes de super-blocs pour les 10 derniers groupes de cylindres dans :

69755936, 69813536, 69866528, 69924128, 69981728, 70039328, 70096928,

70154528, 70212128, 70269728,

# df -h

Système de fichiers taille utilisé dispo capacité Monté sur

/dev/md/dsk/d21 33G 34M 33G 1% /disk

70154528, 70212128, 70269728,

...Le système de fichiers est bien passé de 16 Go à 33 Go.

Suppression :

Ce nouvel exemple montre la suppression d'un volume en striping. Il faut bien sûr que le volume ne soit plus en cours d'utilisation (système de fichiers démonté)

# umount /disk

# metaclear d21

d21: Concaténation/Bande supprimée

# metastat d21

metastat: localhost: d21: unité non configuré

  Volumes miroir (RAID-1)

Un volume miroir stocke les mêmes données sur plusieurs partitions permettant un accès aux données même en cas de défaillance d'un disque. Il est bien sûr nécessaire, pour que ce système fonctionne correctement, que les partitions soient sur des disques différents. Chaque copie d'un volume miroir s'appelle un sous-miroir. SVM permet la création de 4 sous-miroirs maximum par volume.

Création :

Le premier exemple montre la création d'un volume miroir d50 composé de deux sous-miroirs d51 et d52 associés respectivement aux partitions c0t6d0s0 et c0t7d0s0.

# metainit d51 1 1 c0t6d0s0

d51: Concaténation/Bande configurée

  1. metainit d52 1 1 c0t7d0s0

d52: Concaténation/Bande configurée

La première étape de la création d'un miroir est la création des deux sous-miroirs du volume. Cette création correspond à la transformation d'une partition vers un volume RAID-0 concaténé composé d'un seul stripe.

La deuxième étape consiste à créer le miroir en associant le premier sous-miroir au volume. A partir de cette étape le volume est opérationnel et il est possible de créer un système de fichiers.

# metainit d50 -m d51

d50: Miroir configuré

# metattach d50 d52

d50: sous-miroir d52 is attached

On vérifie l'état de notre volume.

# metastat d50

d50: Miroir

Sous-miroir 0: d51

Etat : Ok

Sous-miroir 1: d52

Etat : Resynchronisation

Resynchronisation en cours : 5 % terminé

Accès : 1

Option de lecture : roundrobin (par défaut)

Option d'écriture : parallel (par défaut)

Taille : 17574354 blocs (8,4 GB)

d51: Sous-miroir de d50

Etat : Ok

Taille : 17574354 blocs (8,4 GB)

Bande 0 :

Périphérique Bloc de débu Base Etat Redis Tranche dynamique

c0t6d0s0 0 Non Ok Oui

d52: Sous-miroir de d50

Etat : Resynchronisation

Taille : 17574354 blocs (8,4 GB)

Bande 0 :

Périphérique Bloc de débu Base Etat Redis Tranche dynamique

c0t7d0s0 0 Non Ok Oui

Device Relocation Information:

Device Reloc Device ID

c0t6d0 Oui id1,ssd@n200000203708c7b6

c0t7d0 Oui id1,ssd@n2000002037265115

L'attachement du deuxième sous-miroir provoque une resynchronisation des données.

Il est possible de créer le volume miroir par l'ajout des deux sous-miroirs en une seule étape. Le système nous informe que cette méthode peut créer des incohérences des données présentes dans les sous-miroirs (les sous-miroirs peuvent contenir des données différentes). Cette méthode n'est à utiliser que dans le cas de la création d'un volume sans données existantes..

# metainit d50 -m d51 d52

metainit: d50: AVERTISSEMENT : Ce type de metainit est déconseillé.

Les sous-miroirs ne contiennent peut-être pas les mêmes données.

Pour de plus amples informations, reportez-vous à ERREURS dans metainit(1M)..

d50: Miroir configuré.

# newfs /dev/md/rdsk/d50.

newfs: /dev/md/rdsk/d50 monté en dernier comme /disk.

newfs: construction d'un nouveau système de fichiers dev/md/rdsk/d50 : (y/n)? y.

/dev/md/rdsk/d50: 17574354 secteurs dans 4894 cylindres de 27 pistes, 133 secteurs.

8581,2 Mo dans 306 groupes de cylindres (16 c/g, 28,05 Mo/g, 3392 i/g).

sauvegardes de super-blocs (pour fsck -F ufs -o b=#) at:.

32, 57632, 115232, 172832, 230432, 288032, 345632, 403232, 460832, 518432,.

17008160, 17065760, 17123360, 17180960, 17238560, 17296160, 17353760,.

17411360, 17468960, 17526560,

mount /dev/md/dsk/d50 /disk

# df -h /disk

Système de fichiers taille utilisé dispo capacité Monté sur.

/dev/md/dsk/d50 8,3G 8,4M 8,2G 1% /disk.

Agrandissement :

Comme pour les autres types de volumes il est possible d'agrandir un volume miroir. Pour ce faire, il faut ajouter une partition à chacun des sous-miroirs. L'agrandissement du volume n'est effectif qu'après l'ajout de la partition au dernier sous-miroir.

Il est nécessaire que les partitions ajoutées soient de taille identique sinon le volume utilisera une taille correspondant à la plus petite partition.

# metattach d51 c0t9d0s0

d51: composant connecté

# metattach d52 c0t10d0s0

d52: composant connecté

# metastat -p d50

d50 -m d51 d52 1

d51 2 1 c0t6d0s0 \

1 c0t9d0s0

d52 2 1 c0t7d0s0 \

1 c0t10d0s0

Après avoir ajouté une partition à chacun des sous-miroirs en la concaténant avec celle déjà existante il faut agrandir le système de fichiers avec growfs.

# growfs -M /disk /dev/md/rdsk/d50

Avertissement : 1 secteur(s) du dernier cylindre n'ont pas été alloués

/dev/md/rdsk/d50: 35145116 secteurs dans 9787 cylindres de 27 pistes, 133 secteurs

17160,7 Mo dans 612 groupes de cylindres (16 c/g, 28,05 Mo/g, 3392 i/g)

sauvegardes de super-blocs (pour fsck -F ufs -o b=#) at:

32, 57632, 115232, 172832, 230432, 288032, 345632, 403232, 460832, 518432,

Initialisation des groupes de cylindres :

............

sauvegardes de super-blocs pour les 10 derniers groupes de cylindres dans :

34592288, 34649888, 34707488, 34765088, 34822688, 34880288, 34933280,

34990880, 35048480, 35106080,

Suppression :

Pour supprimer un volume en miroir, il faut que le volume ne soit plus en activité.

Une resynchronisation de l'un des sous-miroirs empêche la suppression du volume jusqu'à ce que cette resynchronisation soit terminée sinon il est nécessaire d'arrêter la synchro avec la commande metasync -c (disponible uniquement avec Solaris 10) <a href="/html/articles/vr005.html">(cf. Vol2 - Maintenance SVM)</a>

# metastat d50 | grep Resynchro

Etat : Resynchronisation

Resynchronisation en cours : 17 % terminé

Etat : Resynchronisation

# metaclear d50

metaclear: sad21afr: d50: métapériphérique ouvert

...Il est nécessaire d'attendre la fin de la resynchronisation. Une fois terminée, la suppression est possible.

# metastat d50 | grep Resynchro

# metaclear d50

d50: Miroir supprimé

La suppression du miroir n'engendre pas la suppression des sous-miroirs. Pour supprimer de façon récursive un volume il faut utiliser l'option -r de la commande metaclear.

# metastat -p d50

d50 -m d51 d52 1

d51 1 1 c0t7d0s0

d52 1 1 c0t8d0s0

Le volume d50 possède 2 sous-miroirs d51 et d52.

# metaclear d50

d50: Miroir supprimé

# metastat -p d51 d52

d51 1 1 c0t7d0s0

d52 1 1 c0t8d0s0

Lorsqu'on supprime le volume d50, les sous-miroirs sont toujours présents.

# metastat -p d50

d50 -m d51 d52 1

d51 1 1 c0t7d0s0

d52 1 1 c0t8d0s0

# metaclear -r d50

d50: Miroir supprimé

d51: Concaténation/Bande supprimée

d52: Concaténation/Bande supprimée

...Avec l'option -r, les sous-miroirs sont également supprimés. 

  Volumes Striping + Mirroring (RAID-0+1)

Ce type de volume permet de multiplexer les fonctions de striping et celles de miroir. Des partitions vont être utilisées pour créer des volumes en striping. (Au moins 2 volumes contenant 2 partitions, soit 4 partitions minimum). Ces volumes en striping vont être utilisés comme sous-miroirs du volume.

Création :

Pour commencer, voici la création de deux volumes striping d51 et d52 utilisant respectivement les partitions c0t6d0s0, c0t7d0s0 et c2t39d0s0, c2t40d0s0.

# metainit d51 1 2 c0t6d0s0 c0t7d0s0

d51: Concaténation/Bande configurée

# metainit d52 1 2 c2t39d0s0 c2t40d0s0

d52: Concaténation/Bande configurée

La deuxième étape consiste à créer un volume miroir utilisant comme sous-miroirs les deux volumes stripés.

# metainit d50 -m d51 d52

metainit: d50: AVERTISSEMENT : Ce type de metainit est déconseillé.

Les sous-miroirs ne contiennent peut-être pas les mêmes données.

Pour de plus amples informations, reportez-vous à ERREURS dans metainit(1M).

d50: Miroir configuré

Il également possible d'utiliser les deux étapes pour la création du volume miroir, ajout du premier sous-miroir avec la commande metainit d50 -m d51 suivi de la commande metattach d50 d52.

# metastat -p d50

d50 -m d51 d52 1

d51 1 2 c0t6d0s0 c0t7d0s0 -i 1024b

d52 1 2 c2t39d0s0 c2t40d0s0 -i 1024b


# metastat d50

d50: Miroir

Sous-miroir 0: d51

Etat : Ok

Sous-miroir 1: d52

Etat : Ok

Accès : 1

Option de lecture : roundrobin (par défaut)

Option d'écriture : parallel (par défaut)

Taille : 35137935 blocs (16 GB)

d51: Sous-miroir de d50

Etat : Ok

Taille : 35137935 blocs (16 GB)

Entrelacement 0 : (entrelacer : 1024 blocs)

Périphérique Bloc de débu Base Etat Redis Tranche dynamique

c0t6d0s0 0 Non Ok Oui

c0t7d0s0 3591 Non Ok Oui

d52: Sous-miroir de d50

Etat : Ok

Taille : 35137935 blocs (16 GB)

Entrelacement 0 : (entrelacer : 1024 blocs)

Périphérique Bloc de débu Base Etat Redis Tranche dynamique

c2t39d0s0 0 Non Ok Oui

c2t40d0s0 3591 Non Ok Oui


Device Relocation Information:

Device Reloc Device ID

c0t6d0 Oui id1,ssd@n200000203708c7b6

c0t7d0 Oui id1,ssd@n2000002037265115

c2t39d0 Oui id1,ssd@n2000002037260817

c2t40d0 Oui id1,ssd@n200000203733fd5a

On peut remarquer que les secteurs de début de chaque disque ne sont pas identiques. Cela est dû au fait que le système conserve le label des disques ajoutés (1 secteur). Pour éviter les erreurs d'arrondis, le système utilise tout le 1er cylindre (3591 secteurs pour les disques utilisés pendant l'écriture)

Agrandissement :

L'augmentation de l'espace disponible sur un volume RAID-0+1 s'effectue par l'augmentation des stripes sous-jacents au miroir. <a href="#striping" >(cf. Volumes striping)</a>

Suppression :

La suppression d'un volume RAID-0+1 ne diffère pas de celle d'un volume miroir standard (cf. Gestion des volumes miroirs)


  Volume miroir stripés (RAID-10)

Cette fonction n'est pas disponible sous SVM. Pour effectuer ce type de RAID, il est nécessaire d'utiliser un RAID matériel pour former les miroirs. Ces miroirs seront reconnus comme des disques standard sous Solaris. Pour construire ce RAID-10 il suffit de créer un striping sur des disques. Cette fonctionnalité permet une fiabilité plus importante par rapport au RAID-0+1 car il est possible que plusieurs disques soient défaillants simultanément en fonction de leur position.

  Volumes striping avec parité distribuée (RAID-5)

Le RAID-5 est le RAID dit "économique". Il permet la redondance des données la moins coûteuse en nombre de disques et fonctionne sur du striping. Pour permettre la redondance de données il utilise un stripe pour enregistrer une parité de l'ensemble des données. Ceci permet en pratique de pallier à la défaillance d'un disque.
Le RAID 5 est économique, par contre le calcul de parité diminue les performances. On considère qu'il est une solution viable pour des systèmes de fichiers qui ne seraient pas utilisés à plus de 20% en écriture.
Lors d'une défaillance, le volume RAID-5 bascule en mode dégradé et ses performances sont très diminuées car le système est obligé de calculer les données manquantes à partir de la parité.
Pour créer un volume RAID-5, il est nécessaire de posséder au moins trois slices (bien entendu il faut que ces slices soient sur des disques différents). Quel que soit le nombre de partitions utilisées, la perte de place utile est toujours égale à une partition. Plus le nombre de partitions augmente plus la proportion de place perdue diminue (pour 3 partitions elle est égale à 1/3, pour 4 partitions 1/4, etc.)

Création :

# metainit d30 -r c0t6d0s0 c0t7d0s0 c0t8d0s0

d30: RAID configuré

# metastat -p d30

d50 -r c0t6d0s0 c0t7d0s0 c0t8d0s0 -k -i 1024b

# metastat d30

d30: RAID

Etat : Initialisation

Initialisation en cours: 2.8% terminé

Entrelacement : 1024 blocs

Taille : 35116389 blocs (16 GB)

Périphérique d'origine :

Taille : 35119104 blocs (16 GB)

Périphérique Bloc de débu Base Etat Redis Tranche dynamique

c0t6d0s0 13841 Non Initialisati Oui

c0t7d0s0 13841 Non Initialisati Oui

c0t8d0s0 13841 Non Initialisati Oui

Device Relocation Information:

Device Reloc Device ID

c0t6d0 Oui id1,ssd@n200000203708c7b6

c0t7d0 Oui id1,ssd@n2000002037265115

c0t8d0 Oui id1,ssd@n2000002037264f01

Dés la création du volume, celui-ci passe à l'état d'initialisation et il n'est pas possible de créer un système de fichiers tant que cette initialisation n'est pas terminée.

# newfs /dev/md/rdsk/d30

/dev/md/rdsk/d30: Resource temporarily unavailable

Agrandissement :

L'augmentation d'un volume RAID-5 se fait par l'ajout d'une partition au volume.

# metattach d30 c0t9d0s0

d30: column is attached

# metastat

d30: RAID

State: Okay

Initialization in progress: 0.8% done

Interlace: 32 blocks

Size: 15823827 blocks (7.5 GB)

Original device:

Size: 15825216 blocks (7.5 GB)

Device Start Block Dbase State Reloc Hot Spare

c0t6d0s0 2439 No Okay Yes

c0t7d0s0 2439 No Okay Yes

c0t8d0s0 2439 No Okay Yes

Concatenated Devices:

Size: 7912608 blocks (3.8 GB)

Device Start Block Dbase State Reloc Hot Spare

c0t9d0s0 2439 No Initializing Yes

...

Une fois la partition ajoutée et initialisée, il est nécessaire d'utiliser la commande growfs pour agrandir le système de fichiers. L'ajout d'une partition à un volume RAID-5 se fait par concaténation. Cette nouvelle partition ne stocke pas de parité et est protégée par celle déjà existante.

Suppression :

La méthode de suppression d'un volume RAID-5 ne différe pas de celle utilisée pour les autres volumes (sauf peut être le message...). Il est nécessaire que le volume ne soit plus en activité.

metaclear d30

d30: RAID is cleared


  Softs partitions

Les soft partitions permettent de diviser des devices en plusieurs parties. Cette division permet de créer une multitude de systèmes de fichiers sur un device. Il est possible de créer ces soft partitions, soit à partir d'un volume, soit directement à partir d'une partition. Lorsque ces soft partitions sont créées à partir d'un volume existant, elles permettent de minimiser les tâches d'administration. En effet quel que soit le nombre de soft partitions, et donc de systèmes de fichiers, on aura toujours qu'un seul volume à administrer. Dans le cas de la création à partir d'une partition, les soft partitions permettent de passer la limitation des 8 partitions par disque. Par exemple il est possible de créer 100 soft partitions sur une partition et d'obtenir ainsi 100 systèmes de fichiers sur un seul disque. Ceci peut se révéler très utile pour le stockage des comptes utilisateurs.

Création :

Pour notre 1er exemple, voici la création d'une soft partition à partir d'un volume striping existant. On commence par créer le volume stripe d50...

# metainit d50 1 5 c0t6d0s0 c0t7d0s0 c0t8d0s0 c0t9d0s0 c0t10d0s0 -i 1024b

d50: Concaténation/Bande configurée

Ensuite on crée une soft partition d5 sur ce volume d50. Pour ceci, il faut utiliser l'option -p de la commande metatinit et préciser la taille de la soft partition à créer (on peut utiliser le mot "all" pour sélectionner l'ensemble de la place disponible)

# metainit d5 -p d50 1g

d5: Partition logicielle configurée

Voici ce que cela donne :

# metastat -p d5

d5 -p d50 -o 4096 -b 2097152

d50 1 5 c0t6d0s0 c0t7d0s0 c0t8d0s0 c0t9d0s0 c0t10d0s0 -i 1024b

La soft partition dépend bien du volume d50. On peut désormais créer un système de fichiers sur d5 et le monter.

# newfs /dev/md/rdsk/d5

newfs: construction d'un nouveau système de fichiers /dev/md/rdsk/d5 : (y/n)? y

Avertissement : 3583 secteur(s) du dernier cylindre n'ont pas été alloués

/dev/md/rdsk/d5: 2097152 secteurs dans 585 cylindres de 27 pistes, 133 secteurs

1024,0 Mo dans 37 groupes de cylindres (16 c/g, 28,05 Mo/g, 13504 i/g)

sauvegardes de super-blocs (pour fsck -F ufs -o b=#) at:

32, 57632, 115232, 172832, 230432, 288032, 345632, 403232, 460832, 518432,

1555232, 1612832, 1670432, 1728032, 1785632, 1838624, 1896224, 1953824,

2011424, 2069024,

# mount /dev/md/dsk/d5 /disk

# df -h | grep d5

/dev/md/dsk/d5 962M 1,0M 904M 1% /disk

Dans le 2ème exemple, nous allons créer une soft partition directement sur la partition d'un disque. (Au lieu de spécifier un nom de volume on donne en argument le nom d'une partition.

#metainit d3 -p c1t1d0s0 1g

d3: Soft Partition is setup

# metastat -p

d3 -p c1t1d0s0 -o 2110 -b 2097152

On crée un système de fichiers sur cette partition, on la monte et on vérifie la taille du système de fichiers...

# newfs /dev/md/rdsk/d3

newfs: construct a new file system /dev/md/rdsk/d3: (y/n)? y

Warning: inode blocks/cyl group (477) >= data blocks (314) in last

cylinder group. This implies 5024 sector(s) cannot be allocated.

/dev/md/rdsk/d3: 2092128 sectors in 992 cylinders of 19 tracks, 111 sectors

1021.5MB in 31 cyl groups (32 c/g, 32.95MB/g, 16384 i/g)

super-block backups (for fsck -F ufs -o b=#) at:

32, 67632, 135232, 202832, 270432, 338032, 405632, 473232, 540832, 608432,

1419632, 1487232, 1554832, 1622432, 1690032, 1757632, 1825232, 1892832,

1960432, 2028032,

# mount /dev/md/dsk/d3 /mnt

# df -h /mnt

Filesystem size used avail capacity Mounted on

/dev/md/dsk/d3 959M 1.0M 900M 1% /mnt

Le système de fichiers à bien une taille de 1 Go.

Agrandissement :

Le gros avantage des soft partitions est la facilité d'agrandissement. En effet il suffit de leur ajouter de l'espace en spécifiant la taille voulue et celle-ci est prise en compte immédiatement. Il est également possible d'attacher une nouvelle partition.

# metastat -p

d3 -p c1t1d0s0 -o 2110 -b 2097152

# metattach d3 1G

d3: Soft Partition has been grown

# metastat -p

d3 -p c1t1d0s0 -o 2110 -b 4194304


La taille est bien passée de 1 Go à 2 Go (de 2097152 blocks à 4194304 blocks). Maintenant on peut agrandir le système de fichiers...

# df -h /mnt

Filesystem size used avail capacity Mounted on

/dev/md/dsk/d3 959M 1.0M 900M 1% /mnt


# growfs -M /mnt /dev/md/rdsk/d3

Warning: 497 sector(s) in last cylinder unallocated

/dev/md/rdsk/d3: 4194304 sectors in 1989 cylinders of 19 tracks, 111 sectors

2048.0MB in 63 cyl groups (32 c/g, 32.95MB/g, 16384 i/g)

super-block backups (for fsck -F ufs -o b=#) at:

32, 67632, 135232, 202832, 270432, 338032, 405632, 473232, 540832, 608432,

3579248, 3646848, 3714448, 3782048, 3849648, 3917248, 3984848, 4052448,

4120048, 4187648,

# df -h /mnt

Filesystem size used avail capacity Mounted on

/dev/md/dsk/d3 1.9G 2.0M 1.8G 1% /mnt

Suppression :

La méthode de suppression ne diffère pas de celle utilisée pour les autres types de volume. Le volume ne doit pas être en activité.

# umount /mnt

# metaclear -r d3

d3: Soft Partition is cleared

Dans le cas d'une soft partition se reposant sur autre volume, on ne peut utiliser l'option -r que lors de la suppression de la dernière soft partition sinon le système précise qu'un objet utilise le volume sous-jacent. Dans l'exemple suivant, les 2 soft partitions d3 et d4 reposent sur le volume d1.

# metastat -p

d4 p 1.0GB d1

d3 p 1.0GB d1

d1 s 3.8GB c1t1d0s0

# metaclear -r d4

d4: Soft Partition is cleared

metaclear: heckel: d1: metadevice in use

La commande metaclear n'a pas effacé le volume d1 car d3 utilise toujours ce volume... Si maintenant on supprime d3 avec l'option -r, d1 sera bien supprimé.

# metaclear -r d3

d3: Soft Partition is cleared

d1: Concat/Stripe is cleared

  Hot Spares

Un hot spare pool est un ensemble de partitions disponibles en remplacement en cas d'une défaillance d'un disque composant un miroir ou un RAID-5. Lorsqu'une défaillance d'un disque survient, SVM va utiliser une partition du hot spare spool afin de remplacer ce disque. Il est nécessaire bien entendu que les partitions stockées dans le hot spare pool soient d'une taille égale ou supérieure à la partition à remplacer.

Création :

Pour qu'un volume puisse utiliser une partition de remplacement il faut tout d'abord créer un hot spare pool. Pour cela on utilise la commande metainit suivi du nom du hot spare pool. Ce nom doit être de la forme hspxxx (où xxx représente le numéro de hot spare pool)

# metainit hsp000

hsp000: Hotspare pool is setup

On utilise la commande metahs -i pour visualiser l'état d'un hot spare pool.

# metahs -i

hsp000: is empty

Device Relocation Information:

Device Reloc Device ID

Dans notre cas, le pool est vide. On va maintenant ajouter une partition au pool.

# metahs -a hsp000 c1t2d0s0

hsp000: Hotspare is added

# metahs -i

hsp000: 1 hot spare

Device Status Length Reloc

c1t2d0s0 Available 2045730 blocks Yes

Device Relocation Information:

Device Reloc Device ID

c1t2d0 Yes id1,sd@SSEAGATE_ST15230N_SUN4.2G00138897

Maintenant le pool contient bien une partition. Il est possible d'ajouter des partitions directement lors de la création du pool.

# metainit hsp000 c1t2d0s0 c1t2d0s1

hsp000: Hotspare pool is setup

# metahs -i

hsp000: 2 hot spares

Device Status Length Reloc

c1t2d0s0 Available 2045730 blocks Yes

c1t2d0s1 Available 6293256 blocks Yes

Device Relocation Information:

Device Reloc Device ID

c1t2d0 Yes id1,sd@SSEAGATE_ST15230N_SUN4.2G00138897

Les deux partitions ont bien été ajoutées à la création du pool.
Il est impératif d'ajouter les partitions par ordre de taille de la plus petite à la plus grande. En effet lorsque SVM recherche une partition de remplacement, celui-ci lit la liste des partitions dans l'ordre dans lequel celles-ci ont été ajoutées dans le pool. Si les plus grandes partitions se trouvaient au début, SVM utiliserait en premier ces partitions, gâchant ainsi de la place alors que les partitions suivantes pourraient ne plus être plus suffisamment grandes pour remplacer les partitions défaillantes. Pour éviter d'avoir à gérer l'ordre de cette liste il est préférable de créer un hot spare pool par partition.
Il existe deux méthodes pour attacher un hot spare pool à un volume. La première consiste à définir le pool à la création du volume. Pour cela on utilise l'option -h de la commande metainit. Les hot spares pools sont à ajouter au sous-miroirs dans le cas du RAID-1 et au volume dans le cas du RAID-5 et du RAID-0. Bien entendu un hot spare pour les volumes RAID-0 n'est pas d'un grand interêt.

# metainit d51 1 1 c0t7d0s0 -h hsp001

d51: Concaténation/Bande configurée

# metainit d52 1 1 c0t8d0s0 -h hsp001

d52: Concaténation/Bande configurée

# metainit d50 -m d51 d52

metainit: d50: AVERTISSEMENT : Ce type de metainit est déconseillé.

Les sous-miroirs ne contiennent peut-être pas les mêmes données.

Pour de plus amples informations, reportez-vous à ERREURS dans metainit(1M).

d50: Miroir configuré

# metastat -p d50

d50 -m d51 d52 1

d51 1 1 c0t7d0s0 -h hsp001

d52 1 1 c0t8d0s0 -h hsp001

Dans l'exemple ci-dessus, on crée deux sous-miroirs auxquels on associe directement un hot spare pool (hsp001). La deuxième méthode consiste à ajouter le hot spare pool une fois le volume crée avec la commande metaparam suivi de l'option -h. Dans cet exemple on ajoute le pool hsp001 au sous-miroir d51.

# metaparam -h hsp001 d51

  1. metastat -p d51

d51 1 1 c0t7d0s0 -h hsp001

Agrandissement :

Pour ajouter des partitions à un pool on utilise à nouveau la commande metahs suivie de l'option -a. N'oubliez pas qu'il est nécessaire que les partitions soient ajoutées par ordre croissant de taille car SVM ne le fait pas tout seul.

# metahs -i

hsp000: 2 hot spares

Device Status Length Reloc

c1t2d0s0 Available 2045730 blocks Yes

c1t2d0s1 Available 6293256 blocks Yes

Device Relocation Information:

Device Reloc Device ID

c1t2d0 Yes id1,sd@SSEAGATE_ST15230N_SUN4.2G00138897

# metahs -a hsp000 c1t3d0s1

hsp000: Hotspare is added

# metahs -a hsp000 c1t3d0s0

hsp000: Hotspare is added

# metahs -i

hsp000: 4 hot spares

Device Status Length Reloc

c1t2d0s0 Available 2045730 blocks Yes

c1t2d0s1 Available 6293256 blocks Yes

c1t3d0s1 Available 6293256 blocks Yes

c1t3d0s0 Available 2045730 blocks Yes

Device Relocation Information:

Device Reloc Device ID

c1t2d0 Yes id1,sd@SSEAGATE_ST15230N_SUN4.2G00138897

c1t3d0 Yes id1,sd@SSEAGATE_ST15230N_SUN4.2G00211818

Dans notre exemple nous avons ajouté deux partitions au pool hsp000. Le résultat montre bien que les partitions ne sont pas classées par ordre de taille, ce qui pourrait engendrer un problème lors des remplacements. Pour résoudre le problème, il est nécessaire de retirer toutes les partitions du pool et de les ajouter à nouveau une par une et dans l'ordre.

# metahs -d hsp000 c1t2d0s0 c1t2d0s1 c1t3d0s0 c1t3d0s1

hsp000: Hotspares are deleted

# metahs -a hsp000 c1t2d0s0 c1t3d0s0 c1t2d0s1 c1t3d0s1

hsp000: Hotspares are added

# metahs -i

hsp000: 4 hot spares

Device Status Length Reloc

c1t2d0s0 Available 2045730 blocks Yes

c1t3d0s0 Available 2045730 blocks Yes

c1t2d0s1 Available 6293256 blocks Yes

c1t3d0s1 Available 6293256 blocks Yes

Device Relocation Information:

Device Reloc Device ID

c1t2d0 Yes id1,sd@SSEAGATE_ST15230N_SUN4.2G00138897

c1t3d0 Yes id1,sd@SSEAGATE_ST15230N_SUN4.2G00211818

Cette fois-ci les partitions sont bien classées par ordre de taille.

Suppression :

Un hot spare pool se supprime de la même manière qu'un volume en utilisant la commande metaclear. Il faut, tout comme pour les volumes, que ce hot spare ne soit pas en activité, c'est-à-dire qu'aucun volume n'utilise ce pool. Dans le cas où un remplacement aurait eu lieu, il faudra d'abord remplacer le disque défectueux avant d'effacer le hot spare pool. <a href="/html/articles/vr005.html">(cf. Vol2 - Maintenance SVM)</a>

# metaclear hsp000

metaclear: heckel: hsp000: hotspare pool in use

# metastat -p d2

d2 -m d10 d20 1

d10 1 1 c1t0d0s0 -h hsp000

d20 1 1 c1t1d0s0 -h hsp000

Dans l'exemple ci-dessus on peut observer que la suppression a échoué car le hot spare pool est en cours d'utilisation. En étudiant le résultat de la commande metastat on peut voir que les sous-miroirs d10 et d20 utilisent ce pool. Il va falloir retirer les volumes de hot spare. Pour cela on utilise à nouveau la commande metaparam avec l'option -h mais en spécifiant cette fois ci "none" comme argument. Ensuite on peut supprimer le hot spare pool.

# metaparam -h none d10

# metaparam -h none d20

# metaclear hsp000

hsp000: Hotspare pool is cleared

Tout comme nous avons ajouté des slices au hot spare, il est également possible de les supprimer. Pour cela on utilise la commande metahs suivie de l'option -d. Cette méthode peut être utilisée pour supprimer un hot spare qui serait en cours d'utilisation.

# metahs -d hsp000 c1t0d0s0

hsp000: Tranche dynamique supprimée

# metahs -d hsp000 c1t1d0s0

hsp000: Tranche dynamique supprimée

# metastat hsp000

hsp000: est vide

# metaclear hsp000

hsp000: Réserve de tranches dynamiques supprimée


Voilà, le premier article SVM est terminé. Mais tout n'est pas fini car il nous reste à voir toutes les opérations de maintenance liées à SVM. Je traiterais ce vaste sujet dans l'article 

J'aboderais notamment la vérification des volumes, la mise en mirroir de la partition root, l'échange d'un disque avec ou sans hot spare, le montage des volumes en boot cdrom et la sauvegarde des volumes sans arrêt de service.
Je reste bien entendu à votre disposition pour vos commentaires ou vos questions...

http://docs.sun.com/app/docs/doc/817-0403

http://docs.sun.com/app/docs/doc/817-5093