Outils pour utilisateurs

Outils du site


config:openbsd:raid_logiciel

Raid logiciel

Depuis que j'ai changé de serveur (t'as vu mes gros disques durs ?), j'ai envie de mettre deux disques en mode “miroir” (à savoir que les données sont copiées en direct sur les deux disques à la fois, au cas où une défaillance surgirait).

Pour ce faire, je connais (pas trop mal) md (multiple device) et/ou LVM sous Linux. Seulement voilà, j'ai uniquement un OpenBSD installé sur le serveur.
Chouette, un peu de recherche ! :)

Sous OpenBSD, il faut utiliser softraid0 (un pilote dédié) pour faire du RAID logiciel.

Le “miroir” est en fait du RAID en mode 1 ou RAID1.

Pour configurer tout ça, il existe un utilitaire : bioctl. bioctl permet de piloter les contrôleurs RAID matériels et l'émulation logicielle, cas de figure qui nous intéresse ici.

Extrait de la manpage :

     -c raidlevel
             Create a softraid(4) device of level raidlevel.  The device must
             begin with ``softraid'' followed by a number.

             Valid raidlevels are:

                   0       RAID 0: A striping discipline.
                   1       RAID 1: A mirroring discipline.
                   4       RAID 4: A striping discipline with fixed parity
                           chunk.
                   5       RAID 5: A striping discipline with floating parity
                           chunk.
                   C       CRYPTO: An encrypting discipline.
                   c       CONCAT: A concatenating discipline.

             The RAID 0, RAID 1 and CONCAT disciplines require a minimum of
             two devices to be provided via -l, RAID 4 and RAID 5 require at
             least three devices, and the CRYPTO discipline requires exactly
             one.

Tiens, il semblerait que cela puisse aussi servir à crypter des données… ^^

Configuration de la première grappe

Bon, pour pouvoir mettre “ça” en place, il faut des partitions (au sens BSD…) identiques en taille et possédant un type RAID.
Voici mon premier disque sd0 :

#                size           offset  fstype [fsize bsize  cpg]
  a:            10.0G               64  4.2BSD   2048 16384    1 # /
  b:             8.0G         20980864    swap                   # none
  c:           931.5G                0  unused                   
  d:            15.0G         37752768  4.2BSD   2048 16384    1 # /usr
  e:            10.0G         69224064  4.2BSD   2048 16384    1 # /usr/local
  f:             4.0G         90188896  4.2BSD   2048 16384    1 # /tmp
  g:            10.0G         98574816  4.2BSD   2048 16384    1 # /var
  h:            10.0G        119539648  4.2BSD   2048 16384    1 # /home
  i:           864.5G        140504480    RAID                   

et mon second sd1 :

#                size           offset  fstype [fsize bsize  cpg]
  a:            10.0G               64  4.2BSD   2048 16384    1 
  c:           931.5G                0  unused                   
  i:           864.5G        140504480    RAID                   

On peut voir que les deux partitions i présentent les qualités requises (et on peut aussi voir que je “perds” +/- 55Go sur le deuxième disque. Qui sait, ça pourrait être utile plus tard…). On y va !

bioctl -c 1 -l /dev/sd0i,/dev/sd1i softraid0

La sortie nous indique que le disque a bien été constitué : sd4 (j'ai déjà 4 disques sur la machine : sd0,sd1, sd2 et sd3).
Vérifions ça :

/root #> bioctl softraid0
Volume      Status               Size Device  
softraid0 0 Online       928263709184 sd4     RAID1
          0 Online       928263709184 0:0.0   noencl <sd0i>
          1 Online       928263709184 0:1.0   noencl <sd1i>

Il paraît que c'est mieux d'initialiser le premier secteur, histoire que disklabel s'y retrouve :

/root #> dd if=/dev/zero of=/dev/sd4 bs=1m count=1

Deuxième grappe

Faisons la même chose sur sd2 :

#                size           offset  fstype [fsize bsize  cpg]
  a:           931.5G               64    RAID                   
  c:           931.5G                0  unused                   

Et sd3 :

#                size           offset  fstype [fsize bsize  cpg]
  a:           931.5G               64    RAID                   
  c:           931.5G                0  unused                   
/root #> bioctl -c 1 -l /dev/sd2a,/dev/sd3a softraid0
/root #> bioctl softraid0                                                       
Volume      Status               Size Device  
softraid0 0 Online       928263709184 sd4     RAID1
          0 Online       928263709184 0:0.0   noencl <sd0i>
          1 Online       928263709184 0:1.0   noencl <sd1i>
softraid0 1 Online      1000201970176 sd5     RAID1
          0 Online      1000201970176 1:0.0   noencl <sd2a>
          1 Online      1000201970176 1:1.0   noencl <sd3a>

Et la suite

Dans le cas d'une utilisation “normale”, il suffirait ensuite de mettre en place une partition sur les deux nouveaux disques (sd4 et sd5), puis de les formater :

disklabel -E sd4
disklabel -E sd5
newfs -m 0 /dev/sd4a  # Possible perte de performances : 'man tunefs'
newfs -m 0 /dev/sd5a  # Possible perte de performances : 'man tunefs'

Mais ce serait trop simple ! :p

Dans mon cas, j'ai décidé de crypter ces partitions pour mettre en place un NAS.

config/openbsd/raid_logiciel.txt · Dernière modification: 2013/02/06 21:32 par cyriac