System-Linux

Aller au contenu | Aller au menu | Aller à la recherche

RAID1 logiciel sous GNU/Linux. (partie 1/2)

ext4.png

Si vous souhaitez sécuriser un peu vos données et vous prémunir contre la défaillance d'un disque, il peut être intéressent pour vous de mettre en place une redondance en configurant un RAID1 logiciel.

Sous Linux c'est très simple le seul pré-requis est d'avoir deux disques durs si possible identique.

Préparer les disques

Le plus simple est de reproduire le partitionnement sur les deux disques.

Comme par exemple exemple:

# fdisk -l /dev/sda

Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 17272 cylinders
Units = cylinders of 2048 * 512 bytes

   Device Flag    Start       End    Blocks   Id  System
/dev/sda1             0       122    124928   fd  Linux raid autodetect
/dev/sda2           122      1099   1000448   fd  Linux raid autodetect
/dev/sda3          1099      8912   8000512   fd  Linux raid autodetect
/dev/sda4          8912     17272   8560640   fd  Linux raid autodetect

# fdisk -l /dev/sdb

Disk /dev/sdb (Sun disk label): 64 heads, 32 sectors, 17272 cylinders
Units = cylinders of 2048 * 512 bytes

   Device Flag    Start       End    Blocks   Id  System
/dev/sdb1             0       122    124928   fd  Linux raid autodetect
/dev/sdb2           122      1099   1000448   fd  Linux raid autodetect
/dev/sdb3          1099      8912   8000512   fd  Linux raid autodetect
/dev/sdb4          8912     17272   8560640   fd  Linux raid autodetect

Le type des partions que nous destinons a être redondé doit être le type "fd".

Pour changer le type d'une partition vous pouvez par exemple utiliser l'utilitaire "fdisk" comme suit:

# fdisk /dev/sda

Command (m for help): t
Partition number (1-8): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): w

Créer les grappes de disques

Maintenant que nos disques sont prêt nous allons devoir créer nos volumes RAID1 avec l'utilitaire "mdadm"

exemple de création:

# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

Le RAID va se construire tous seul à partir de maintenant, mais vous pouvez vérifier sont état comme suit:

# mdadm --detail /dev/md0 

ou de façon plus "dynamique":

# watch cat /proc/mdstat

On sauvegarde ensuite notre configuration:

# mdadm --detail --scan >> /etc/mdadm.conf

Utiliser notre RAID1

Nous pouvons maintenant formater notre nouveau volume:

# mkfs.ext4 /dev/md0

et ajouter son entrée dans le fstab:

# echo "/dev/md0 /data             ext4    noatime            0 1" >> /etc/fstab

Ne reste plus qu'a monter notre partition:

# mkdir /data; mount /data

Et voila vous disposez d'une partition redondée.

Dans la prochaine partie de cet article nous verrons comment changer un disque en défaut au sein de nos volumes RAID.

A très bientôt.

Par RaX | le mardi, mai 4 2010 07:00

Commentaires

1. Hinault Kévin

mardi, mai 4 2010 | 11:06

Sous Linux c'est très simple le seul prérequis est d'avoir deux disques durs si possible identique.
Au contraire, on déconseille d'avoir deux disques trop identiques, simplement car ça augmente la probabilité d'avoir les deux qui tombent en panne simultanément ou presque.

En effet avant avec les vieux RAID matériel, c'était une convention mais ce n'est plus d'actualité. Une des particularités du RAID Logiciel en miroir est de pouvoir agréger des disques entiers commes de simple partitions. Il est alors possible d'avoir deux disques différents, par exemple 160Go et 500Go mais avec une partition commune de 100 Go.

Au passage, tu aurais pu expliquer pourquoi utiliser un RAID logiciel plutôt qu'un RAID matériel est moins dangeureux : une grappe logicielle est déplaçable, pas une grappe matérielle ou difficilement.

;)

2. metwo

mardi, mai 4 2010 | 12:52

Hello,
Dans ton exemple le disque sda peut-il déjà être plein des données sensibles (dont l'os d'ailleurs, ou faut il obligatoirement avoir un disque vierge ?

Y'a t il un risque sur les données du disque sda (ie y a til des opérations d'ecriture sur le disque)?

Merci pour ce tuto

metwo

3. RaX

mardi, mai 4 2010 | 21:42

@ Kevin: Par identique dans mon esprit c'était en terme de capacité (même si ce n'est pas obligatoire). Ton argument est recevable, mais d'expérience quand j'ai un raid à monter je le fait avec des disques neufs et identiques.

Je me vois mal demander à la personne responsable des achats prend moi un disque de tel marque et un autre de celle-ci.

Si dans mon scénario le risque d'avoir les deux disques qui claquent en même temps existe, pour le moment (je touche du bois), j'ai toujours eut le temps d'en changer avant de perdre les données.

Je pense personnellement que le vrai bon conseil est de ne pas attendre la défaillance d'un disque pour en changer, après 2/3ans de prod on remplace.

Ensuite le but de cet article est de vulgariser au maximum le RAID logiciel Linux. Je ne rentre volontairement pas dans les détails tan le RAID logiciel sous GNU/Linux est souple et qu'il permet de nombreux cas de figure. J'ai donc choisi là le cas le plus simple.

@metwo:

A ma connaissance, malheureusement non, il ne doit pas être plein de données. Dans mon exemple tu constate que je formate le nouveau volume RAID.

Maintenant étant donnée que tu peux créer ton RAID partition par partition tu peux envisager de "jongler" un peu avec tes données pour les copier d'une partition vers un volume raid franchement créé. Pour ta racine c'est tout a fait possible (de la copier à chaud) même si il ne faut pas se louper, entre la configuration du fstab et du boot loader etc...

Bonne soirée.

4. pimovitch

mercredi, mai 5 2010 | 10:26

Bonjour,

On ne peut pas mettre une partition déjà utilisée en miroir.

En effet, mdadm a besoin de stocker des informations de configuration et d'état.
Donc si on utilise un partition dans laquelle il y un FS, les premiers bloques du FS qui contiennent entre autre un superblock, une table des inodes et quelques données seront écrasés et cela corrompra le FS.

Bonne continuation pour le site ;)

5. metwo

jeudi, mai 6 2010 | 12:03

@RaX, Pimovitch :
Merci pour vos précisions et suggestions ;)

A bientôt

6. guiparm

mercredi, mai 26 2010 | 17:37

Bonjour,

j'ai suivi le tuto, et d'ailleurs il est bien réussi ;) , mais j'ose pas tester le RAID 1 (en débranchant sauvagement un disque...)
Pour info j'ai installé Debian sur 2 partition (sda1 SWAP et sda2 / )
Et je pense que j'ai un petit souci dans /etc/fstab.....

Voila ce que j'obtiens, et je voulais m'assurer que tout va bien ^^ :

  1. fdisk -l

Disk /dev/sda: 250.0 GB, 250000000000 bytes
255 heads, 63 sectors/track, 30394 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000242f8

  Device Boot      Start         End      Blocks   Id  System

/dev/sda1 1 122 979933+ fd Linux raid autodetect
/dev/sda2 123 30394 243159840 fd Linux raid autodetect

Disk /dev/sdb: 250.0 GB, 250000000000 bytes
255 heads, 63 sectors/track, 30394 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000242f8

  Device Boot      Start         End      Blocks   Id  System

/dev/sdb1 1 122 979933+ fd Linux raid autodetect
/dev/sdb2 123 30394 243159840 fd Linux raid autodetect

Disk /dev/md0: 1003 MB, 1003356160 bytes
2 heads, 4 sectors/track, 244960 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table

Disk /dev/md1: 248.9 GB, 248995577856 bytes
2 heads, 4 sectors/track, 60789936 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000

Disk /dev/md1 doesn't contain a valid partition table

debian:~# cat /proc/mdstat
Personalities : raid1
md1 : active raid1 sdb21

     243159744 blocks [2/1] [_U]

md0 : active (auto-read-only) raid1 sdb11

     979840 blocks [2/1] [_U]
  1. mdadm --detail /dev/md0

/dev/md0:

       Version : 00.90
Creation Time : Wed May 26 15:10:19 2010
Raid Level : raid1
Array Size : 979840 (957.04 MiB 1003.36 MB)
Used Dev Size : 979840 (957.04 MiB 1003.36 MB)
Raid Devices : 2
Total Devices : 1

Preferred Minor : 0

   Persistence : Superblock is persistent
   Update Time : Wed May 26 17:22:45 2010
State : clean, degraded
Active Devices : 1

Working Devices : 1

Failed Devices : 0
Spare Devices : 0
          UUID : a0198d2a:bd00ef4e:e3866d95:c051e837
Events : 0.18
   Number   Major   Minor   RaidDevice State
0 0 0 0 removed
1 8 17 1 active sync /dev/sdb1

debian:~# mdadm --detail /dev/md1
/dev/md1:

       Version : 00.90
Creation Time : Wed May 26 15:10:43 2010
Raid Level : raid1
Array Size : 243159744 (231.90 GiB 249.00 GB)
Used Dev Size : 243159744 (231.90 GiB 249.00 GB)
Raid Devices : 2
Total Devices : 1

Preferred Minor : 1

   Persistence : Superblock is persistent
   Update Time : Wed May 26 17:25:18 2010
State : clean, degraded
Active Devices : 1

Working Devices : 1

Failed Devices : 0
Spare Devices : 0
          UUID : 32172bb6:ffd5d36e:5844d5e8:c6545dcb
Events : 0.26
   Number   Major   Minor   RaidDevice State
0 0 0 0 removed
1 8 18 1 active sync /dev/sdb2

Voila, si un epersonne pourrait me confirmer que le RAID est opérationnel, sa serait sympa. Merci pour tout, à bientôt.

Cdt Guillaume

7. guiparm

jeudi, mai 27 2010 | 13:03

Bon j'ai fait le test et le RAID n'est pas totalement opérationnel.
Je débranche un disque, le PC reste en invite de commande root, mais aucune commande marche....
Quand je débranche le disque j'ai plusieurs message, dont celui-ci :
Buffer I/O error on device sda2, logical block ......
et aussi
EXT3-fs error (device sda2): ext3_get_inode_loc: unable to readinobe block ......

j'ai également remarquer qu'au démarrage j'ai un erreur :
Mounting local filesystems... mount: mount point none does not exist failed.

Merci pour votre aide, vous pouvez également me contacter par mail.

Cdt

8. RaX

jeudi, mai 27 2010 | 15:47

Salut,

En très rapide avant de te faire une réponse plus complète ce soir. Non ton raid n'est pas fonctionnel avec le retour des commandes que tu nous poste on voit que le disque sda n'est pas fonctionnel dans le RAID.

Essaye de réajouter les partitions de sda dans les volumes raid.

Cdlt.

9. christophe_y2k

mercredi, juin 30 2010 | 15:34

Bonjour,
Ne pas oublier de rendre bootable les deux disques de la grappe en effet en cas de panne si le disque dur bootable tombe en panne le bios va (ou non) démarrer sur le deuxième et si il n'est pas bootable au revoir ...

Il faut donc installer grub sur chaque disque :

  1. grub
  2. device (hd0) /dev/sda
  3. root (hd0,0)
  4. setup (hd0)
  5. quit
  1. grub
  2. device (hd0) /dev/sdb
  3. root (hd0,0)
  4. setup (hd0)
  5. quit

Ne pas oublier non plus avec fdisk de marquer la première partition md1 bootable avec la commande "a"
de chaque disque de la grappe

mon exemple création de la première partition de 512Mo
avec fdisk sur le disque dur sata n°1

  1. fdisk /dev/sda
  2. n Entrée
  3. p Entrée
  4. 1 Entrée
  5. Entrée
  6. +512M Entrée
  7. p Entrée
  8. t Entrée
  9. fd Entrée
  10. p Entrée
  11. a Entrée
  12. 1 Entrée
  13. p Entrée
  14. w Entrée

Cordialement.

10. DisSsha

samedi, août 14 2010 | 21:49

Bonjour,

Dans le cas ou l'on souhaite ne mettre le RAID 1 que sur 1 partition logique de 2 disques ça se passe comment ?
Merci :)