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

25

Hier ist die Ausgabe von mdadm -Esv :

ARRAY / dev / md127 level = raid0 num-devices = 2 UUID = d89d9d45: 9a420812: c44c77eb: 7ee19756 devices = / dev / sdb8, / dev / sda8

Dies ist ein v0.90-Array. Die Frage lautet wie folgt: Wie weist mdadm einem entsprechenden Gerät den Namen zu, wo speichert es ihn und wie ändert man ihn?

Was ich erreichen möchte, ist, md127 in etwas anderes umzubenennen , das mir gefällt.

XXL
quelle

Antworten:

31

Warnung : Bitte machen Sie eine Sicherungskopie, bevor Sie den hier gegebenen Hinweisen folgen :-)

Option 1:

Bearbeiten /etc/mdadm.conf:

ARRAY / dev / md1 level = raid0 num-devices = 2 UUID = d89d9d45: 9a420812: c44c77eb: 7ee19756 devices = / dev / sdb8, / dev / sda8

Ich habe gerade Ihre eigene Ausgabe eingegeben und 127 in 1 geändert. Starten Sie neu und es sollte jetzt md1 sein.

Option 2:

Wenn Sie nicht haben mdadm.confund möchten, dass es sich automatisch zu md1 zusammensetzt , können Sie dies tun:

mdadm hat das Konzept eines "bevorzugten Minderjährigen". Beispielsweise wird eine bestimmte untergeordnete Nummer, die einem Array zugewiesen und im Superblock gespeichert wurde, jedes Mal verwendet, wenn dieses Array automatisch zusammengestellt wird. Überprüfen Sie dies:

mdadm --detail / dev / md127

Wenn dort "Preferred Minor: 127" steht, ist dies Ihr Problem. Sie müssen den bevorzugten Nebeneffekt aktualisieren. Wie macht man das:

Sie können nicht einfach den bevorzugten Nebenbuchstaben ändern. Sie müssen in den Wiederherstellungs- oder Einzelbenutzermodus booten, wenn dies Ihr Root-Gerät ist. Hängen Sie anschließend das Dateisystem aus:

mdadm --stop / dev / md127
mdadm --assemble --update = super-minor / dev / md1 / dev / sdb8 / dev / sda8

Dann haben Sie Ihren md127 als md1 zusammengebaut. Und das soll auch in Zukunft so bleiben.

Mit 1.x Arrays:

Neuere Arrays speichern keine 'Preferred Minor'-Nummer und unterstützen nicht "--update = super-minor". Stattdessen speichern sie einen Namen, der geändert werden kann mit:

mdadm --stop / dev / md127
mdadm --assemble --update = name --name = 2 / dev / md1 / dev / sdb8 / dev / sda8

Oder Sie können 'hostname: 2' angeben, um die Konsistenz mit anderen Arrays zu gewährleisten (den aktuellen Namen mit --detail nachschlagen).

haimg
quelle
sehr gut! Genau das, wonach ich gesucht habe. der trick war also auch das super-minor zu updaten .. danke!
XXL
Du bist ein Lebensretter! Ich habe dies verwendet, um ein WD NAS-Gerät zu entfernen, das md verwendet.
Vlad
Diese Lösung ist theoretisch korrekt, aber es war schwierig für mich, sie auf einem lebenden System zu implementieren. Auch Option 1 hat bei mir nicht funktioniert. Ich ging mit superuser.com/questions/287462/...
gorn
+1 für den letzten Teil der Lösung, der beim Verschieben des RAID-Arrays von einem Computer auf einen anderen sehr hilfreich war. 'hostname: 2' und das Ändern von md127 zu md1 war genau das, was ich brauchte, um die Namen konsistent zu halten
yahol
13

Nur um Haimgs exzellente Antwort zu ergänzen. Es kann vorkommen, dass das System selbst mit einer mdadm.conf (zumindest für Ubuntu) die Arrays vor dem Lesen von mdadm.conf automatisch zusammenstellt. Wenn es es findet, ignoriert es einfach die Arrays, die soeben sowieso zusammengestellt wurden.

Um dies zu berücksichtigen, führen Sie sudo update-initramfs -uden Befehl aus, um die richtige initrd neu zu generieren.

Relevante Links: http://ubuntuforums.org/showthread.php?t=1764861%29%3a

Wtower
quelle
2
Dies behebt das Problem für mich (nach einem weiteren Neustart) auf Ubuntu 16.04. In meinem Fall lag es daran, dass ich das Array neu erstellt hatte und es eine neue UUID hatte. Nach dem Update mdadm.confreichte ein Neustart allein nicht aus. das Aktualisieren der initramfs hat den Trick getan.
nh2
2

Superblocks der Version 0.9 haben keinen Namen, sie wurden in Version 1 eingeführt. Ist /dev/md127nicht der Name des Arrays, sondern der Name der Gerätedatei des Arrays, was eine direkte Konsequenz der kleineren Nummer des RAID-Block-Geräts ist. Diese kleinere Zahl wird eher willkürlich gewählt, wenn das Array zusammengesetzt wird.

Die UUID stellt einen eindeutigen Bezeichner für das Array bereit, falls Sie einen benötigen. Wenn Sie einen lesbaren oder strukturierten Namen bevorzugen, fügen Sie ein LVM-Volume in das Array ein.

Gilles 'SO - hör auf böse zu sein'
quelle
Mir ist die Möglichkeit von --homehost aus der späteren Version bekannt, daher habe ich absichtlich angegeben, dass es sich um ein v0.90-Metadatenarray handelt. Dies ist jedoch weder meine Absicht noch kompatibel. Beim Durchsehen meiner Beiträge kann ich auch etwas nicht feststellen, wo ich erwähnt habe, dass / dev / md127 der Name des Arrays ist . Ich glaube, ich habe die genauen Details angegeben, was ich tun möchte. Es bleibt also die Frage, wie ich es ändere und wo diese "Minor Number" gespeichert ist. Ich nehme an, es ist Teil des Superblocks? Wird es die Superblock-Prüfsumme ruinieren, wenn es hexadezimal bearbeitet wird?
XXL
@XXL Diese Nummer wird nirgends gespeichert, sie wird beim Zusammenbau des Arrays eher willkürlich gewählt.
Gilles 'SO- hör auf böse zu sein'
hmm .. ich verstehe nicht. Warum bekomme ich dann immer / dev / md127, wenn ich mdadm -Esv ? Sollte ich nicht etwas anderes bekommen, das zufällig ist, außer einem statischen Namen? Das ist, wenn es wirklich "willkürlich" ist.
XXL