GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der Name des MD-Geräts ändert sich und enthält nach dem ersten Neustart HOSTNAME:. Wie bekomme ich einen einheitlichen Namen?

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.


Linux
  1. Wie bekomme ich den Benutzernamen in ein Makefile?

  2. Linux sudo arbeitet langsam, nachdem der Hostname geändert wurde

  3. Wie bekomme ich den Hostnamen von der IP (Linux)?

  4. Wie bekomme ich nur die Prozess-ID unter Angabe des Prozessnamens in Linux?

  5. Wie bekomme ich ein inaktives RAID-Gerät wieder zum Laufen?

So ändern Sie den Hostnamen unter Debian Linux

So ändern Sie den Namen eines MD-Geräts (mdadm)

Wie bekomme ich den Domainnamen in Windows mit dem Befehl?

Wie kann ich verhindern, dass sich die MAC-Adresse nach dem Trennen ändert?

So erhalten Sie den Benutzernamen von uid

Android - Wie kann ich mein Gerät von ADB unter Linux erkennen lassen?