Wie erhalte ich einen konsistenten Gerätepfad für mein MD-Gerät, idealerweise genau den, den ich angegeben habe ("/dev/md/myarray")?
Nach mdadm --create /dev/md/foobar ...
, beide hostname
und name
werden in den mdadm-Metadaten gespeichert, was Sie mit mdadm --examine
überprüfen sollten oder mdadm --detail
:
# mdadm --detail /dev/md/foobar
Name : ALU:foobar (local to host ALU)
ALU
zufällig der Hostname meines ArchLinux-Rechners:
# hostname
ALU
Sie können den Host angeben, der beim Erstellen gespeichert werden soll:
# mdadm --create /dev/md/foobar --homehost=barfoo
# mdadm --detail /dev/md/foobar
Name : barfoo:foobar
...aber normalerweise denkt niemand daran.
Und da fangen die Probleme schon an... Vielleicht haben Sie Ihr RAID-Array von irgendeiner LiveCD erstellt, und der Hostname in dieser Umgebung stimmt überhaupt nicht mit Ihrer Hauptinstallation überein. Und dann speichern die Metadaten einen völlig unabhängigen Hostnamen.
Ähnlich, wenn Sie alles richtig eingerichtet haben, dann aber Probleme mit Ihrem RAID haben und ein Rettungssystem booten, um die Dinge zu überprüfen, gibt es wieder eine Diskrepanz mit den Hostnamen.
Oder umgekehrt, der Hostname kann auch dann übereinstimmen, wenn es sich um den falschen Computer handelt - wenn Sie denselben Hostnamen für zwei unabhängige Systeme verwendet haben und dann Laufwerke migrieren. Dann übernehmen die Alien-Arrays die Namen der Originalen...
Nun können die Metadaten auch nachträglich mit mdadm --assemble --update=homehost
geändert werden oder --update=name
, das ist eine Möglichkeit, mit dem Problem umzugehen. Es sollte korrekt eingestellt sein, aber es ist schwierig zu ändern, da es (aus irgendeinem Grund) abgesehen von der direkten Bearbeitung von Metadaten nur zur Assemblerzeit möglich ist.
Eine andere Möglichkeit besteht darin, die Systeme hostname
zu ignorieren und geben Sie stattdessen --homehost
an beim Zusammenbau oder HOMEHOST
einstellen in mdadm.conf
. Dies wird ausführlich in der Manpage mdadm.conf beschrieben.
HOMEHOST
Die homehost-Zeile gibt mdadm einen Standardwert für die Option --homehost=. Normalerweise sollte nur ein weiteres Wort in der Zeile stehen. Es sollte entweder ein Hostname oder eines der Sonderwörter <system>
sein , <none>
und <ignore>
. Wenn <system>
angegeben ist, wird der Systemaufruf gethostname(2) verwendet, um den Hostnamen zu erhalten. Dies ist die Standardeinstellung.
[...]
Wenn Arrays erstellt werden, wird dieser Hostname in den Metadaten gespeichert. Wenn Arrays mithilfe der automatischen Assemblierung zusammengestellt werden, werden Arrays, die nicht den korrekten Homehost-Namen in ihren Metadaten aufzeichnen, unter Verwendung eines „fremden“ Namens zusammengestellt. Ein "fremder" Name endet immer mit einer Ziffernfolge, der ein Unterstrich vorangestellt ist, um ihn von einem möglichen lokalen Namen zu unterscheiden. z.B. /dev/md/1_1 oder /dev/md/home_0.
Sie können also versuchen, HOMEHOST ALU
zu setzen (in meinem Fall) oder das allgemeinere HOMEHOST <ignore>
(oder HOMEHOST <none>
) im mdadm.conf
. Aber es funktioniert nur, wenn mdadm.conf
ist anwesend. Und wieder, wenn Sie Ignorieren setzen und dann ein Array von einer anderen Maschine anschließen, könnten Sie auf Namenskonflikte stoßen.
Daher ist es am besten, den Hostnamen korrekt in Metadaten und mdadm.conf zu setzen und ihn nicht zu ignorieren, und noch besser den tatsächlichen Hostnamen in initramfs vor dem Zusammenbau festzulegen, aber es kann schwierig sein, ihn in die Praxis umzusetzen.
Meine persönliche Vorliebe ist es, einfach beim klassischen numerischen Stil zu bleiben. Identifizieren Sie sich anhand der UUID und sonst nichts:
ARRAY /dev/md1 UUID=8fe790ca:f3fa3388:4ae125b6:2c3a5d44
ARRAY /dev/md2 UUID=f14bef5b:a5356e51:25fde128:09983091
ARRAY /dev/md3 UUID=0639c68d:4c844bb1:5c02b33e:00ab4a93
Das ist auch konsequent (hängt aber auch davon ab, dass es so angelegt und/oder in den Metadaten entsprechend gesetzt wurde, sonst muss man evtl. auch --update
es). Und Alien-Arrays, die nicht mit den angegebenen UUIDs übereinstimmen, sollten als /dev/md127+
enden .
Letztendlich sollten Sie sich bei allem, was Sie tun, nicht blind auf /dev/mdX
verlassen oder /dev/md/name
Genauso verlasst man sich nicht blind auf /dev/sdX
Briefe. Verwenden Sie immer Dateisystem-UUIDs, um zu identifizieren, was sich auf diesen Arrays befindet.
Es gibt zu viele Ausnahmefälle, in denen sich Namen unerwartet ändern könnten, daher kann dies bestenfalls eine Orientierungshilfe oder ein Hinweis für den Systemadministrator sein, es ist nicht die Antwort auf alle Probleme.