Creation d'un Raid 1 (mirroring) sous Solaris

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Le système Solaris intègre le package DiskSuite qui permet de faire du raid1 d'un filesystem en UFS grace à LVM, ce tuto explique comment y arriver. Il va de soit qu'il faut deux disques de meme capacité...

2 Déroulement

Voila les étapes nécessaires :
Unez fois qu'on est prêt à Mirrorer un disque, on affiche ses partitions avec la commande format :

Format
 
Searching for disks...done
 
 
AVAILABLE DISK SELECTIONS:
       0. c1t0d0 <SUN146G cyl 14087 alt 2 hd 24 sec 848>  root
          /[email protected]/[email protected]/[email protected]/[email protected]/[email protected],0
       1. c1t1d0 <HITACHI-H101414SCSUN146G-SA25-136.73GB>
          /[email protected]/[email protected]/[email protected]/[email protected]/[email protected],0

On choisit le 1er disque (si c'est celui qui sera dupliquer), puis :

format>partition

et on affiche la table des partitions avec "p" :

partition> p
Volume:  root
Current partition table (original):
Total disk cylinders available: 14087 + 2 (reserved cylinders)
 
Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 - 14086      136.71GB    (14087/0/0) 286698624
  1 unassigned    wm       0                0         (0/0/0)             0
  2     backup    wm       0 - 14086      136.71GB    (14087/0/0) 286698624
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm       0                0         (0/0/0)             0
  6 unassigned    wm       0                0         (0/0/0)             0
  7 unassigned    wm       0                0         (0/0/0)             0

Remarque : Sous Solaris comme sou BSD, la 3e partition (no2) est en fait l'ensemble du disque.

Donc maintenant on a une vue sur nos partitions existantes...

2.1 UFS

IMportant : Il faut créer une petit partition d'environ 20mb qui accueillera les "metadata" concernant le raid1. Ces metadata seront les donnée utilisé par DiskSuite.
La première étape sera de copier la table des partitions du 1er disque sur le 2e.
Puis on créera des base de donnée pour les metadonnées.
Puis nous déciderons manuelement de choisir quelle partition sera mirrorée en créant des sous mirroirs.
On changera le vfstab (le fichier qui indique quelle partition monte ou?).
on attachera les sous mirroir à un mirroir.
On créera des alias des mirroirs.
On ajoutera cet alias au "boot-device".

2.2 ZFS

Nous allons simplement créer une partition identique à celle sur le disque master. et la mettre en root.
Passez directement à Copie de la table de partition sur le 2e disque

3 Création d'une petite partition pour les metadonné

partition> p Volume: root Current partition table (original): Total disk cylinders available: 14087 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks

 0       root    wm       0 - 14086      136.71GB    (14087/0/0) 286698624
 1 unassigned    wm       0                0         (0/0/0)             0
 2     backup    wm       0 - 14086      136.71GB    (14087/0/0) 286698624
 3 unassigned    wm       0                0         (0/0/0)             0
 4 unassigned    wm       0                0         (0/0/0)             0
 5 unassigned    wm       0                0         (0/0/0)             0
 6 unassigned    wm       0                0         (0/0/0)             0
 7 unassigned    wm       0                0         (0/0/0)             0

</syntaxhighlight>

On rentre le numero de la partition à éditer et "Entrer" On choisit le tag "unassigned" flag : vm size : 20mb

puis on quitte :

label

4 Copie de la table de partition sur le 2e disque

prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2

Utilisez le 2ème slice pour indiquer tout le disque.

5 Création de base de donnée metadonnée pour DiskSuite

metadb -a -f -c2 /dev/dsk/c0t0d0s3 /dev/dsk/c0t1d0s3

ATTENTION à choisir sur les deux disques la bonne lettre de partition (la petite qu'on a créer)

6 création des sous mirroir

6.1 UFS

Imaginons qu'on souhaite mirrorer les 6 partitions du disque (excepté le swap) par exemple / /usr /var /opt /home et /etc

Commencons par le / (root partition) :

 metainit -f d10 1 1 c0t0d0s0 
 metainit -f d20 1 1 c0t1d0s0
 metainit d0 -m d10
 metaroot d0 (Use this command only on the root slice!)

ATTENTION à entrer les bon noms de disque. Donc là on a associé la partition contenant le / sur le 1er disque à la parition mirroir qui sera sur le 2e disque, puis on a indiqué que la 1er partition sera le maitre, puis on a spécifié que c'était la partition root.

Il faut faire ca pour chaque partition (excepté la dernière commande)

Pour le /usr :

 metainit -f d11 1 1 c0t0d0s1
 metainit -f d21 1 1 c0t1d0s1
 metainit d1 -m d11

Pour le /var :

 metainit -f d14 1 1 c0t0d0s4
 metainit -f d24 1 1 c0t1d0s4
 metainit d4 -m d14

Pour le /opt :

 metainit -f d15 1 1 c0t0d0s5
 metainit -f d25 1 1 c0t1d0s5
 metainit d5 -m d15

Pour le /etc :

 metainit -f d16 1 1 c0t0d0s6
 metainit -f d26 1 1 c0t1d0s6
 metainit d6 -m d16

Pour le /home :

 metainit -f d17 1 1 c0t0d0s7
 metainit -f d27 1 1 c0t1d0s7
 metainit d7 -m d17

On peut voir les metadonnée avec la commande

metastat

6.2 ZFS

zpool attach -f rpool c0t0d0s0 c0t1d0s0

Une fois terminé, c'est bon ! Vous pouvez vous arrêter là, c'est fini pour le ZFS

7 Edition du fichier vfstab

vi /etc/vfstab

Dorénavant le vsftab ne pointera plus sur un disque mais sur une grappe, voici les lignes à éditer:

Avant, pour le / : /dev/md/dsk/d30 /dev/md/rdsk/d30 / ufs 1 no logging Après, pour le / : /dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no logging

d0 sera la partition pour le /, puis d1, d2, d3, etc...

A ce moemnt là on peut redemarrer avec ces deux commandes successivement :

lockfs -fa
init 6

8 Attachement des mirroir aux sous mirroirs

 metattach d0 d20
 metattach d1 d21
 metattach d4 d24
 metattach d5 d25
 metattach d6 d26
 metattach d7 d27

ces commandes lanceront la synchonisation des mirroir et sous mirroir entre eux, on peut voir l'avancement avec "metastat".

Puis on change le crash dump :

dumpadm -d `swap -l | tail -1 | awk '{print $1}'`

9 création des alias des mirroirs

Il nous faut connaitre le chemin absolu du disque mirrorré

ls -l /dev/dsk/c0t1d0s0
lrwxrwxrwx   1 root     root          50 Jan 16 10:20 /dev/rdsk/c0t1d0s0 -> ../../devices/[email protected],0/[email protected],1/[email protected]/dad@1,0:a

Avec ca on va créer un alias pour le mirroir, en remplacant le "dad" par "disk":

eeprom "nvramrc=devalias mirror /[email protected],0/[email protected],1/[email protected]/[email protected],0:a"
eeprom "use-nvramrc?=true"

10 Ajout des mirrois au boot device

eeprom "boot-device=disk mirror net"

Puis si l'on a que 2 disque, il faut rajouter cette ligne au fichier /etc/system :

set md:mirrored_root_flag = 1

11 Ressources

http://www.brandonhutchinson.com/Mirroring_disks_with_DiskSuite.html