Forum Astuces.divers Création d'un Array Raid 1 logiciel sans perte de données

Posté par  .
Étiquettes :
5
18
avr.
2009
Depuis longtemps, je cherchais faire des sauvegardes automatiques de mes données sur 2 disques différents. rsync faisait très bien son travail jusqu'au jour où j'ai décidé de regarder d'un peu plus près le Raid1. Ma carte mère gère nativement de Raid 1 mais de peur de perdre "le contrôle" de mes disques, j'ai donc décidé de me lancer dans l'aventure du Raid 1 logiciel.

Je vais donc tenter de vous expliquer ici comment faire sans perdre vos précieuses données. Tout ce qui va se passer par la suite ici fonctionne parfaitement sous Ubuntu 8.10 Server.

Nous allons tout d'abord considérer que nous avons deux partitions en ext3 /dev/sdb1 et /dev/sdd1. Toutes les données sont contenues sur la partition /dev/sdb1. Nous voulons que nos données soient accessibles à partir du point de montage /mnt/mirror1.

C'est parti !

Tout d'abord, formatez /dev/sdd1 en ext3 afin d'avoir une partition toute propre. Ensuite on installe mdam.
sudo -s
sudo apt-get install mdadm

On démonte et paramètres nos partitions.
umount /mnt/mirror1
parted -s /dev/sdb set 1 raid on
parted -s /dev/sdd set 1 raid on

Maintenant, nous allons créer notre array en raid 1. Attention : la partition contenant vos données doit IMPÉRATIVEMENT être la première passée en paramètre à mdadm.
mdadm /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdd1
Répondre "y" à la question qui vous sera posée. Notre array est maintenant actif. Montons le et vérifions que nos données sont toujours là.
mount -t ext3 /dev/md0 /mnt/mirror1
ls -l /mnt/mirror1


Bon c'est bien mais il faudrai que tout ça se fasse automatiquement au démarrage.
mv /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.bak
echo MAILADDR root > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf

touch /etc/init.d/mount_raid.sh
chmod +x /etc/init.d/mount_raid.sh
nano /etc/init.d/mount_raid.sh

Puis collez ceci dans le fichier :
#! /bin/bash
modprobe md
mdadm --assemble /dev/md0
mount -t ext3 /dev/md0 /mnt/mirror1
echo " * Raid array mounted"


Il faut maintenant que ce script soit lancé à chaque démarrage de la machine :
ln -s /etc/init.d/mount_raid.sh /etc/rc0.d/S10mount_raid
ln -s /etc/init.d/mount_raid.sh /etc/rc1.d/S10mount_raid
ln -s /etc/init.d/mount_raid.sh /etc/rc2.d/S10mount_raid
ln -s /etc/init.d/mount_raid.sh /etc/rc3.d/S10mount_raid
ln -s /etc/init.d/mount_raid.sh /etc/rc4.d/S10mount_raid
ln -s /etc/init.d/mount_raid.sh /etc/rc5.d/S10mount_raid
ln -s /etc/init.d/mount_raid.sh /etc/rc6.d/S10mount_raid


On reboot :
reboot

Une fois rebootée, vous pouvez vérifier la synchro de vos disques en tapant
cat /proc/mdstat
Vous obtiendrez quelque chose du style :
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb1[0] sdd1[1]
976759936 blocks [2/2] [UU]
[====>................] resync = 21.5% (210098752/976759936) finish=122.3min speed=104443K/sec


Profitez maintenant de vos données !! Il faut compter environ 3 heures pour synchroniser 1To de données.
  • # Ne pas confondre...

    Posté par  (site web personnel) . Évalué à 4.

    Le Raid quelle que soit sa déclinaison ne dispense pas de devoir faire des sauvegardes. Un fichier modifié ou supprimé par mégarde ne pourra pas être récupéré sans backup...
    Sinon je suis surpris du peu de temps nécessaire pour construire ta pile Raid. Il y avait vraiment 1 To complet de données ?
    Question subsidiaire: les 2 partitions sont de taille identique au cylindre près ?
    En tous cas merci pour ce petit howto qui sera certainement utile à certains.
    • [^] # Re: Ne pas confondre...

      Posté par  . Évalué à 2.

      Bonsoir,
      Je n'ai pas vérifié si mes deux partitions sont de tailles identiques au cylindre près, mais chacune occupe l'intégralité d'un disque de 1To, les 2 disques utilisés sont eux, exactement les mêmes.

      J'avoue que ma partition ne contenait que ~920Go de données.
  • # Utiliser l'autodétection

    Posté par  (site web personnel) . Évalué à 3.

    Il n'y a pas besoin d'utiliser des shell scripts pour assembler et monter le RAID au démarrage. Il est beaucoup plus simple et plus propre de le faire faire par le Kernel automatiquement en :

    - Marquant les partitions physiques comme étant de type "Linux raid autodetect" (0xfd) avec fdisk ;
    - Puis en ajoutant /dev/md0 au fstab.

    Avec ça, le kernel assemblera automatiquement l'array au démarrage, créera /dev/md0 qui sera monté de façon classique par le fstab.

    C'est mentionné dans le Software-RAID HOWTO : http://tldp.org/HOWTO/Software-RAID-HOWTO-7.html#ss7.2
    • [^] # Re: Utiliser l'autodétection

      Posté par  . Évalué à 2.

      Bonsoir,
      Je propose d'utiliser un script maison pour monter l'array car j'ai rencontré de nombreux problèmes avec la solution que vous proposez. Dans le cas où le kernel puis mdadm font correctement leur travail, le script ne pose aucun soucis. En revanche, si le raid n'est pas détecté automatiquement, rien n'est monté au démarrage. Le script est donc là pour faire le travail au cas où il n'a pas été fait avant.

      Bonne soirée.
      • [^] # Re: Utiliser l'autodétection

        Posté par  (site web personnel) . Évalué à 1.

        "j'ai rencontré de nombreux problèmes avec la solution que vous proposez"

        Moi pas. J'ai trois arrays qui tournent comme ça et ils ne m'ont jamais posé la moindre surprise.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.