Beschreibung
Ich habe ein IMSM RAID 5-Array mit 6 SSD-Laufwerken. Eines der Laufwerke ist vor einigen Monaten ausgefallen und ich konnte es noch nicht ersetzen. (Ja, ich weiß, ich bin manchmal faul. Bitte verurteilen Sie mich nicht.) Aber ich habe es bereits aus dem RAID entfernt.
Gestern scheint jedoch ein weiteres Laufwerk ausgefallen zu sein. Das Array lässt sich nicht zusammensetzen. Da selbst das BIOS das RAID nicht erstellen kann, kann ich nichts booten. Bei näherer Betrachtung sieht es jedoch so aus, als ob das Laufwerk in Ordnung ist. Ich kann darauf zugreifen und mit dd Backups erstellen. Aber es scheint jetzt am Anfang einen MBR-Eintrag zu haben. Vielleicht hat ein Prozess den RAID-Superblock mit einer MBR-Tabelle überschrieben? Wenn das der Fall ist, sollten die Daten noch da sein. Ich muss nur in der Lage sein, mdadm
die richtigen Metadaten zu erkennen. Wenn ich darüber nachdenke, könnte mit dem ersten Laufwerk, das angeblich „ausgefallen“ ist, dasselbe passiert sein. Da es auch noch lesbar war. Aber ich habe mir damals nicht die Mühe gemacht, nachzuforschen.
Trotzdem versuche ich jetzt, einen Weg zu finden, das Array wieder zusammenzusetzen, um auf seine Daten zuzugreifen (falls möglich). Ich kenne die Blockgröße, die genaue Reihenfolge der Laufwerke und den RAID-Level. Sollten diese Informationen nicht ausreichen?
Einige Informationen
dd
Als erstes habe ich mit (genannt ) Images der verbleibenden 5 Laufwerke erstellt sd[a-e].backup
. Außerdem habe ich alle Laufwerke mit untersucht --examine
und die Ausgabe gespeichert. Sie können die Ausgabe indieser Kern. Wie Sie dort sehen können, liest mdadm den MBR-Header sdb
und fährt mit dem nächsten Laufwerk fort, ohne RAID-Informationen zu erkennen. Für alle anderen Laufwerke druckt mdadm jedoch die korrekten Metadaten. Und wenn wir schon dabei sind, hier ist die Ausgabe voncat /proc/mdstat
Personalities:
md127 : inactive sda[3](S) sdd[2](S) sde[1](S) sdc[0](S)
13049 blocks super external:imsm
unused devices: <none>
Was ich versucht habe
- Offensichtlich habe ich versucht, es „aus- und wieder einzuschalten“:
# mdadm --stop /dev/md127
mdadm: stopped /dev/md127
# mdadm --assemble /dev/md0 /dev/sdb missing /dev/sda /dev/sdc /dev/sde /dev/sdd
mdadm: Cannot assemble mbr metadata on /dev/sdb
mdadm: /dev/sdb has no superblock - assembly aborted
# mdadm --assemble --scan
Nach dem letzten Aufruf von mdadm /proc/mdstat
sieht die Ausgabe wieder identisch aus wie oben.
Ich habe dann schreibgeschützte Loop-Geräte erstellt:
# losetup --show -rf /mnt/backup/sdX.backup
[...]
# losetup -a
/dev/loop1: [...] (/mnt/backup/sda.backup)
/dev/loop2: [...] (/mnt/backup/sdb.backup)
/dev/loop3: [...] (/mnt/backup/sdc.backup)
/dev/loop4: [...] (/mnt/backup/sdd.backup)
/dev/loop5: [...] (/mnt/backup/sde.backup)
- Als nächstes habe ich versucht, Folgendes zu verwenden,
--build
da hierfür keine Superblock-Informationen erforderlich sind und alle Metadaten manuell bereitgestellt werden können:
# mdadm --build /dev/md0 --raid-devices=6 --level=5 --chunk=32 /dev/loop2 missing /dev/loop1 /dev/loop3 /dev/loop5 /dev/loop4
mdadm: Raid level 5 not permitted with --build
Aber anscheinend darf ich es nicht --build
im Rahmen von Level-5-RAIDs verwenden.
- Als Nächstes habe ich versucht,
--assemble
die OROM-Informationen zum RAID zu verwenden, allerdings ohne sie zu verwenden.
# IMSM_NO_PLATFORM=1 mdadm --assemble /dev/md0 /dev/loop2 missing /dev/loop1 /dev/loop3 /dev/loop5 /dev/loop4
mdadm: Cannot assemble mbr metadata on /dev/loop2
mdadm: /dev/loop2 has no superblock - assembly aborted
Das wäre wohl zu einfach gewesen. Kann ich mdadm irgendwie sagen, dass es einfach davon ausgehen soll, dass es loop2
sich um das erste Gerät in diesem Array handelt, und die Metadaten der anderen Laufwerke verwenden soll?
- Als letztes hätte ich versucht, die Loop-Geräte als Lese-/Schreibgeräte neu zu mounten und das Array neu zu erstellen. Allerdings sind alle Beispiele, die ich gefunden habe (wie dieseroderDieses hier) gehe davon aus, dass das Array mit mdadm erstellt wurde. Aber das war nicht der Fall. Es wurde ursprünglich von einem Dienstprogramm im BIOS erstellt und hat das IMSM- oder Intel Rapid Storage-Format. Ich schätze, ich muss genauere Kenntnisse darüber haben, wie Layout oder Datenoffset. Ich bin mir nicht sicher, was die Standardeinstellungen für IMSM sind oder wo ich sie finden könnte. Aber was mir noch wichtiger ist, ist, dass das Metadatenformat von mdadm mehr Speicherplatz und einen größeren Superblock als IMSM verwendet und Daten überschreibt, wenn es die Metadaten speichert. Vielleicht ist es auch möglich, das Array mit IMSM neu zu erstellen? Oder vielleicht ist es möglich, die Metadaten extern zu speichern. Kurz gesagt, ich habe keine Ahnung, wie man ein IMSM-Array manuell mit mdadm neu erstellt.
Weitere Fragen zu StackExchange
- Ich bin mir bewusst überdiese Frage. Aber ich bin nicht sicher, ob das auf meine Situation anwendbar ist, da ich IMSM verwende, das andere Superblöcke hat (wenn überhaupt welche).
- Ich habe auch gelesendiese Frage. Allerdings handelt es sich um RAID 0 und die Antwort schlägt die Verwendung vor,
--build
was mit RAID 5 nicht funktioniert. - Ich bin mir auch bewusstDieses hier.
--force
Ist in meiner Situation aber nicht anwendbar, da das betreffende Laufwerk nicht nur als ausgefallen oder nicht synchron markiert ist. Und wieder bin ich mir nicht sicher, wie ich das Array speziell mit IMSM neu erstellen soll.
Antwort1
Eureka - Einführung
Ich habe also herausgefunden, wie ich wieder auf meine Daten zugreifen kann. Leider konnte ich das Array nicht mithilfe von neu erstellen mdadm
. Das Problem ist, dass ich mit IMSM zuerst einen Container erstellen muss. Der Container akzeptiert jedoch keine fehlenden Geräte. Ich bräuchte alle meine ursprünglichen 6 Festplatten, aber im Moment habe ich nur 5. Ich kann auch keine virtuellen Festplatten verwenden, da diese an den RAID-Controller angeschlossen werden müssen. Außerdem bin ich mir nicht sicher, ob oder wie ich mit der mdadm
Synchronisierung der Laufwerke beginnen würde, sobald ich ein Volume erstelle. Ich habe jedoch einen Weg gefunden, der mit einhergeht dmsetup
. Ich kann wieder auf alle meine Dateien zugreifen.
Während ich mehrere Backups der Laufwerke durchführte, um mit ihnen zu arbeiten, bemerkte ich auch, dass das eine Laufwerk, das nicht mehr Teil des Arrays ist, manchmal mit IO-Fehlern ausfällt. Ich konnte trotzdem Backups erstellen, da diese Fehler nur bei etwa jedem dritten Aufruf von auftraten dd
. Ich gehe davon aus, dass das Laufwerk, sobald einer der IO-Fehler auftrat, wahrscheinlich von IMSM aus dem Array geworfen und alle seine Metadaten gelöscht wurden.
Mir fiel auch auf, dass dieses Laufwerk das erste im Array war. Da ich eine GPT-Tabelle habe und die Daten des Arrays im ersten Sektor beginnen, ist es auch logisch, dass es mit einem MBR beginnt. Der Supersektor des Laufwerks wurde also nicht mit einem MBR überschrieben. Er war immer da.
Lesen der Daten
Ich versuche hier eine Schritt-für-Schritt-Lösung zu geben, die alle im Prozess verwendeten Befehle erklärt. Hoffentlich hilft das jemandem da draußen.
(Optional) Erstellen Sie eine Sicherungskopie aller Laufwerke
Dies ist nicht unbedingt erforderlich. Vor allem, da wir später schreibgeschützte Loop-Geräte verwenden. Allerdings bin ich nach einem schwerwiegenden Ausfall meiner Speicherlösung besonders paranoid. Daher versuche ich, die Verwendung der tatsächlichen Daten so weit wie möglich zu vermeiden. Darüber hinaus zeigt die Verwendung der Sicherungsdateien, dass diese Methode die Originalfestplatten oder das BIOS überhaupt nicht erfordert. Alles, was Sie benötigen, ist ein DD-Image. Wenn Sie diesen Abschnitt überspringen, stellen Sie sicher, dass Sie die Loop-Geräte im nächsten Abschnitt wirklich schreibgeschützt erstellen, da Sie sonst riskieren, dass Ihre Daten noch stärker beeinträchtigt werden und für immer verloren gehen.
Hier ist trotzdem der Befehl zum Sichern Ihrer Festplatte. Sie kennen dd vielleicht schon. Falls nicht, führen Sie diesen Befehl für jede Festplatte aus, die Teil Ihres Arrays ist:
# dd if=/dev/sdX of=/path/to/backups/sdX.img status=progress
# dd if=/dev/sdY of=/path/to/backups/sdY.img status=progress
# [...]
Die Eingabedatei if=/dev/sdX
ist Ihre Festplatte. Ersetzen Sie sdX
durch sda
, sdb
, usw. Die Ausgabedatei of=/path/to/backups/sdX.img
zeigt auf das Image, das geschrieben werden soll. Ersetzen Sie es erneut sdX
entsprechend. status=progress
weist die GNU-Version von dd lediglich an, den aktuellen Fortschritt auf stderr auszugeben.
Erstellen von Loop-Geräten
Als nächstes erstellen wir Loop-Geräte. Wenn wir Backup-Images verwenden, stellt dies sicher, dass diese als Blockdateien erkannt werden. Dies ist zwar möglicherweise nicht notwendig. In jedem Fall stellt es jedoch sicher, dass das Image nur gelesen wird, da wir das Nur-Lese-Flag verwenden.-r
# losetup --show -rf /path/to/backups/sdX.img
# losetup --show -rf /path/to/backups/sdY.img
[...]
-r
: nur aus der Datei lesen, nicht hineinschreiben-f
: Verwenden Sie die nächste verfügbare Nummer für das Loop-Gerät, damit wir sie nicht selbst raten müssen.--show
: Drucke den tatsächlich gewählten Namen-f
. Das ist normalerweise recht nützlich. Allerdings drucken wir diese Werte im nächsten Schritt sowieso.
Um einen guten Überblick über die Loop-Geräte zu bekommen, die wir gerade erstellt haben, können wir den folgenden Befehl verwenden:
# losetup -a
/dev/loop1: [2129]:251265027 (/path/to/backups/sdX.img)
/dev/loop2: [2129]:251265027 (/path/to/backups/sdY.img)
[...]
Versuchen Sie sich zu merken, welches Loop-Gerät zu welchem Bild gehört.
Sammeln einiger Metadaten
Als nächstes müssen wir einige Informationen über das RAID herausfinden. Insbesondere müssen wir herausfinden, bei welchem Sektor das RAID beginnt (insbesondere im Fall eines Matrix-RAIDs), wie viele Sektoren es umfasst, wie groß seine Blöcke und sein Layout sind und in welcher Reihenfolge die Laufwerke zum Array hinzugefügt wurden.
Wenn mindestens ein Laufwerk noch Teil des Arrays ist und Metadaten angehängt sind, können Sie es verwenden, um die meisten benötigten Informationen abzurufen. Führen Sie den folgenden Befehl auf einem Laufwerk aus, sdX
das noch Teil des Arrays ist:
# mdadm --examine /dev/sdX
/dev/sdX:
Magic : Intel Raid ISM Cfg Sig.
Version : 1.3.00
Orig Family : aa0b2c12
Family : 48d867fb
Generation : 0018f99c
Attributes : All supported
UUID : 0312fa14:fa8db3c2:2a76dc3f:299ed5b4
Checksum : 084869b8 correct
MPB Sectors : 6
Disks : 6
RAID Devices : 1
Disk02 Serial : S21PNSBG710576N
State : active
Id : 00000000
Usable Size : 488391936 (232.88 GiB 250.06 GB)
Bad Block Management Log:
Log Size : 2040
Signature : abadb10c
Entry Count : 254
[NameOfYourArray]:
UUID : 24b1e785:14f37ee5:41f6a4ab:d8b89e11
RAID Level : 5
Members : 6
Slots : [__UUUU]
Failed disk : 1
This Slot : 2
Sector Size : 512
Array Size : 2441959424 (1164.42 GiB 1250.28 GB)
Per Dev Size : 488392200 (232.88 GiB 250.06 GB)
Sector Offset : 0
Num Stripes : 7631124
Chunk Size : 32 KiB
Reserved : 0
Migrate State : idle
Map State : failed
Dirty State : clean
RWH Policy : off
Die Ausgabe geht weiter, aber den Rest können Sie ignorieren. Die oben gezeigte Ausgabe liefert die folgenden wertvollen Informationen:
Sector Offset : 0 # Where the data starts
# (right at the first sector in my case)
Array Size : 2441959424 # Size of the volume (data) inside the array
Chunk Size : 32 KiB # Size of a single chunk
Sie können sogar bestimmen, wo in Ihrem Array sich dieses bestimmte Laufwerk befindet.
This Slot : 2
Dies bedeutet, dass dies das dritte Laufwerk im Array ist. (Die Steckplatznummer beginnt bei Null.) Alternativ Disk## Serial : [...]
gibt auch Folgendes einen Hinweis auf die Steckplatznummer:
Disk02 Serial : S21PNSBG710576N
Führen Sie diesen Befehl für alle Laufwerke aus. Notieren Sie sich die Steckplatznummer der Laufwerke, die weiterhin gültige Ergebnisse liefern.
Es gibt noch einen weiteren Trick, mit dem Sie das erste Laufwerk im Array bestimmen können. Da das RAID in Blöcken und nicht in Bytes geschrieben wird, befinden sich die ersten 32 KiB auf dem ersten Laufwerk. Die zweiten 32 KiB auf dem zweiten Laufwerk und so weiter. Das bedeutet, dass das erste Laufwerk genügend Sektoren haben sollte, die den Anfang Ihrer Partitionstabelle enthalten. Das bedeutet, dass am Anfang ein MBR vorhanden sein sollte (auch wenn Sie GPT verwenden, da es mit einem schützenden MBR beginnt). mdadm --examine
sagt Ihnen bereits, dass ein MBR gefunden wurde, wenn keine Metadaten vorhanden sind. Sie können aber auch verwenden fdisk -l
.
In meinem Fall konnte ich die Steckplatznummern von vier Laufwerken anhand ihrer Metadaten herausfinden. Ich hatte Glück, dass das fünfte Laufwerk einen MBR enthielt, sodass ich automatisch wusste, dass es das erste war. 5 von 6 Laufwerken reichen aus, um das Array zu starten. Wenn Sie die genauen Steckplatznummern von genügend Laufwerken nicht kennen, können Sie verschiedene Permutationen ausprobieren, bis diese Methode erfolgreich ist.
Das bedeutet, dass die richtige Reihenfolge meiner Laufwerke und damit meiner Loop-Geräte wie folgt ist:
Slot | Fahren | Loop-Gerät |
---|---|---|
MBR (0) | /Entwickler/sdb | /Entwickler/Loop2 |
1 | fehlen | - |
2 | /dev/sda | /Entwickler/Schleife1 |
3 | /Entwickler/sdc | /Entwickler/Loop3 |
4 | /dev/sde | /Entwickler/loop5 |
5 | /Entwickler/sdd | /Entwickler/Loop4 |
Als letztes muss noch das Layout geklärt werden. Leider mdadm
gibt es dazu keine Informationen. Wenn wir uns jedoch ansehenIntels RAID-Definitionenes sieht so aus, als ob das Layout für RAID 5 immer asymmetrisch bleibt. Ich bin mir nicht sicher, ob IMSM-Arrays überhaupt mit einem anderen Layout konfiguriert werden können, aber das scheint mir unwahrscheinlich. Wenn das alles bei Ihnen nicht funktioniert, können Sie andere Layouts ausprobieren. Schauen Sie malin der Quelleum mehr über die anderen Layouts zu erfahren.
Nachfolgend finden Sie eine Übersicht über alle von IMSM unterstützten RAID-Level. Das Schlüsselwort dmsetup wird im nächsten Kapitel verwendet.
RAID-Stufe | Layout | dmsetup-Syntax |
---|---|---|
0 | N / A | raid0 |
1 | N / A | Überfall1 |
5 | links asymmetrisch | raid5_la |
10 | Standard (kein 1E oder Kopieren) | raid10 |
Wenn Sie von keinem Laufwerk Metadaten erfassen können, müssen Sie Werte erraten und/oder verschiedene Kombinationen ausprobieren. Als Hilfe sind hier die verschiedenen Modi, die IMSM unterstützt:
Die Info | Mögliche Werte |
---|---|
RAID-Stufen | 0, 1, 5, 10 |
Blockgrößen | 4 kiB, 8 kiB, 16 kiB, 32 kiB, 64 kiB, 128 kiB |
Für den Startsektor und die Größe nehmen Sie am besten Null an und, wenn Sie sich nicht sicher sind, die Größe des kleinsten Laufwerks im Array mal der Anzahl der Laufwerke ohne Parität. Sie können die Größe eines Laufwerks in Sektoren ermitteln, indem Sie den folgenden Befehl eingeben:
blockdev --getsize /dev/sdX
Wenn Ihre Daten nicht bei Null beginnen, können Sie den korrekten Offset später noch erhalten, indem SieSuchen nach einem Partitionsheaderoder vielleicht sogar durchSuche nach Dateisystemen.
Zusammenstellen des Arrays mit dmsetup
Leider gibt es keine Möglichkeit, die Metadaten manuell anzugeben, wenn Sie verwenden mdadm
. Die einzige Ausnahme ist für dieRAID-Level 0 und 1, wo Sie verwenden können--build
:
mdadm --build /dev/md0 --raid-devices=2 --level=0 --chunk=32 /dev/loop0 /dev/loop1
Da wir hier kein Glück haben, müssen wir ein anderes Tool verwenden. Daher verwenden wir dmsetup
stattdessen. dmsetup
ist ein Befehl, der virtuelle Festplatten erstellt, die realen Laufwerken oder anderen Quellen zugeordnet sind. Diese Zuordnungen bestehen aus mehreren Abschnitten und jeder Abschnitt kann einem anderen Laufwerk zugeordnet werden. In unserem Fall benötigen wir nur einen Abschnitt und wir ordnen es einem RAID zu, dessen Metadaten wir manuell bereitstellen.
Aber zuerst müssen wir über Zahlen sprechen. Wie wir zuvor festgestellt haben, betrug die Blockgröße in meinem Fall 32 KiB. Allerdings dmsetup
sind Sektoren erforderlich. In fast allen Fällen entspricht ein Sektor 512 Bytes. Wenn Sie auf Nummer sicher gehen wollen, können Sie die Sektorgröße mit prüfen blockdev --getss /dev/sdX
. In meinem Fall bedeutet dies 32 kiB / (512 bytes/sector) = 64 sectors
. Wir kennen bereits die Größe der Daten im Array in Sektoren (also 2441959424). Aber es gibt ein Problem. Ich habe 6 Geräte. Bei einem Paritätsblock pro Streifen muss die Anzahl der Blöcke durch 5 teilbar sein. Aber die Anzahl der Sektoren ist nicht durch 5 teilbar. In meinem Fall ist sie zumindest durch die Anzahl der Sektoren pro Block teilbar. Aber ich bin nicht einmal sicher, ob das garantiert ist. Es scheint, dass die Daten auf halbem Weg durch den letzten Streifen anhalten. Leider toleriert dmsetup dies nicht. Das bedeutet, dass wir auf die nächste Ganzzahl aufrunden müssen, die durch 5 Laufwerke und durch 64 Sektoren teilbar ist (passen Sie diese Zahlen Ihrer Situation an). In meinem Fall ist das: 2441959680. Das bedeutet, dass fdisk
möglicherweise eine falsche Laufwerksgröße und eine fehlende Backup-Tabelle bemängelt werden. Aber wir können das beheben, indem wir das DD-Image kürzen.
Erstellen Sie nun eine Datei (z. B. table.txt
), die eine Zeile für einen Abschnitt enthält.
<start> <size> raid <raid layout> 2 <chunk size> nosync <num devices>[ - /dev/loopN|-]*num_devices
Zuerst müssen Sie den Start und die Größe in Sektoren angeben. Das nächste Argument besagt, dass es sich um ein RAID handelt. Informationen zum RAID-Layout finden Sie in der Tabelle im vorherigen Abschnitt. Die „2“ im nächsten Argument bedeutet zwei spezielle Parameter für das RAID. Der erste ist die Blockgröße. Der zweite verhindert jegliche Synchronisierung. Danach müssen Sie Ihre Laufwerke beschreiben, indem Sie zuerst die Anzahl der Geräte und dann ein Paar aus Metadaten und Gerätepfad für jedes Gerät angeben. Da wir keine Metadaten angeben möchten, verwenden wir einen Bindestrich, um dies anzuzeigen. Wenn das Gerät fehlt, schreiben wir zwei Bindestriche, um anzuzeigen, dass weder Metadaten noch das Gerät verfügbar sind. Es ist ratsam, mindestens ein Gerät wegzulassen, wenn der RAID-Level dies zulässt. Wenn Sie bereits vermuten, dass ein Laufwerk fehlerhafte Daten enthalten könnte, wählen Sie dieses aus.
In meinem Fall sieht die Datei beispielsweise so aus. Beachten Sie, dass das zweite Gerät fehlt.
0 2441959680 raid raid5_la 2 64 nosync 6 - /dev/loop2 - - - /dev/loop1 - /dev/loop3 - /dev/loop5 - /dev/loop4
Führen Sie nun den folgenden Befehl aus, um eine neue Blockdatei zu erstellen, die unserem Array zugeordnet ist:
# dmsetup create sdr /path/to/table.txt
Dies kann eine Reihe von IO-Fehlern verursachen. In diesem Fall war die Größe in Sektoren wahrscheinlich nicht durch die Blockgröße teilbar. Sie können die Blockdatei entfernen, um den letzten Schritt mit dem folgenden Befehl zu wiederholen:
# dmsetup remove sdr
Schauen wir uns nun die neu erstellte Gerätedatei an. Wenn Sie
# fdisk -l /dev/mapper/sdr
Sie sollten Ihre Partitionstabelle sehen können. Machen Sie sich keine Sorgen über die beiden Fehler, die angezeigt werden, wenn Sie eine GPT-Tabelle haben. Die Größeninkongruenz und die fehlende Sicherungstabelle sind darauf zurückzuführen, dass wir eine zu große Größe für unser RAID gewählt haben.
Meines sieht so aus:
Device Start End Sectors Size Type
/dev/mapper/sdr-part1 2048 923647 921600 450M Windows recovery environment
/dev/mapper/sdr-part2 923648 1128447 204800 100M EFI System
/dev/mapper/sdr-part3 1128448 1161215 32768 16M Microsoft reserved
/dev/mapper/sdr-part4 1161216 679840003 678678788 323.6G Microsoft basic data
/dev/mapper/sdr-part5 679841792 680902655 1060864 518M Windows recovery environment
/dev/mapper/sdr-part6 680904704 2295472127 1614567424 769.9G Linux filesystem
/dev/mapper/sdr-part7 2295472128 2441957375 146485248 69.9G Linux swap
Mithilfe der Start- und Sektorenspalte in dieser Tabelle können wir sogar einige dieser Partitionen mounten. Bitte beachten Sie, dass alle Zahlen in Sektoren angegeben sind und durch Multiplikation mit 512 in Bytes umgewandelt werden müssen.
# mount -o ro,noload,loop,offset=348623208448,sizelimit=826658521088 /dev/mapper/sdr /mnt
Das bedeutet, dass meine Linux-Partition nun auf /mnt gemountet ist und ich alle meine Dateien im ro
(also schreibgeschützten) Modus durchsuchen kann. Das noload
ist nötig, umVerhindern Sie, dass ext4 Schreibvorgänge ausführt.
Und jetzt führen wir endlich eine vollständige Sicherung mit dd durch.
# dd if=/dev/mapper/sdr of=/path/to/backups/raid.img status=progress
Erinnern Sie sich, wie wir ein RAID erstellt haben, das etwas größer war als es sein sollte? Wir können diese Gelegenheit nutzen, um diesen Fehler zu beheben, indem wir das Image auf die richtige Größe kürzen. Die Anzahl der Sektoren muss in Bytes umgewandelt werden: 2441959424*512 = 1250283225088
.
# truncate -s 1250283225088 /path/to/backups/raid.img
Jetzt fdisk -l
wird keine Größenabweichung mehr beanstandet.