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:
# %