OpenBSD RAID di root e di boot! (testato sulla 3.4-STABLE) 1) Attaccare 3 dischi ide ad un computer, wd0 wd1 e wd2. 2) Installare OpenBSD su /dev/wd2a come root e /dev/wd2b come swap. 3) Creare un kernel di openbsd con le seguenti opzioni compilate in: option RAID_AUTOCONFIG pseudo-device raid 4 # RAIDframe disk driver mettere questo kernel sul cd di installazione o copiarlo dopo sull'harddisk installato in /bsd 4) Partizionare gli altri due dischi come segue (ovviamente le dimensioni possono essere differenti a vostro piacimento, io l'ho fatto su 2 dischi da 1,6Gb per provare: [raid.sick-net]# fdisk wd0 Disk: wd0 geometry: 787/64/63 [3173184 Sectors] Offset: 0 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------ 0: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused *3: A6 0 1 1 - 786 63 63 [ 63: 3173121 ] OpenBSD [raid.sick-net]# fdisk wd1 Disk: wd1 geometry: 3121/16/63 [3145968 Sectors] Offset: 0 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------ 0: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused *3: A6 0 1 1 - 3120 15 63 [ 63: 3145905 ] OpenBSD Adesso creare in questo modo le disklabel, valgono le considerazioni fatte per il partizionamento: wd0: # size offset fstype [fsize bsize cpg] a: 20000 63 4.2BSD 2048 16384 20 # (Cyl. 0*- 19*) b: 512000 20063 swap # (Cyl. 19*- 527*) c: 3173184 0 unused 0 0 # (Cyl. 0 - 3147) d: 2600000 532063 RAID # (Cyl. 527*- 3107*) wd1: # size offset fstype [fsize bsize cpg] a: 20000 63 4.2BSD 2048 16384 20 # (Cyl. 0*- 19*) b: 512000 20063 swap # (Cyl. 19*- 527*) c: 3145968 0 unused 0 0 # (Cyl. 0 - 3120) d: 2600000 532063 RAID # (Cyl. 527*- 3107*) è BASILARE che mettiate [RAID] alla richiesta del tipo di filesystem della partizione d altrimenti non sarete in grado di usare il raid al boot! 5) Adesso si tratta semplicemente di creare i filesystem delle partizioni di boot, e di metterci kernel e bootloader. newfs /dev/wd0a newfs /dev/wd1a mkdir /a mkdir /b mount /dev/wd0a /a mount /dev/wd1a /b cp /bsd /a/bsd cp /bsd /b/bsd cp /boot /a/boot cp /boot /b/boot /usr/mdec/installboot -v /a/boot /usr/mdec/biosboot wd0 /usr/mdec/installboot -v /b/boot /usr/mdec/biosboot wd1 6) Creiamo il raid set vero e proprio: innanzitutto editando il file /etc/raid0.conf: START array # numRow numCol numSpare 1 2 0 START disks /dev/wd0d /dev/wd1d START layout # sectPerSU SUsPerParityUnit SUsPerReconUnit RAID_level_1 128 1 1 1 START queue fifo 100 poi procedendo alla creazione dell'array: raidctl -C /etc/raid0.conf raid0 raidctl -I 100 raid0 raidctl -iv raid0 (qui ci sarà da aspettare un po' per il resync, sui miei 1,6Gb vecchissimi 33mb/sec ci ha messo 14 minuti) a questo punto possiamo fare disklabel -E raid0 e configurarlo come segue: # size offset fstype [fsize bsize cpg] a: 2599936 0 4.2BSD 2048 16384 323 # (Cyl. 0 - 2538) c: 2599936 0 unused 0 0 # (Cyl. 0 - 2538) ovviamente le dimensioni sono a vostra discrezione..., dopodiché procediamo alla creazione del filesystem ed al montaggio in locale per clonarci il sistema attuale: newfs /dev/raid0a mkdir /new mount /dev/raid0a /new poi killiamo tutti i demoni che ci tengono dei file aperti e ci romperebbero le balle e , posizionandoci in / facciamo un bel: tar cf - .cshrc .profile altroot bin boot bsd dev etc home mnt root sbin stand sys var | (cd /new; tar xpf - ) tar cf - tmp | (cd /new; tar xpf - ) tar cf - usr | (cd /new; tar xpf - ) echo "/dev/raid0a / ffs rw,softdep 1 1" > /new/etc/fstab echo "/dev/wd0b none swap sw 0 0" >> /new/etc/fstab echo "/dev/wd1b none swap sw 0 0" >> /new/etc/fstab umount /new 7) A questo punto dovremmo essere pronti per abilitare il raid ad essere bootabile e montabile come root automaticamente: raidctl -A yes raid0 raidctl -A root raid0 8) Spegnere, scollegare wd2, riavviare! Attenzione a un po' di cose ovvie: A-I due hard disk è meglio che siano rispettivamente Primary Slave e Primary Master e che nel bios siano indicati entrambi come bootabili in sequenza! B-Il kernel nella partizioncina a iniziale sia ok e sia la versione giusta! C-Nella partizioncina NON deve esserci nient'altro oltre a bsd e boot o al limite un bsd.qualchecosa di scorta in caso di problemi, se il raid set viene detectato correttamente al boot, overraiderà il settaggio della root e quindi non verranno usate wd0a o wd0b che avrebbero altrimenti dato errore per la mancanza di /sbin/init e conseguentemente di tutto il resto del sistema :)