Je vais vous guider dans la configuration d’un RAID1 logiciel avec RAIDFrame sous NetBSD. Cette procédure fonctionne également sous OpenBSD (votre noyau devant intégrer le support RAIDframe) ou encore FreeBSD 4/5. Le RAID peut être créé à chaud sans LiveCD et à distance, mais il est recommandé d’avoir un accès au BIOS setup. Si vous ne faites pas d’erreur de calcul ou de frappe, tout se passera bien sinon pensez d’emblée à faire une backup !

La procédure consiste à créer le RAID1 initialement sur le second disque, à y recopier le système et les données « live » du premier disque. Suite à cela, un redémarrage activera le RAID du second disque, auquel le premier disque sera ajouté.

Etape 1 : installation du système

Je débute par l’installation d’un système NetBSD 5.0.1/amd64. Le système est installé sur le premier disque dur SCSI (/dev/sd0) d’une capacité de 8 Go (l’exemple est ici réalisé sous VMware), dont l’ensemble est affecté au slice de NetBSD (partition DOS 0). Au niveau des partitions BSD, je crée le strict minimum par souci de simplification du présent guide : /, swap et  /home.

netbsd# grep sd0 dmesg.boot
sd0 at scsibus0 target 0 lun 0: <VMware,, VMware Virtual S, 1.0>
 disk fixed
sd0: 8192 MB, 1044 cyl, 255 head, 63 sec, 512 bytes/sect x 16777216
 sectors
netbsd# grep sd1 dmesg.boot
sd1 at scsibus0 target 1 lun 0: <VMware,, VMware Virtual S, 1.0>
 disk fixed
sd1: 8192 MB, 1044 cyl, 255 head, 63 sec, 512 bytes/sect x 16777216
 sectors

netbsd# fdisk /dev/sd0
Partition table:
0: NetBSD (sysid 169)
 start 63, size 16777153 (8192 MB, Cyls 0-1044/85/1), Active

netbsd# disklabel -r sd0
# /dev/rsd0d:
total sectors: 16777216

16 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:   8401995        63     4.2BSD   2048 16384     0
 b:    273105   8402058       swap
 c:  16777153        63     unused      0     0
 d:  16777216         0     unused      0     0
 e:   8102053   8675163     4.2BSD   2048 16384     0

La partition d est reservée et correspond au disque dur (la taille de 16777153 correspond bien à la taille du slice NetBSD). La partition c est aussi réservée et correspond au slice NetBSD, englobant toutes les partitions définies par l’utilisateur : a (point de montage /), b (swap) et e (/home). Comme j’utilise tout l’espace disque, la taille de c correspond à celle du disque moins les 63 blocs réservés par l’ID de slice. Ceci se matérialise au niveau de l’offset de c par rapport à d et également de a, qui débute fatalement au  63ème bloc.

A retenir :

  • total sectors = size d
  • size c = size d – 63
  • offset c = offset a = 63

Etape 2 : partitionnement du 2ème disque dur (/dev/sd1)

Le slice NetBSD doit être reproduit à l’identique sur le second disque. Si  les disques ont des tailles différentes, il faut jouer avec fdisk pour créer un slice de la taille de celui du premier disque. Parfois, il est utile d’effacer la table des slices, si le disque a déjà été partitionné :

netbsd# dd if=/dev/zero of=/dev/rsd1d bs=8k count=1

netbsd# fdisk -0ua /dev/rsd1d
Partition table:
0: NetBSD (sysid 169)
 start 63, size 16777153 (8192 MB, Cyls 0-1044/85/1), Active
 PBR is not bootable: All bytes are identical (0x00)

Au niveau des partitions, c’est différent : une unique partition dédiée au RAID est créée. Cette partition va devenir le pseudo-périphérique disque RAID. C’est sur celui-ci que nos partitions /, swap et /home seront créées. RAIDframe impose cette limitation de ne fonctionner que sur une seule partition par disque.

Sur /dev/sd1, on édite la table des partitions et on créé la partition a avec comme type RAID, de taille égale à l’espace disque total moins les 63 blocs d’identification. Pour faire simple, il suffit de dupliquer la ligne de la partition c pour le slice a et y changer le type.

netbsd# disklabel -r -e -I sd1
total sectors: 16777216

4 partitions:
#        size    offset%C