Sur les nouveaux systèmes /usr/share/mdadm/mkconf
(le script utilisé pour générer /etc/mdadm/mdadm.conf
) a tendance à utiliser le nom du périphérique /dev/md/0
à la place 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
Cela peut provoquer une certaine irritation pour les utilisateurs qui s'attendent à /dev/md0
Là, mais apparemment cela fonctionne bien parce que le serveur bottes sans problèmes.
Dans /proc/mdstat
L'appareil est toujours appelé /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>
ls
montre que /dev/md/0
est un lien symbolique à /dev/md0
:
new-system ~ # ls -l /dev/md/0
lrwxrwxrwx 1 root root 6 Nov 20 14:06 /dev/md/0 -> ../md0
Sur un autre système ancien mkconf
utilise toujours /dev/md0
Au lieu de cela, et /dev/md
est vide:
old-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md0 UUID=76472cf5:83fd8e5a:ad617046:69b2ebf1
old-system ~ # ls -l /dev/md
total 0
J'aimerais connaître la différence entre ces noms de périphérique et je ne trouve aucune explication sur Google. Est /dev/mdN
l'ancien nom et md
envisage de passer à /dev/md/N
noms de périphérique? Ce changement est-il lié aux 1,2 métadonnées (j'ai remarqué que le nouveau serveur utilise MD 1.2, tandis que l'ancien utilise toujours 0,90)?
EDIT 2017-09-11: Je pense la réponse de Krzysztof Stasiak est la bonne. J'avais maintenant totalement oublié cette question. En jouant avec un raid test vendredi dernier, j'ai pensé "Pourquoi ne pas nommer mon tableau au lieu de mémoriser ce que MD0, MD1, MD2, ... etc. fait dans des configurations complexes?" Et donc j'ai essayé:
test-server ~ # mdadm --assemble /dev/mdfoobar /dev/loop[01]
mdadm: /dev/mdfoobar is an invalid name for an md device. Try /dev/md/mdfoobar
Et en effet cela fonctionne:
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>
(Vous pouvez aussi faire mdadm --assemble foobar DEV...
).
Il y a une explication détaillée dans man mdadm
, section DEVICE NAMES
.
En ce qui concerne les noms de périphérique, mieux demander dev . À ma compréhension,
md%d
Nommage est utilisé par le noyau, il est généré directement par le conducteur MD.C # L5284 , et il est utilisé dans /proc/partitions
et sysfs
. Par conséquent, il apparaît dans /dev
/dev/md/...
et /dev/disk/by-id/...
sont générés comme symboles de liens par Udevd. Dans mon système, les règles correspondantes sont conservées dans /usr/lib/udev/rules.d/63-md-raid-arrays.rules
:
...
ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}"
...
Il semble que le fichier udev vient de openSUSE 11.1-rc3
Selon - ce commit à Mdadm. J'ai vérifié ce fichier dans openSUSE 11.0
, mais ça n'a pas md/%d
symboles ...
Le chemin original varie probablement en fonction de la version du noyau Linux ou du système UNIX. Le lien symbolique /dev/md/N
Peut exister pour des raisons de compatibilité. Programmes ou scripts pouvant utiliser ce chemin au lieu de /dev/mdN
.