Wiederherstellung von Daten aus einem RAID im Recovery Mode
Version: 1.0
Dies ist kein Tutorial, sondern mein persönlicher Notizzettel.
Die verwendeten Befehle sollten nicht einfach blind abgetippt werden, sondern sollen den roten Faden bei ähnlich gelagerten Wiederherstellungszenarien beschreiben.
Bei Unklarheiten sollte ein Thema im Forum aufgemacht werden - Anmerkungen / Verbesserungen zu meinen Notizen gerne per PN an mich.
Rahmenbedingungen
In dem vorliegenden Fall ist das QTS-Betriebssystem nicht mehr in der Lage gewesen, den RAID-Verbund zusammenzubauen.
Auch wenn das QTS Betriebssystem nur noch mit ausgesteckten Festplatten startet, kommt diese Methode in Frage.
Wenn das NAS Gehäuse selbst defekt ist, kommt alternativ auch ein Linux-PC in Frage. Für bestimmte Szenarien finden sich zudem auch Windows-Tools, die den Inhalt der Festplatten auslösen können.
Der Vorteil an der Verwendung des NAS-Gehäuses zur Wiederherstellung liegt in erster Linie an der Verfügbarkeit aller notwendigen Kernel-Treiber und Tools, die zum Lesen der Festplatteninhalte benötigt werden.
Vorbereitungen
- NAS ohne Festplatten starten. Warten, bis das Gerät über den QFinder sichtbar ist.
- Per ssh / putty auf das NAS Zugreifen, es gilt der Standardzugang (User: admin Passwort: admin ).
- Die Festplatten nun in das NAS-Gehäuse nacheinander reinschieben und ca. 1 Minuten warten.
-Überprüfen, dass alle Festplatten erkannt werden.
[~] # qcli_storage -d
Enclosure Port Sys_Name Type Size Alias Signature Partitions Model
NAS_HOST 1 /dev/sda HDD:free 931.51 GB -- QNAP FLEX 5 HITACHI HUA722010ALA330
NAS_HOST 2 /dev/sdb HDD:free 931.51 GB -- QNAP FLEX 5 HITACHI HUA722010ALA330
NAS_HOST 3 /dev/sdc HDD:free 931.51 GB -- QNAP FLEX 5 HITACHI HUA722010ALA330
NAS_HOST 4 /dev/sdd HDD:free 931.51 GB -- QNAP FLEX 5 HITACHI HUA722010ALA330
In diesem Fall wurden alle vier eingeschobenen Festplatten erkannt.
Überblick verschaffen
[~] # cat /proc/partitions | grep sd
8 0 976762584 sda
8 1 530125 sda1
8 2 530142 sda2
8 3 966807763 sda3
8 4 530144 sda4
8 5 8353796 sda5
8 16 976762584 sdb
8 17 530125 sdb1
8 18 530142 sdb2
8 19 966807763 sdb3
8 20 530144 sdb4
8 21 8353796 sdb5
8 32 976762584 sdc
8 33 530125 sdc1
8 34 530142 sdc2
8 35 966807763 sdc3
8 36 530144 sdc4
8 37 8353796 sdc5
8 48 976762584 sdd
8 49 530125 sdd1
8 50 530142 sdd2
8 51 966807763 sdd3
8 52 530144 sdd4
8 53 8353796 sdd5
Alles anzeigen
Im Regelfall finden sich Raidgruppen / Speicherpools in den Partitionen sd[X]3. Man erkennt sie zumeist daran, dass die Größe der Partition mit Abstand die Größste von
allen Partitionen pro Festplatte ist.
Nach RAID Verbund suchen
Wir wissen leider nicht, ob alle Festplatten Teil des gleichen RAID-Verbundes ist, daher schauen wir uns an, ob es Spuren eines Raid-Verbundes auf den Festplatten-Partitionen gibt. [~] #
mdadm --examine /dev/sd[abcd]3
/dev/sda3:
Magic : a92b4efc
Version : 1.0
Feature Map : 0x0
Array UUID : 99b12ca6:0c6159a3:18b2332b:b32303c2
Name : 1
Creation Time : Sat Mar 10 23:45:18 2018
Raid Level : raid1
Raid Devices : 1
Avail Dev Size : 1933615240 (922.02 GiB 990.01 GB)
Array Size : 966807616 (922.02 GiB 990.01 GB)
Used Dev Size : 1933615232 (922.02 GiB 990.01 GB)
Super Offset : 1933615504 sectors
Unused Space : before=0 sectors, after=264 sectors
State : clean
Device UUID : a296d0db:076fa137:89e349c2:9b7e8db9
Update Time : Wed Mar 14 23:51:14 2018
Bad Block Log : 512 entries available at offset -8 sectors
Checksum : 7e08a5c9 - correct
Events : 2
Device Role : Active device 0
Array State : A ('A' == active, '.' == missing, 'R' == replacing)
Alles anzeigen
/dev/sdb3:
Magic : a92b4efc
Version : 1.0
Feature Map : 0x0
Array UUID : e7154bd2:598cd26b:0c7c4d78:a306b1e4
Name : 2
Creation Time : Wed Mar 14 17:38:15 2018
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 1933615240 (922.02 GiB 990.01 GB)
Array Size : 1933615104 (1844.04 GiB 1980.02 GB)
Used Dev Size : 1933615104 (922.02 GiB 990.01 GB)
Super Offset : 1933615504 sectors
Unused Space : before=0 sectors, after=392 sectors
State : clean
Device UUID : e4f22720:915be9b3:2691d3b9:31286222
Update Time : Thu Mar 15 00:05:25 2018
Bad Block Log : 512 entries available at offset -8 sectors
Checksum : 36a7950 - correct
Events : 54
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 0
Array State : A.. ('A' == active, '.' == missing, 'R' == replacing)
Alles anzeigen
/dev/sdc3:
Magic : a92b4efc
Version : 1.0
Feature Map : 0x0
Array UUID : e7154bd2:598cd26b:0c7c4d78:a306b1e4
Name : 2
Creation Time : Wed Mar 14 17:38:15 2018
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 1933615240 (922.02 GiB 990.01 GB)
Array Size : 1933615104 (1844.04 GiB 1980.02 GB)
Used Dev Size : 1933615104 (922.02 GiB 990.01 GB)
Super Offset : 1933615504 sectors
Unused Space : before=0 sectors, after=392 sectors
State : clean
Device UUID : 3d8d6a6e:ab9ec648:3a3a1d30:973342ea
Update Time : Thu Mar 15 00:04:51 2018
Bad Block Log : 512 entries available at offset -8 sectors
Checksum : 24b70b1a - correct
Events : 53
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 1
Array State : AA. ('A' == active, '.' == missing, 'R' == replacing)
Alles anzeigen
/dev/sdd3:
Magic : a92b4efc
Version : 1.0
Feature Map : 0x2
Array UUID : e7154bd2:598cd26b:0c7c4d78:a306b1e4
Name : 2
Creation Time : Wed Mar 14 17:38:15 2018
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 1933615240 (922.02 GiB 990.01 GB)
Array Size : 1933615104 (1844.04 GiB 1980.02 GB)
Used Dev Size : 1933615104 (922.02 GiB 990.01 GB)
Super Offset : 1933615504 sectors
Recovery Offset : 295579648 sectors
Unused Space : before=0 sectors, after=392 sectors
State : clean
Device UUID : 7827561c:47eb93bb:b07403f4:c00ad38b
Update Time : Thu Mar 15 00:02:55 2018
Bad Block Log : 512 entries available at offset -8 sectors
Checksum : bc89331a - correct
Events : 48
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 2
Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)
Alles anzeigen
Aus dieser Ausgabe erkennen wir, dass sda als Einzelfestplatte konfiguriert war, sdb,sdc, sdd befanden sich in einem RAID 5 Verbund.
Platte sdd hat die älteste Update Zeit und eine Feature Map von 0x2. Die Platte war offenbar mit dem Rebuild beschäftigt, bevor sie ausgefallen ist.
Kurze Zeit später scheint es auch mit Platte sdc ein Problem gegeben zu haben, denn Platte sdb meldet einen Array Status, bei dem nur noch eine Platte im Verbund vorhanden war.
RAID Verbund starten
[~] # mdadm --assemble /dev/md99 /dev/sdb3 /dev/sdc3 /dev/sdd3
mdadm: failed to get exclusive lock on mapfile - continue anyway...
mdadm: device 2 in /dev/md99 has wrong state in superblock, but /dev/sdc3 seems ok
mdadm: /dev/md99 has been started with 2 drives (out of 3)
haben wir Glück. mdadm erkennt alle drei Platten wieder und das Array wird im degraded Mode gestartet.
Wir könnten jedoch auch Pech haben
[~] # mdadm --assemble /dev/md99 /dev/sdb3 /dev/sdc3 /dev/sdd3
mdadm: superblock on /dev/sdc3 doesn't match others - assembly aborted
Die Fehlermeldung kann je nach vorliegendem Problem variieren - Aufgrund der oben angestellten Analyse vermuteten wir jedoch, dass die Platte sdd zuerst aus dem Verbund geflogen ist und
Wir versuchen, den Verbund mit nur 2 Platten aufzubauen
[~] # mdadm --assemble --force /dev/md99 /dev/sdb3 /dev/sdc3
mdadm: failed to get exclusive lock on mapfile - continue anyway...
mdadm: clearing FAULTY flag for device 1 in /dev/md99 for /dev/sdc3
mdadm: Marking array /dev/md99 as 'clean'
mdadm: /dev/md99 has been started with 2 drives (out of 3).
In diesem Fall hatten wir Glück im Unglück - zumindest zwei von den drei Platten scheinen noch inakt zu sein.
Wir sehen, dass der RAID-Verbund gestartet wurde:
[~] # cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md99 : active raid5 sdb3[0] sdc3[1]
1933615104 blocks super 1.0 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
Aber wie kommen wir jetzt an die Daten?
Einhängepunkt erstellen
[~] # mkdir /tempmnt
Das weitere Vorgehen ist abhängig davon, welche Art Volume auf dem NAS System eingerichtet war.
a - Legacy Volumes
Legacy Volumes lassen sich in der Regel direkt mounten:
[~] # mount -t ext4 /dev/md99 /tempmnt/
Erhalten wir eine Fehlermeldung, z.B.
mount: wrong fs type, bad option, bad superblock on /dev/md77,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
ist LVM im Spiel.
b - LVM-Volumes
Mit den folgenden Kommandos schaffen iwr uns einen Überblick über die LVM Umgebung:
[~] # pvscan
WARNING: Device for PV 2NEqV9-abZB-0Hav-qhrt-y50U-qeWj-mAaLJ5 not found or rejected by a filter.
PV /dev/md99 VG vg1 lvm2 [1.80 TiB / 0 free]
WARNING: Device for PV 2NEqV9-abZB-0Hav-qhrt-y50U-qeWj-mAaLJ5 not found or rejected by a filter.
PV unknown device VG vg288 lvm2 [922.02 GiB / 0 free]
Total: 2 [2.70 TiB] / in use: 2 [2.70 TiB] / in no VG: 0 [0 ]
Auf unserem gestarten RAID-Verbund findet sich eine Volume-Gruppe vg1
[~] # lvscan
inactive '/dev/vg1/lv545' [18.44 GiB] inherit
inactive '/dev/vg1/tp1' [1.72 TiB] inherit
inactive '/dev/vg1/lv2' [515.00 GiB] inherit
WARNING: Device for PV 2NEqV9-abZB-0Hav-qhrt-y50U-qeWj-mAaLJ5 not found or rejected by a filter.
inactive '/dev/vg288/lv544' [9.27 GiB] inherit
inactive '/dev/vg288/lv1' [912.75 GiB] inherit
Auf dieser Volume Gruppe vg1 findet sich ein logisches Volume /dev/vg1/lv2.
Logisches Volume aktivieren
[~] # lvchange -a y /dev/vg1/lv2
Einhängen
[~] #mount -t ext4 /dev/vg1/lv2 /tempmnt/
Nach Daten suchen
[~] # cd /tempmnt/
[/tempmnt] # ls -al
drwxrwxrwx 4 admin administ 4096 Mar 14 17:47 ./
drwxr-xr-x 20 admin administ 440 Mar 16 15:17 ../
-rw-r--r-- 1 admin administ 27 Mar 14 17:44 .qextension
drwxrwxrwx 5 admin administ 4096 Mar 14 21:32 Misa-Q/
-rw------- 1 admin administ 6144 Mar 14 17:44 aquota.user
drwx------ 2 admin administ 16384 Mar 14 17:44 lost+found/
Hier finen wir unseren ehemaligen Freigabe-Ordner „Misa-Q“ wieder.
[/tempmnt] # cd Misa-Q/
[/tempmnt/Misa-Q] # ls -al
drwxrwxrwx 5 admin administ 4096 Mar 16 15:42 ./
drwxrwxrwx 4 admin administ 4096 Mar 14 17:47 ../
drwxrwxrwx 2 admin administ 4096 Mar 14 17:52 .@upload_cache/
drwxr-xr-x 2 admin administ 4096 Mar 14 17:47 @Recently-Snapshot/
drwxrwxrwx 2 admin administ 4096 Mar 14 17:47 @Recycle/
-rw-rw-rw- 1 admin administ 13 Mar 14 17:52 hallo.txt
drwxr-xr-x 2 admin administ 4096 Mar 13 15:43 wichtig/
Und unsere dringend zu sichernde Datei hallo.txt sowie unser Ordner wichtig ist in Reichweite.
externe USB-Festplatte einstecken
Nun eine ausreichend große , NTFS (Windows) - formatierte Festplatte an das NAS anstecken.
Die USB-Festplatte sollte automatisch erkannt werden.
[~] # df -h
Filesystem Size Used Available Use% Mounted on
none 360.0M 159.9M 200.1M 44% /
devtmpfs 491.6M 4.0k 491.6M 0% /dev
tmpfs 64.0M 172.0k 63.8M 0% /tmp
tmpfs 500.3M 4.0k 500.2M 0% /dev/shm
tmpfs 16.0M 0 16.0M 0% /share
tmpfs 16.0M 0 16.0M 0% /mnt/snapshot/export
cgroup_root 500.3M 0 500.3M 0% /sys/fs/cgroup
tmpfs 64.0M 37.8M 26.3M 59% /tunnel_agent
/dev/vg1/lv2 506.8G 72.1M 506.2G 0% /tempmnt
/dev/sde1 465.8G 154.3M 465.6G 0% /share/external/DEV3301_1
Alles anzeigen
in unserem Fall wurde sie eingehängt unter /share/external/DEV3301_1
Wir wollen den gesamten Inhalt des Ordners Misa-Q sichern:
[~] # rsync -a --progress /tempmnt/Misa-Q /share/external/DEV3301_1/BACKUP/
Je nach Größe kann dieser Vorgang einige Minuten oder Stunden dauern.
Nach Abschluss sollten sich unsere Ordner au der USB-Festplatte befinden:
[~] # ls -al /share/external/DEV3301_1/BACKUP/
drwxrwxrwx 1 admin administ 0 Mar 14 17:52 .@upload_cache/
drwxr-xr-x 1 admin administ 0 Mar 14 17:47 @Recently-Snapshot/
drwxrwxrwx 1 admin administ 0 Mar 14 17:47 @Recycle/
-rw-rw-rw- 1 admin administ 13 Mar 14 17:52 hallo.txt
drwxr-xr-x 1 admin administ 0 Mar 16 15:43 wichtig/
Wir könnten auch einzelne Ordner oder Dateien sichern mittels:
[~] # cp -r /tempmnt/Misa-Q/wichtig/ /share/external/DEV3301_1/BACKUP/
Hierbei wird jedoch keine Fortschritsanzeige generiert. Diese Kopierart hat den Vorteil, dass sie bei vielen kleinen Dateien meist schneller arbeitet. Dafür kann ein unterbrochener Kopiervorgang nicht einfach fortgesetzt werden.
Nach Abschluss der Kopiervorgänge kann das USB-Gerät ausgehängt werden:
[~] # umount /share/external/DEV3301_1/
Wenn sichergestellt ist, dass das alle Daten gesichert worden sind, kann das NAS nun neu gestartet werden und neu aufgesetzt werden. Unbedingt überprüfen, ob die Festplatten noch für einen weiteren Einsatz geeignet sind - andernfalls die Festplatten ersetzen.