¿Cómo puedo hacer que mdadm arme automáticamente RAID después de cada arranque?

41

He creado con éxito un RAID (reflejo) mediante la utilización de mdadm. Sin embargo, debo ejecutar los siguientes comandos después de cada inicio:

mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
mdadm --assemble --scan // to start /dev/md0

¿Qué estoy haciendo mal / por qué necesito ejecutar estos comandos en el arranque? ¿Cuál es la forma correcta de iniciar RAID automáticamente con cada (re) arranque?

BreakPhreak
fuente

Respuestas:

35

NB: debe iniciar sesión como root o usar sudo para hacer todo esto ...

  • Usa tu editor favorito para crear o editar /etc/mdadm/mdadm.conf archivo de la siguiente manera:

Si el archivo ni siquiera existe, pegue lo siguiente en el nuevo archivo vacío:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
  • Guarda el archivo

  • Ejecute el siguiente comando para agregar una referencia a su configuración de matriz al final del archivo:

    mdadm --detail --scan & gt; & gt; /etc/mdadm/mdadm.conf

Esto debería agregar una línea como la siguiente al final de mdadm.conf:

ARRAY / dev / md0 level = raid5   num-devices = 3 metadata = 00.90   UUID = a44a52e4: 0211e47f: f15bce44: 817d167c

Si el comando mdadm ha agregado otras cosas por encima de la línea ARRAY, elimínelo. Por ejemplo, en una de mis máquinas, el comando devuelve 'mdadm: formato de metadatos 00.90 desconocido, ignorado'. Antes de la línea ARRAY.

La matriz ahora debería compilarse automáticamente en el arranque y, por lo tanto, puede agregar una entrada a / etc / fstab para montarla (si no está ya allí)

Linker3000
fuente
5
Tal vez agregaría: también debería actualizar su initramfs con update-initramfs -u
Pablo Montepagano
1
mdadm --detail --scan no imprime nada en mi sistema, aunque estoy seguro de que tengo dos particiones que forman parte de un raid0 (espejo). Cualquier consejo general sobre esto es bienvenido.
Lennart Rolland
1
@LennartRolland - prueba mdadm -Es en lugar.
slm
Esto no me funcionó, tuve que hacerlo. grub-install /dev/sda para que funcione (reemplace sda ​​por cualquier cosa apropiada para usted)
gorn
7

Me doy cuenta de que esta es una pregunta antigua, pero tuve un tiempo frustrante con esto en la versión de 32 bits de Ubuntu Server 12.04.

Corriendo mdadm --detail --scan >> /etc/mdadm/mdadm.conf anexó la línea

ARRAY / dev / md0 metadata = 1.2 nombre = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

Después de reiniciar nunca pude ver / dev / md0. Corriendo el mdadm --detail --scan otra vez (sin poner el resultado en un archivo) vería

ARRAY / dev / md / ubuntu: 0 metadatos = 1.2 nombre = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

y montaje manual /dev/md/ubuntu:0 trabajaría. Al final, eso fue lo que puse en el archivo fstab también.

No estoy seguro de qué me equivoqué, si es así como funciona en Ubuntu 12.04, o si es una mala práctica. Solo quería compartir lo que funcionó para mí.

Deplicator
fuente
El mismo problema aqui. Aunque no estoy seguro de si es un problema ...
Christophe De Troyer
3

En Debian sibilante se requiere un paso más: en /etc/default/mdadm conjunto autoencendido de falso a verdadero

#AUTOSTART:
#   should mdadm start arrays listed in /etc/mdadm/mdadm.conf automatically
#   during boot?
AUTOSTART=true

También tuve que usar mdadm -Es >>/etc/mdadm/mdadm.conf en vez de --scan Opción, ya que eso no me funcionó.

Bogdan Hlevca
fuente
3
sudo mdadm -Es >> /etc/mdadm/mdadm.conf

Ahora edite las líneas agregadas a /etc/mdadm/mdadm.conf de la siguiente manera. Eliminar todo, pero las partes básicas. Debe parecerse a

ARRAY /dev/md5 UUID=031cea92:50a7a28c:6b077fe7:8817092a
ARRAY /dev/md6 UUID=53454954:4044eb66:9169d1ed:40905643

Nota: puede elegir X en mdX a su conveniencia.

Ahora reinicie

sudo update-initramfs -u
sudo reboot

EDIT: comando corregido.

gorn
fuente
Escribí esto porque la respuesta de Linker3000 no funcionó para mí.
gorn
3

Tuve este problema en mi Raspberry Pi 2 ejecutando Raspbian GNU / Linux 8 (jessie). Tenía una matriz RAID en /dev/sda1 y /dev/sdb1 que no pudo montar en el arranque. Yo tenia en mi /etc/mdadm/mdadm.conf archiva la entrada

ARRAY /dev/md/0  metadata=1.2 UUID=53454954:4044eb66:9169d1ed:40905643 name=raspberrypi:0 

(sus números serán diferentes; consulte otras respuestas sobre cómo obtener esto).

Yo tenia en mi /etc/fstab archiva la entrada

/dev/md0        /data           ext4    defaults          0       0

(y por supuesto /data de hecho existió

Al igual que el OP, pude ensamblar y montar la matriz RAID a mano después del arranque, pero no pude hacer que ocurriera automáticamente durante el arranque a pesar de que aparentemente la configuré correctamente.

Pude resolver el problema de la siguiente manera. Investigué el guión en /etc/init.d/mdadm-raid e insertó una línea de código de depuración

ls /dev > /home/pi/devices.txt

Reiniciando y revisando este archivo aprendí que los dispositivos /dev/sda y /dev/sdb existía en el momento en que mdadm-raid Inicialización ocurrió, pero las particiones /dev/sda1 y /dev/sdb1 estaban desaparecidos Edité el /etc/init.d/mdadm-raid archivo e insertó la línea

partprobe

después de la cabecera (es decir, después de la cabecera) ### END INIT INFO pero antes de que comience el guión). Esto provocó que las particiones fueran detectadas y así mdadm-raid El script pudo ensamblar la matriz RAID, resolviendo el problema. ¡Espero que esto ayude a alguien!

Shaun Harker
fuente
0

He estado luchando con esto en Raspbian usando un par de discos duros USB externos en una Raspberry Pi. Tuve que meterme en el orden de inicio de los servicios para asegurarme de que mdadm-raid se iniciara después de que udev reconociera las unidades USB pero antes de checkfs.sh (que verifica los sistemas de archivos en el momento del arranque). Si mdadm-raid comenzó demasiado pronto, las unidades no estaban disponibles y, por lo tanto, la matriz no estaba ensamblada. Eso significó que fsck posteriormente falló y el proceso de arranque se retiró a un mensaje de mantenimiento (porque la matriz raid es necesaria para otros servicios).

Modificación de las dependencias de arranque para iniciar mdadm-raid después de checkroot.sh pero antes de checkfs.sh y en ejecución update-rc.d mdadm-raid defaults, seguido por update-initramfs -uv -k `uname -r` (tenga en cuenta las comillas) uname ) lo arregló (finalmente). Para mí, de todos modos, YMMV.

Rodney
fuente
Tenga en cuenta que uname -r en lo anterior se supone que está en tic-backs pero no puedo averiguar cómo escapar de ellos, así que están impresos aquí ...
Rodney
¿Qué versión de raspbian era esta? Lo hice funcionar bien en Wheezy, pero actualizar a Jessie rompió el ensamblaje en el arranque.
nwaltham
0

Lo intenté con

mdadm --create /dev/md/abcdef ...

Veo el softlink /dev/md/abcdef persistiendo en los reinicios y, si es necesario, acceder al dispositivo a través de un enlace blando.

¿Es una solución aceptable?

gudge
fuente
0

Teniendo la Raspberry Pi 3, añadiendo la rootdelay=5 al /boot/cmdline.txt resuelto este problema para mi

El credito va aquí .

Petr Újezdský
fuente