Website-Icon .: blog cscholz.io :.

Synology DS212+: Raid1 HD Datenrettung

Nachdem ich mir vor ca. 2 Monaten ein Synology DS212+ gekauft habe und temporär mit kleinen Platten herumspielen musste, da meine 3 TB HDs leider nicht verfügbar waren, habe ich mich mal mit dem Szenario beschäftigt, wie ich eine Festplatte aus einem Raid1 Verbund auch außerhalb des NAS einbinden kann.

Man muss wissen, dass zwei Festplatten im RAID-1 Verbund im NAS erst als Array zusammengeschlossen werden (mdadm) um anschließend ein LVM2 darüber zu legen. Nachdem meine 3 TB HDs endlich da waren, habe ich eine der temporären Festplatten mittels USB an das NAS angeschlossen.

sfdisk -l /dev/sds
/dev/sds1                   256         4980735         4980480  fd
/dev/sds2               4980736         9175039         4194304  fd
/dev/sds3               9437184       976759007       967321824   f
/dev/sds5               9453280       976759007       967305728  fd

/dev/sds1 ist die Partition, auf der das Synology Linux läuft, /dev/sds2 ist die SWAP Partition, während /dev/sds5 meine eigentliche Datenpartition ist. Um /dev/sds5 verwenden zu können, muss die Partition zuerst wieder als Array eingebunden werden.

nas> mdadm -Sf /dev/md3
mdadm: stopped /dev/md3
nas> mdadm --assemble --force /dev/md3 /dev/sds5
mdadm: /dev/md3 has been started with 1 drive (out of 2).

Ein Blick in die Datei /proc/mdstat zeigt, dass neben dem Rebuild der internen Platten (/dev/md2) nun auch /dev/md3 verfügbar ist:

nas> cat /proc/mdstat

Personalities : [raid1] [linear][raid0] [raid10] [raid6] [raid5] [raid4]

md3 : active raid1 sds5[1]
      483651648 blocks super 1.2 [2/1] [_U]

md2 : active raid1 sdb5[1] sda5[0]
      2925531648 blocks super 1.2 [2/2] [UU]
      [========>............]  check = 41.4% (1212250496/2925531648) finish=3370.2min speed=8472K/sec

md1 : active raid1 sda2[0] sdb2[1]
      2097088 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      2490176 blocks [2/2] [UU]

unused devices:

Nun wird eigentlich eine Kopie der lvm Konfigurationsdatei benötigt. Diese liegt auf der alten Platte unter /etc/lvm/backup/vg1000. Man kann sich die Informationen aber auch relativ einfach mit der vorhandenen Partition wieder zusammen suchen, da diese direkt am Partitionsanfang stehen. Dies ist Hilfreich, falls die Root-Partition mal nicht mehr lesbar sein sollte.

dd if=/dev/md3 bs=512 count=255 skip=1 of=/tmp/md3-raw

Nun kopiert man sich die notwendigen Daten aus der Datei /tmp/md3-raw heraus und speichert die Datei als /etc/lvm/backup/VolGroup01

vi /tmp/md3-raw-start

I.d.R. sind alle Informationen sauber zu lesen, bis auf die Rot markierte Zeile. Um später Namensdopellungen zu vermeiden (original Name "lv", neue Name "VolGroup01") wird die VolumeGroup unter einem anderen Namen eingebunden. Die fertig zusammen gesetzte Datei sieht dann wie folgt aus:

nas> cat /etc/lvm/backup/VolGroup01
VolGroup01 {
id = "ehyGX6-mJYy-lg5w-aEnQ-sEEy-P1ov-qbMYiL"
seqno = 2
status = ["RESIZEABLE", "READ", "WRITE"]
extent_size = 8192
max_lv = 0
max_pv = 0
physical_volumes {
pv0 {
id = "xp2mc0-g2S8-GV2H-ofY8-CKcb-M6rl-vDsV5o"
device = "/dev/md2"
status = ["ALLOCATABLE"]
dev_size = 967303296
pe_start = 1152
pe_count = 118078
}
}
logical_volumes {
lv {
id = "2jF2RC-eRXR-bbCl-9GMl-pYsk-ZI86-9w8Imn"
status = ["READ", "WRITE", "VISIBLE"]
segment_count = 1
segment1 {
start_extent = 0
extent_count = 118078
type = "striped"
stripe_count = 1        # linear
stripes = [
"pv0", 0
]
}
}
}
}
# Generated by LVM2 version 2.02.38 (2008-06-11): Tue May 22 10:33:49 2012

Nun kann das Volume anhand der Konfigurationsdatei wiederhergestellt werden:

nas> vgcfgrestore -f VolGroup01 VolGroup01
  WARNING: Duplicate VG name vg1000: ehyGX6-mJYy-lg5w-aEnQ-sEEy-P1ov-qbMYiL (created here) takes precedence over E1EsGD-vR0m-x0DE-JVpa-ixY4-Jmd9-ZffJzO
  Restored volume group VolGroup01

Die VolumeGroup sollte nun auch angezeigt werden:

nas> vgs
  VG         #PV #LV #SN Attr   VSize   VFree
  VolGroup01   1   1   0 wz--n- 461.24G    0
  vg1000       1   1   0 wz--n-   2.72T    0

Diese wird nun noch aktiviert und gemountet:

nas> vgchange VolGroup01 -a y
  1 logical volume(s) in volume group "VolGroup01" now active
mount /dev/VolGroup01/lv /mnt/temp/

Nun kann man wieder auf die Daten zugreifen:

df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/md0                  2.3G    409.7M      1.8G  18% /
/tmp                    249.9M      1.0M    248.8M   0% /tmp
/dev/vg1000/lv            2.7T    367.3G      2.3T  13% /volume1
/dev/sdc1               931.5G    930.6G    947.2M 100% /volumeSATA/satashare
/dev/sds1                 2.3G    404.6M      1.8G  18% /volumeUSB1/usbshare1-1
/dev/VolGroup01/lv      454.0G    235.2M    453.7G   0% /mnt/temp

nach Datewiederherstellung aufräumen

Als erstes muss die VolumeGroup deaktiviert werden:

nas> vgchange VolGroup01 -a n
  0 logical volume(s) in volume group "VolGroup01" now active

Anschließend kann sie entfernt werden:

nas> vgremove VolGroup01
Do you really want to remove volume group "VolGroup01" containing 1 logical volumes? [y/n]: y
  Logical volume "lv" successfully removed
  Volume group "VolGroup01" successfully removed

Nun noch das Raid Array entfernen:

nas> mdadm --stop /dev/md3
mdadm: stopped /dev/md3
nas> mdadm --remove /dev/md3

Und die Festplatte kann wieder entfernt werden:

nas> cat /proc/mdstat
Personalities : [raid1] [linear][raid0] [raid10] [raid6] [raid5] [raid4]

md2 : active raid1 sdb5[1] sda5[0]
      2925531648 blocks super 1.2 [2/2] [UU]
      [========>............]  check = 41.8% (1225677312/2925531648) finish=1984.9min speed=14272K/sec

md1 : active raid1 sda2[0] sdb2[1]
      2097088 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      2490176 blocks [2/2] [UU]

unused devices:
Die mobile Version verlassen