Un peu d'ordre dans la maison
Par hr le mardi 18 septembre 2007, 19:22 - système - Lien permanent
Je viens d'installer un serveur avec plein de SATA dans le ventre, la bête a 30To de disques répartis sur 2 controleurs Areca ARC-1280ML. L'installation d'une Debian/etch se passe sans problème, noyau 2.6.18-5-686. Après avoir installé le système sur 2 disques connectés à la carte mère (contrôleur ICH5R sur pilote ata_piix), des volumes RAID5 sont créés sur les cartes Areca (pilote arcmsr). Le démarrage s'arrête sur une invite de commande initramfs, la partition racine est introuvable.
Begin: Waiting for root file system... ...
Done.
Check root= bootarg cat /proc/cmdline
or missing modules, devices: cat /proc/modules ls /dev
ALERT! /dev/sda1 does not exist. Dropping to a shell!
Busybox v1.1.3 (Debian 1:1.1.1-4) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
/bin/sh: can't access tty; job control turned off
(initramfs)
Mais qu'est-ce qu'il nous arrive madame Michu ? Tout simplement, les nouveaux volumes sont détectés par le noyau avant le disque sur lequel est installé le système. Résultat, le système n'est plus sur /dev/sda mais sur /dev/sdc. Et le plus drôle c'est qu'il est parfois sur /dev/sdb parce que les controleurs Areca mettent du temps à se déclarer.
Comment laver l'affront que nous impose ce petit impudent ? En jouant avec la partition RAM d'initialisation, j'ai nommé initramfs.
C'est extrêmement simple, on va demander à la partition de démarrage en RAM de charger les modules sata dans l'ordre qu'on souhaite. Dans notre cas, le pilote ata_piix avant arcmsr. Les outils Debian permettent de faire ça de façon très simple, il suffit d'ajouter les modules qu'on souhaite voir chargés lors du démarrage dans le fichier /etc/initramfs-tools/modules. Les modules doivent être listés, un par ligne dans l'ordre de chargement souhaité. Dans notre cas, il suffit de préciser le module qui prend en charge le disque de démarrage.
# cat /etc/initramfs-tools/modules [...] ata_piix
Il faut maintenant mettre à jour l'image en RAM pour propager ces modifications.
# update-initramfs -v -k 2.6.18-5-686 -t -u Keeping /boot/initrd.img-2.6.18-5-686.dpkg-bak update-initramfs: Generating /boot/initrd.img-2.6.18-5-686 Adding module /lib/modules/2.6.18-5-686/kernel/drivers/scsi/scsi_mod.ko Adding module /lib/modules/2.6.18-5-686/kernel/drivers/scsi/scsi_transport_spi.ko Adding module /lib/modules/2.6.18-5-686/kernel/drivers/scsi/aic7xxx/aic7xxx.ko [...] Adding binary /sbin/mdrun Building cpio /boot/initrd.img-2.6.18-5-686 initramfs Backup /boot/initrd.img-2.6.18-5-686.bak
Un petit redémarrage et tout est revenu en ordre. Et le plus beau, c'est que lorsque vous devrez mettre à jour votre noyau, le nouveau noyau fera automatiquement la reconstruction de l'image RAM d'initialisation.
Commentaires
Bonjour,
Pour information, quelle carte mère as tu utilisée??
Peux tu me répondre sur: pingou789@gmail.com...
Merci d'avance...
La carte mère utilisée est une supermicro X6DHE-G2+, attention ces cartes ont un RAID embarqué qui n'est pas utilisable sous linux (raid hybride moitié hardware, moitié software).