En los sistemas más nuevos /usr/share/mdadm/mkconf(el script que se usa para generar /etc/mdadm/mdadm.conf) tiende a usar el nombre del dispositivo en /dev/md/0lugar de /dev/md0:
new-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md/0 metadata=1.2 UUID=a0021927:0e4f10bf:2c47dc72:ca0b352e name=unassigned:0
Esto puede causar cierta irritación a los usuarios que esperan /dev/md0allí, pero aparentemente funciona bien porque el servidor arranca sin problemas.
En /proc/mdstatel dispositivo todavía se llama /dev/md0:
new-system ~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb2[2] sda2[0]
1953381184 blocks super 1.2 [2/2] [UU]
unused devices: <none>
lsmuestra que /dev/md/0es un enlace simbólico para /dev/md0:
new-system ~ # ls -l /dev/md/0
lrwxrwxrwx 1 root root 6 Nov 20 14:06 /dev/md/0 -> ../md0
En otro sistema anterior mkconftodavía se usa en su /dev/md0lugar y /dev/mdestá vacío:
old-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md0 UUID=76472cf5:83fd8e5a:ad617046:69b2ebf1
old-system ~ # ls -l /dev/md
total 0
Me gustaría saber la diferencia entre estos nombres de dispositivos, y no puedo encontrar ninguna explicación en Google. ¿Es /dev/mdNel nombre antiguo y mdplanea pasar a /dev/md/Nlos nombres de los dispositivos? ¿Está este cambio relacionado con los metadatos 1.2 (he notado que el nuevo servidor está usando md 1.2, mientras que el viejo todavía está usando 0.90)?
EDITAR 2017-09-11: Creo que la respuesta de Krzysztof Stasiak es la correcta. Ya me había olvidado por completo de esta pregunta. Mientras jugaba con un RAID de prueba el viernes pasado pensé "¿por qué no nombrar mi matriz en lugar de memorizar lo que md0, md1, md2, ... etc. hace en configuraciones complejas?", Y entonces intenté:
test-server ~ # mdadm --assemble /dev/mdfoobar /dev/loop[01]
mdadm: /dev/mdfoobar is an invalid name for an md device. Try /dev/md/mdfoobar
Y de hecho eso funciona:
test-server ~ # mdadm --assemble /dev/md/foobar /dev/loop[01]
mdadm: /dev/md/foobar has been started with 2 drives.
test-server ~ # ll /dev/md/foobar
lrwxrwxrwx 1 root root 6 Sep 11 10:45 /dev/md/foobar -> ../md0
test-server ~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active (auto-read-only) raid1 loop0[0] loop1[1]
102272 blocks super 1.2 [2/2] [UU]
unused devices: <none>
(También puedes hacer mdadm --assemble foobar DEV...).
Hay una explicación detallada en la man mdadmsección DEVICE NAMES.

mdadm -Eque se encuentra actualmenteunassigned:0en el nuevo servidor se divide en el:, y la segunda parte se convierte en parte del/dev/md/<name>? Entonces, si cambiara el nombre de la matriz aunassigned:asdf, ¿se llamaría al enlace simbólico/dev/md/asdf? Y siempre se llama al dispositivo real/dev/mdN, ¿dónde N es el próximo número libre?unassigned:0simplemente es braindead.Respuestas:
puede nombrar la matriz como nombre propio (no solo 0-127) y desde mdadm 3.0.3 puede usar solo nombre. Si la ruta de pensamiento se cambió para usar una subcarpeta
/dev/md/$namepara hacer más flexibilidad o algún tipo de arreglos limpios o grupales. Si md array se crea en formato/dev/mdX, se agrega un enlace simbólico para que sea compatible con el nuevo formato.fuente
Cuando se trata de nombres de dispositivos, mejor pregunte a udev . A mi entender,
md%del kernel usa la nomenclatura, la genera directamente el controlador md.c # L5284 y se usa en/proc/partitionsysysfs. Por lo tanto, aparece en/dev/dev/md/...y/dev/disk/by-id/...son generados como enlaces simbólicos por udevd. En mi sistema, las reglas correspondientes se guardan en/usr/lib/udev/rules.d/63-md-raid-arrays.rules:Parece que udev archivo proviene de
openSUSE 11.1-rc3acuerdo con esta comprometerse en mdadm. He revisado este archivoopenSUSE 11.0, pero no tienemd/%denlaces simbólicos ...fuente
Probablemente la ruta original varía según la versión del kernel de Linux o el sistema Unix. El enlace simbólico
/dev/md/Npuede existir por razones de compatibilidad. Programas o scripts que pueden usar esta ruta en lugar de/dev/mdN.fuente