it-swarm.com.de

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

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, als es mir gefällt.

22
XXL

Warnung : Bitte machen Sie eine Sicherungskopie, bevor Sie die hier gegebenen Hinweise befolgen :-)

Option 1:

/etc/mdadm.conf bearbeiten:

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 keinen mdadm.conf haben und möchten, dass er sich automatisch zu md1 zusammensetzt, können Sie dies tun:

mdadm hat das Konzept eines "bevorzugten Minderjährigen". Z.B. Sobald eine bestimmte untergeordnete Nummer einem Array zugewiesen und im Superblock gespeichert wurde, wird sie 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).

28
haimg

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 der 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 -u aus, um die richtige initrd neu zu generieren.

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

11
Wtower

Keine der anderen Antworten hat für mich funktioniert, aber in Centos habe ich die folgende Anleitung verwendet. Das Problem ist, dass /etc/mdadm.conf beim Booten nicht wirklich verwendet wird und nur aktualisiert wird, wenn ein neuer Kernel installiert oder initramfs manuell neu erstellt wird. Im Wesentlichen brauchen Sie also nur:

dracut --force

quelle: http://realtechtalk.com/mdadm_change_wrong_device_name_md127_fix_and_solution_in_Linux-1783-articles

3
Areeb Soo Yasir

Superblocks der Version 0.9 haben keinen Namen, sie wurden in Version 1 eingeführt. /dev/md127 ist nicht der Name des Arrays, sondern der Name der Gerätedatei des Arrays, was eine direkte Folge der Minor-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 für Menschen lesbaren oder strukturierten Namen bevorzugen, fügen Sie ein physisches LVM-Volume in das Array ein.

2
Gilles

haimg hat das perfekt beantwortet und es hat auch bei mir funktioniert.

Ich möchte nur hinzufügen, dass bei Centos 7 ' dracut -f 'um die initrd zu aktualisieren. (Einige andere Benutzer haben auch darauf hingewiesen, aber ich fand es ratsam, den Befehl mit Ihnen zu teilen.

1
Karan Bhalla