Können Sie die Metadatenversion eines vorhandenen Arrays ändern?

21

Daher benötigt grub Metadaten der Version 0.90. Ich frage mich, ob ich meine vorhandenen Arrays so ändern kann, dass sie anstelle der Standardeinstellung 1.2 verwendet werden. Auf diese Weise muss ich mich nicht um eine Neuinstallation kümmern. Wenn ja, wie kann ich das machen?

Xenoterracid
quelle

Antworten:

5

Das GRUB-Wiki bestätigt:

(Ab 1.96 + 20080724) GRUB kann nur von RAID gebootet werden, das einen Metadaten-Superblock der Version 0.90 verwendet (dh einen, der mit der Option --metadata = 0.90 für mdadm erstellt wurde).

Seltsamerweise heißt es in der Manpage für mdadm

-e, --metadata =

Deklarieren Sie den Stil des zu verwendenden Superblocks (RAID-Metadaten). Der Standardwert ist 0,90 für --create und für andere Operationen.

Ich würde es noch einmal überprüfen mdadm -Q -D <device>, um sicherzugehen.

Welchen RAID-Level führen Sie danach aus? Das beste Szenario, das ich mir für einen Spiegel (RAID 1) vorstellen kann, wäre

  1. Machen Sie Backups
  2. Array aushängen 0
  3. Entfernen Sie Gerät A aus Array 0 von nGeräten
  4. Null Superblock auf Gerät A
  5. Erstellen Sie Array 1 mit Gerät A und n-1Ersatzgeräten, und verwenden Sie dabei explizit das alte Superblock-Format
  6. Wiederholen Sie dies für die verbleibenden B durch n-1Geräte
  7. (Optional) Nummerieren Sie das Array neu

... aber überprüfen Sie auf jeden Fall, ob Sie dies unbedingt durchmachen müssen!

Andrew
quelle
Also habe ich das vor langer Zeit bestätigt. Ich starte raid10, f2. Offensichtlich war es das, was ich vermeiden wollte, das Array neu zu erstellen.
Xenoterracide
Haben Sie die linux-raid at vger.kernel.orgMailingliste ausprobiert ?
Andrew
seltsam, dass ich keine Benachrichtigung darüber bekommen habe. Nein, ich habe es nicht versucht. Ich habe es nur abgewischt und das Array neu erstellt. Ich werde diese Antwort mit der kurzen Lösung akzeptieren, die NEIN oder vielleicht (lächerlich schwierig)
lautet
16

Diese Information ist wahrscheinlich zu spät, um dem OP zu helfen, aber vielleicht hilft sie jemand anderem.

Der erste Befehl löscht die Superblöcke und der zweite Befehl erstellt ein neues Array, setzt jedoch voraus, dass die Geräte sauber sind. Ich habe das gerade ausgeführt und alles scheint in Ordnung zu sein. Ich würde auf jeden Fall ein Backup empfehlen, bevor Sie dies tun. Ich hatte keine Daten zu verlieren und daher keine Integrität zu überprüfen. Ich wollte nur eine weitere 4-stündige Resynchronisation vermeiden.

$ mdadm --zero-superblock /dev/sd[a-z]1
$ mdadm --create /dev/md0 --assume-clean \
    --level=10 --raid-devices=10 /dev/sd[a-z]1 --metadata=0.90
Vex Magier
quelle
1
wahrscheinlich zu spät für die OP, aber du hast mich gerettet, danke für deine Antwort
neofutur
7

Das Erstellen eines Arrays mit vorausgesetzt sauberen und inkonsistenten Metadaten, wie oben vorgeschlagen, kann mit Sicherheit vorhandene Daten beschädigen, da sich die Metadatenblöcke 0.90 und 1.2 nicht nur in der Größe, sondern auch in der Position unterscheiden.

es kann für 0,90 <-> 1,0 funktionieren, was eine Ausnahme darstellt.

https://raid.wiki.kernel.org/index.php/RAID_superblock_formats

masc
quelle