Auf neueren Systemen /usr/share/mdadm/mkconf
(das Skript, das zum Generieren verwendet wird /etc/mdadm/mdadm.conf
) wird in der Regel der Gerätename /dev/md/0
anstelle von /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
Dies kann einige Irritationen für Benutzer verursachen, die es erwarten /dev/md0
, aber anscheinend funktioniert es einwandfrei, da der Server ohne Probleme startet.
Im /proc/mdstat
Gerät heißt noch /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
zeigt das /dev/md/0
ist ein symlink zu /dev/md0
:
new-system ~ # ls -l /dev/md/0
lrwxrwxrwx 1 root root 6 Nov 20 14:06 /dev/md/0 -> ../md0
Auf einem anderen älteren System wird mkconf
immer noch verwendet /dev/md0
und /dev/md
ist leer:
old-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md0 UUID=76472cf5:83fd8e5a:ad617046:69b2ebf1
old-system ~ # ls -l /dev/md
total 0
Ich möchte den Unterschied zwischen diesen Gerätenamen kennen und kann bei Google keine Erklärung finden. Ist /dev/mdN
der alte Name und md
beabsichtigt er, zu /dev/md/N
Gerätenamen zu wechseln ? Bezieht sich diese Änderung auf die 1.2-Metadaten (ich habe bemerkt, dass der neue Server md 1.2 verwendet, während der alte noch 0.90 verwendet)?
EDIT 2017-09-11: Ich denke, Krzysztof Stasiaks Antwort ist die richtige. Diese Frage hatte ich inzwischen völlig vergessen. Während ich letzten Freitag mit einem Test-RAID spielte, dachte ich: "Warum sollte ich mein Array nicht benennen, anstatt zu merken, was md0, md1, md2 usw. in komplexen Setups macht?"
test-server ~ # mdadm --assemble /dev/mdfoobar /dev/loop[01]
mdadm: /dev/mdfoobar is an invalid name for an md device. Try /dev/md/mdfoobar
Und das funktioniert tatsächlich:
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>
(Sie können auch tun mdadm --assemble foobar DEV...
).
Eine ausführliche Erklärung finden Sie im man mdadm
Abschnitt DEVICE NAMES
.
mdadm -E
, der aktuellunassigned:0
auf dem neuen Server ist, am geteilt:
, und der zweite Teil wird Teil des/dev/md/<name>
? Wenn ich also den Array-Namen in ändernunassigned:asdf
würde, würde der Symlink aufgerufen werden/dev/md/asdf
? Und das eigentliche Gerät wird immer angerufen/dev/mdN
, wobei N die nächste freie Nummer ist?unassigned:0
ist nur ein Kopf.Antworten:
Sie können array als eigenen Namen benennen (nicht nur 0-127) und seit mdadm 3.0.3 können Sie nur name verwenden. Wenn think path geändert wurde, um Unterordner
/dev/md/$name
zu verwenden, um mehr Flexibilität oder eine Art von Bereinigungs- oder Gruppenarrays zu erzielen. Wenn ein MD-Array im Format erstellt/dev/mdX
wird, wird ein Symlink hinzugefügt, um die Kompatibilität mit dem neuen Format zu gewährleisten.quelle
Wenn es um Gerätenamen geht, fragen Sie besser udev . Zu meinem Verständnis,
md%d
Die Benennung wird vom Kernel verwendet, sie wird direkt vom Treiber md.c # L5284 generiert und in/proc/partitions
und verwendetsysfs
. Daher erscheint es in/dev
/dev/md/...
und/dev/disk/by-id/...
werden von udevd als Symlinks generiert. In meinem System werden entsprechende Regeln gehalten in/usr/lib/udev/rules.d/63-md-raid-arrays.rules
:Es scheint, dass udev-Datei
openSUSE 11.1-rc3
nach diesem Commit in mdadm stammt. Ich habe diese Datei eingechecktopenSUSE 11.0
, aber sie enthält keinemd/%d
Symlinks ...quelle
Wahrscheinlich variiert der ursprüngliche Pfad je nach Linux-Kernelversion oder Unix-System. Der symbolische Link
/dev/md/N
kann aus Kompatibilitätsgründen vorhanden sein. Programme oder Skripte, die diesen Pfad anstelle von verwenden können/dev/mdN
.quelle