Migration d'une installation Debian simple vers un RAID

Installation Debian

Commencer par une installation classique Debian. Dans mon cas j'installe un NAS, j'ai donc commencé par installer avec le schéma de partitions suivant :

  • Partition root / ; 60 Go
  • Partition swap : 8 Go
  • Le reste du disque sera utilisé plus tard

J'ai ensuite choisi un système minimal et j'ai donc installé les options suivantes :

  • Serveur SSH pour l'accès à distance
  • Utilitaires Debian

Pour l'instant je n'ai branché qu'un disque dur.

Migration en RAID1

Brancher maintenant le second disque. /dev/sda sera le disque original /dev/sdb sera le second disque qui est vierge pour le moment

Se connecter en root et ensuite installer mdadm pour gérer le raid, puis rsync

aptitude install mdadm

Confirmer “all” pour que tous les volumes RAID soient montés au démarrage

On passe en mode mono utilisateur

telinit 1

Copier maintenant la table des partitions du disque /dev/sda au disque /dev/sdb

sfdisk -d /dev/sda | sfdisk --force /dev/sdb

Vérifier que les tables des partitions sont identiques

sfdisk -l

Dans mon cas :

Disk /dev/sda: 243201 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1   *      0+   7294-   7295-  58592256   83  Linux
/dev/sda2       7294+   8267-    973-   7812096   82  Linux swap / Solaris
/dev/sda3          0       -       0          0    0  Empty
/dev/sda4          0       -       0          0    0  Empty

Disk /dev/sdb: 243201 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdb1   *      0+   7294-   7295-  58592256   83  Linux
/dev/sdb2       7294+   8267-    973-   7812096   82  Linux swap / Solaris
/dev/sdb3          0       -       0          0    0  Empty
/dev/sdb4          0       -       0          0    0  Empty

Changer le type des partitions du disque /dev/sdb1 (root /) et /dev/sdb2 (swap) en Raid autodetect

sfdisk --change-id /dev/sdb 1 fd
sfdisk --change-id /dev/sdb 2 fd

On créer maintenant un RAID1 en marquant /dev/sdb comme missing pour éviter que le disque source soit effacé

mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2

Confirmer par “yes” pour créer le RAID.

On vérfie maintenant que le RAID est démarré

cat /proc/mdstat

et voici le résultat

Personalities : [raid1] 
md1 : active raid1 sdb2[1]
      7807936 blocks super 1.2 [2/1] [_U]
      
md0 : active raid1 sdb1[1]
      58559360 blocks super 1.2 [2/1] [_U]
      
unused devices: <none>

Le [_U] indique qu'il manque un disque, quand le raid sera complet il y aura [UU]

On formatte alors le RAID /dev/md0 en ext4 et l'on crée le swap sur /dev/md1

mkfs.ext4 /dev/md0
mkswap /dev/md1

On monte le RAID /dev/md0

mkdir /mnt/newraid
mount /dev/md0 /mnt/newraid

On copie maintenant les données

cp -dpRx / /mnt/newraid

Récupérer la version de kernel

uname -r

Ici 3.2.0-4-amd64

Préparation du menu Grub

cp /mnt/newraid/etc/grub.d/40_custom /mnt/newraid/etc/grub.d/09_swraid1_setup
nano /mnt/newraid/etc/grub.d/09_swraid1_setup

Le résultat doi etre #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry 'Debian, with SWRaid' –class ubuntu –class gnu-linux –class gnu –class os {

  insmod mdraid1x
  insmod ext2
  set root='(md/0)'
  linux   /boot/vmlinuz-3.2.0-4-amd64 root=/dev/md0 ro   quiet
  initrd  /boot/initrd.img-3.2.0-4-amd64

}

On récupere les UUID des Raids md0 et md1

blkid /dev/md0 /dev/md1

Dans mon cas : /dev/md0: UUID=“6df832e5-9536-487a-833f-34dac807f9a3” TYPE=“ext4” /dev/md1: UUID=“0a73eeb3-3883-4906-a247-b16243055425” TYPE=“swap”

On édite /etc/fstab et on remplace les UUID actuels par ceux du RAID

nano /mnt/newraid/etc/fstab

Au final le fichier doit ressembler à cela:

# /etc/fstab: static file system information.

# # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / is now /dev/md0 UUID=6df832e5-9536-487a-833f-34dac807f9a3 / ext4 errors=remount-ro 0 1 # swap is now /dev/md1 UUID=0a73eeb3-3883-4906-a247-b16243055425 none swap sw 0 0

Préparation du Chroot

mount --bind /sys /mnt/newraid/sys
mount --bind /proc /mnt/newraid/proc
mount --bind /dev /mnt/newraid/dev
chroot /mnt/newraid/

On enregistre maintenant la configuration RAID dans /etc/mdadm/mdadm.conf

mdadm --examine --scan >> /etc/mdadm/mdadm.conf 

Vérifier la configuration raid en éditant le fichier mdadm.conf

nano /etc/mdadm/mdadm.conf

On met a jour Grub

On installe maintenant Grub sur le sdb

grub-install /dev/sdb --recheck
grub-install /dev/sda --recheck

update-initramfs -u
update-grub  
 

On éteint la machine

reboot

On débranche

  • Partager le signet (social bookmarking)
  • Partager "Migration d'une installation Debian simple vers un RAID" sur del.icio.us
  • Partager "Migration d'une installation Debian simple vers un RAID" sur Digg
  • Partager "Migration d'une installation Debian simple vers un RAID" sur blogmarks
  • Partager "Migration d'une installation Debian simple vers un RAID" sur Google
  • Partager "Migration d'une installation Debian simple vers un RAID" sur Facebook
  • Partager "Migration d'une installation Debian simple vers un RAID" sur Twitter