¿Cómo mdse ensamblan los dispositivos durante el arranque en Ubuntu? ¿Es /etc/mdadm/mdadm.confrealmente el factor relevante aquí?
Mi mdadm.confsonido es y lo comprobé mientras estaba en el entorno del CD de rescate. Al ejecutarlo mdadm -A --scan, encuentra y asigna los nombres de los dispositivos según lo deseado. El mdadm.confcontiene AUTO -alla sacar todo el automatismo de montaje de las matrices.
Lo que necesito hacer es poder ensamblar automáticamente los mddispositivos como se describe en mdadm.confel momento del arranque o que al ensamblar respeta el super-minorvalor de la matriz 0.9 y name(aparentemente <hostname>:<super-minor>) para las matrices 1.2 y hace lo correcto sin él mdadm.conf. ¿Qué pieza del rompecabezas me estoy perdiendo?
Tengo el siguiente problema. Hay dos mddispositivos con RAID1 ( md0y md1) y uno con RAID6 ( md2). Me refiero a ellos por los nombres de dispositivo deseados . md0tiene metadatos versión 0.9, los otros dos tienen versión 1.2. md0los mapas /y los otros dos no son relevantes para el arranque .
La unidad de arranque tiene particiones GPT. Hay un pegamento "BIOS Boot Partition" ( sda1) en él. grub-install --no-floppy /dev/sdainforma de éxito.
md0 == sda3 + sdb3md1 == sda2 + sdb2md2 == sdc + sdd + sde + sdf + sdg + sdhsda1ysdb1son "BIOS Boot Partition" cada uno
GRUB2 está contento con el /boot/grub/devicemaplo di y añadí part_gpt, raid, mdraid09y ext2a los módulos de precarga en GRUB2.
Como todavía tenía mi volumen raíz en el entorno de rescate, simplemente monté todo y luego lo chrootedité:
mkdir /target
mount /dev/md0 /target
mount -o bind /dev /target/dev
mount -o bind /dev/pts /target/dev/pts
mount -o bind /sys /target/sys
mount -o bind /proc /target/proc
chroot /target /bin/bash
Desde allí reinicio el super-minorencendido md0(con metadatos 0.9) y el nameencendido md1y md2. También verifiqué que funcionó usando mdadm --detail .... Aparte de eso, ajusté /etc/default/grub, corrí update-gruby también grub-install --no-floppy /dev/sday grub-install --no-floppy /dev/sdb.
Después de eso, al arrancar, siempre me dejo caer en el initramfsshell de rescate, porque el sistema de archivos raíz no se pudo montar. La razón, después de verificar, /proc/mdstatparece ser que el mddispositivo respectivo ni siquiera se ensambla y ejecuta. Sin mencionar que las otras dos unidades (metadatos versión 1.2) reciben un número de dispositivo en algún lugar en el rango de 125..127.
Nota: GRUB2 sale del disco de arranque. Por lo menos, se ha incrustado correctamente. El problema es la transición del rootfssistema de archivos raíz inicial al correcto.

/dev/mdXexactamente por esta razón. Usar en su/dev/md/NAMElugar. Eso nunca cambiará./etc/fstab. La configuración no depende de los nombres, todavía me gustaría que fueran así;)Not to mention that the other two (meta-data version 1.2) drives receive a device number somewhere in the 125..127 range. No sé lo suficiente sobre cómo ubuntu ensambla volúmenes de incursión para responder al problema más grande.Respuestas:
Proceso básico de arranque
Comida
Hay un modo alternativo, para cuando Grub no puede leer el sistema de archivos, ya sea porque no había suficiente espacio para incrustar todo ese código en el registro de arranque, o porque no conoce el sistema de archivos o las capas debajo de él. En este caso, GRUB incorpora una lista de sectores y lee el código de ellos. Esto es mucho menos robusto y es mejor evitarlo. Incluso puede hacer kernel e initramfs de esa manera (no estoy seguro).
Núcleo
El kernel luego toma el control y realiza una gran cantidad de hardware básico init. Esta etapa es bastante rápida. A continuación, el núcleo desempaqueta initramfs a tmpfs y busca un
/inittmpfs en ese. Luego se ejecuta (en el sentido normal, el núcleo se está ejecutando por completo en este punto)/init. Este es, por cierto, un antiguo script de shell.Initramfs
Puede extraer los initramfs a mano haciendo algo como
mkdir /tmp/foo; cd /tmp/foo; zcat /boot/initrd.img-3.8-trunk-amd64 | cpio -idmv.Initramfs es responsable de cargar todos los controladores, iniciar udev y encontrar el sistema de archivos raíz. Este es el paso que le está fallando: no puede encontrar el sistema de archivos raíz, por lo que se rescata.
Una vez que el initramfs ha finalizado, tiene el sistema de archivos raíz montado y entrega el control a / sbin / init.
Sistema de arranque
En este punto, su init se hace cargo: creo que Ubuntu está usando el sistema de arranque actualmente.
Que esta roto
No estoy completamente seguro de lo que está roto (parte, lo confieso, porque estoy mucho más familiarizado con Debian que Ubuntu, aunque es similar), pero tengo un par de sugerencias:
mdadm.conf. Es posible que solo necesite ejecutarupdate-initramfs -upara solucionarlo.fuente
De acuerdo, descubrí que me faltaba simplemente una pieza. Las
initrdimágenes no habían sido actualizadas después de jugarmdadm.conf.¿Entonces qué hice?
Arranqué en el sistema de rescate del CD de instalación del servidor Ubuntu. Elija ejecutar un shell desde el entorno del instalador y no usar un sistema de archivos raíz. Luego (comentarios precedidos por
#):Esto suena complicado, pero se puede hacer también con una
bashsola línea (aunque sea larga):Esto utiliza los nombres actuales de los
mddispositivos y sus UUID y crea unadevicemaplectura de GRUB2. Asumiendo que lo anterior se hizo correctamente, ya debería tener los nombres de dispositivo correctos.Más allá:
Asegúrese de que contenga:
si ha configurado su
/o/bootpartición para ser metadatos versión 1.2, use enmdraid1xlugar demdraid09.Más lejos:
Este paso anterior era el eslabón perdido . Aparentemente, esto se asegura de que
mdadm.conftenga efecto en el arranque.Después de eso, deje el
chrooty reinicie.fuente