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:

    Leave A Reply