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/VolGroup01VolGroup01 { 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 activemount /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/md3nas> 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: