La Distribution Sarge ne propose pas, pour les architectures Sparc, la mise en place d'un RAID soft pendant l'installation, donc pour contourner ce problème nous devons faire une installation provisoire sur une partition qui pourra être réutilisée. Le mieux est de prendre la partition qui sera la swap une fois le RAID1 mis en place. Je vous conseille d'installer sans swap, nous activerons le swap lorsque le Raid sera en place.
Lorsque votre système est installé, il faut installer mdadm qui permet de mettre en place le RAID1:
#apt-get install mdadm
Il suffit de lancer fdisk pour définir les partitions, attention de ne pas toucher à la partition sda1 car vous risquez de perdre votre système fraîchement installé. Attention les partitions qui seront en RAID1 doivent avoir la même taille, la tolérance max est de 1%.
#fdisk /dev/sda
Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 17274 cylinders
Units = cylinders of 2048 * 512 bytes
Device Flag Start End Blocks Id System
/dev/sda1 0 954 976896 83 Linux native
/dev/sda2 954 17274 16711680 fd Linux raid autodetect
/dev/sda3 0 17274 17688576 5 Whole disk
#fdisk /dev/sdb
Disk /dev/sdb (Sun disk label): 19 heads, 248 sectors, 7508 cylinders
Units = cylinders of 4712 * 512 bytes
Device Flag Start End Blocks Id System
/dev/sdb1 u 1 415 975384 82 Linux swap
/dev/sdb2 415 7508 16711108 fd Linux raid autodetect
/dev/sdb3 0 7508 17688848 5 Whole disk
Comme vous pouvez le remarquer, la partition swap débute à 1 et non à 0. Les premiers blocks sur les systèmes de fichiers ext2 et ext3 ne sont pas utilisés, par contre les partitions MD et swap commencent au premier block défini ce qui est gênant car SILO écrit au block 0.
Une fois partitionné, nous pouvons créer le miroir :
#mdadm --create /dev/md0 --level 1 --raid-devices=2 /dev/sda2 /dev/sdb2
Ensuite, nous pouvons vérifier la synchronisation :
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb2[1] sda2[0]
16711040 blocks [2/2] [UU]
[==========>..........] resync = 50.3% (8410688/16711040) finish=7.2min speed=19043K/sec
unused devices:
Une fois synchronisé, vous devez avoir le résultat suivant :
#cat /proc/mdstat :
Personalities : [raid1]
md0 : active raid1 sda2[0] sdb2[1]
16711040 blocks [2/2] [UU]
unused devices:
Ensuite, il faut renseigner le mdadm.conf :
#mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Maintenant nous pouvons formater la partition md0 :
#mkfs.ext3 /dev/md0
Tout d'abord vous devez installer les outils pour compiler le noyau à la sauce Debian :
#apt-get install kernel-package
Pour lancer le menuconfig, nous devons installer libncurses5-dev
#apt-get install libncurses5-dev
Je vous conseille de télécharger le dernier noyau sur le site du noyau Linux.
Une fois téléchargé:
#make menuconfig
Attention de bien mettre en dur les options suivantes :
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
<*> RAID support
< > Linear (append) mode
< > RAID-0 (striping) mode
<*> RAID-1 (mirroring) mode
< > RAID-10 (mirrored striping) mode (EXPERIMENTAL)
< > RAID-4/RAID-5 mode
< > RAID-6 mode (EXPERIMENTAL)
< > Multipath I/O support
< > Faulty test module for MD
< > Device mapper support
Bien sûr, il est nécessaire d'y intégrer aussi les drivers du contrôleur SCSI en dur
Ensuite, il suffit de lancer la compilation:
#make-kpkg clean
#make-kpkg kernel_image
Une fois la compilation terminée:
#dpkg -i ../kernel-image-2.6.x-sparc64_10.00.Custom_sparc.deb (x étant la version de votre noyau)
Il faut d'abord monter la md0 et la partition où le système est installé:
#mkdir /mnt/md0
#mount /dev/md0 /mnt/md0
#mkdir /mnt/sda1
#mount /dev/sda1 /mnt/sda1
Ensuite, nous utilisons rsync pour copier le système sur md0
#apt-get install rsync
#rsync -a /mnt/sda1/ /mnt/md0
Une fois copié, nous allons rentrer dans notre nouveau système :
#chroot /mnt/md0
Ensuite, nous allons modifier le silo.conf
#vi /etc/silo.conf:
partition=1
default=LinuxRaid
read-only
timeout=100
image=/boot/vmlinuz
root=/dev/sda1
label=Linux
initrd=/boot/initrd.img
image=/boot/vmlinuz
append="md=0,/dev/sda2,/dev/sdb2"
root=/dev/md0
label=LinuxRaid
initrd=/boot/initrd.img
Je conseille de laisser l'ancien pour l'instant dans le cas où votre Raid ne démarre pas.
On modifie le /etc/fstab pour prendre au compte le Raid et activer le swap sur la partition /dev/sdb1
#chroot /mnt/md0
#vi /etc/fstab:
#
proc /proc proc defaults 0 0
/dev/sdb1 none swap sw 0 0
/dev/md0 / ext3 defaults,errors=remount-ro 0 1
#/dev/sda1 none swap sw 0 0
/dev/scd0 /media/cdrom0 iso9660 ro,user,noauto 0 0
On formate la partition swap
#mkswap /dev/sdb1
On exécute silo
#silo
/etc/silo.conf appears to be valid
On quitte l'environnement chroot.
#exit
On démonte les partitions
#umount /mnt/sda1
#umount /mnt/md0
Et on reboot
#shutdown -g0 -i6 -y
Dans l'openBoot :
ok boot disk0:1 <= pour démarrer sur la partition 2 du premier disque
Si toutefois, le Raid ne démarre pas, il suffit de redémarrer votre ancien système, au démarrage de Silo, il suffit de taper Linux, une fois démarré, vous devez assembler vos disques:
#mdadm --assemble /dev/md0 /dev/sda2 /dev/sdb2
Ensuite vérifiez le bon fonctionnement de /dev/md0 dans /proc/mdstat. Maintenant, vous pouvez regarder d'où vient le problème.
Maintenant que vous êtes sur votre nouveau système, on peut mettre la partition /dev/sda1 en swap :
# fdisk /dev/sda
Device Flag Start End Blocks Id System
/dev/sda1 u 1 954 975872 82 Linux swap
/dev/sda2 954 17274 16711680 fd Linux raid autodetect
/dev/sda3 0 17274 17688576 5 Whole disk
Formater la partition:
#mkswap /dev/sda1
Activer la swap :
#swapon /dev/sda1
Et la rajouter dans /etc/fstab
#echo "/dev/sda1 none swap sw 0 0" >> /etc/fstab
Vous pouvez modifier le /etc/silo.conf :
#vi /etc/silo.conf
partition=1
default=LinuxRaid
read-only
timeout=10
image=/boot/vmlinuz
append="md=0,/dev/sda2,/dev/sdb2"
root=/dev/md0
label=LinuxRaid
image=/boot/vmlinuz.old
append="md=0,/dev/sda2,/dev/sdb2"
root=/dev/md0
label=LinuxRaidOLD
#silo
/etc/silo.conf appears to be valid
Et voilà vous avez un système Raid 1 sous Debian :-)
Pour surveiller le raid si un disque est fail, un mail est envoyé à root :
# mdadm --monitor --mail=root@domain --delay=120 --daemonise /dev/md0
Pour mettre en panne le disque /dev/sdb par exemple :
# mdadm /dev/md0 --fail /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
Pour supprimer un disque en panne :
# mdadm /dev/md0 --remove /dev/sdb
mdadm: hot removed /dev/sdb
Pour ajouter un disque en RAID 1 :
# mdadm /dev/md0 --add /dev/sdb
mdadm: hot added /dev/sdb
Vérification de /dev/md0
# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.02
Creation Time : Tue Dec 13 22:22:50 2005
Raid Level : raid1
Array Size : 16711040 (15.94 GiB 17.11 GB)
Device Size : 16711040 (15.94 GiB 17.11 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sun Dec 18 22:30:23 2005
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : 794806a5:0840e6e7:29b07997:7355fd9e
Events : 0.2966
Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 18 1 active sync /dev/sdb2