QNAP Disks an anderen Systemen auslesen - Teil 2: Statisches Volume auf RAID1 / RAID5

[PROLOG]

Hier habe ich beschrieben wie man ein statisches Volume auf einer Einzeldisk unter Linux ausliest, das Gleiche gilt es nun auch für ein statisches Volume im RAID1 und RAID5 zu realisieren.
Diesmal habe ich mir ein frisches Debian auf echtem Blech, statt eine VM daher genommen. Mehr gibt es eigentlich nicht zu sagen.


[VORBEREITUNG]

Wir brauchen also auch hier ein Linux-System und die Möglichkeit die QNAP-Datenträger daran anzuschließen, theoretisch würde ein Datenträger beim RAID1 reichen, das habe ich an entsprechender Stelle vermerkt. Auch hier bediene ich mich noch den Tools „Putty“ für den CLI Zugriff über SSH und „WinSCP“ um komfortabel auf die Daten zugreifen zu können. Das System wird gestartet und eine SSH Session geöffnet.

Ich habe es im vorherigen Artikel nicht erwähnt, aber es empfiehlt sich die Datenträger erst anzuschließen, wenn das System bereits hochgefahren ist, damit nicht versucht wird von diesen zu booten. Andernfalls muss ausgeschlossen sein, dass dies passiert. In diesem Beispiel habe ich die Disks mittels 2-fach SATA-USB Dock angeschlossen.


Falls nicht bereits vorhanden muss der Logical Volume Manager sowie mdadm (RAID-Verwaltung) installiert werden. Letzteres scheint ebenfalls nicht vorinstalliert zu sein, das habe ich im vorherigen Artikel nicht bemerkt, da ich die VM zuvor schon öfter im Einsatz hatte…


apt-get install lvm2

apt-get install mdadm


[RAID1 - DURCHFÜHRUNG]
Zunächst werfen wir einen Blick auf die Datenträger und identifizieren anhand der Kapazität die für uns relevanten Geräte sowie das RAID Array (das RAID besteht hier aus unterschiedlich großen SSD, 120GB und 240GB):


root@Debian:/# sudo fdisk -l


Man erkennt eine QNAP Disk übrigens daran, dass es mehrere Partitionen gibt, wovon die ersten beiden etwa 512MB Kapazität aufweisen. Das könnte von Interesse sein wenn man die Disk nicht anhand der Kapazität identifizieren kann. Alternativ kann man sich die Datenträger vorher auch mal anzeigen lassen, ohne dass die QNAP Disks verbunden sind.


Nun stellen wir nochmal sicher, dass md1 wirklich das gewünschte RAID Array ist. Bei mir gibt es komischerweise nur das eine RAID, ich hätte hier zusätzlich die System-RAID erwartet… für uns relevant ist das Array mit unserem identifizierten sdb und/oder sdc. Dieser Schritt ist optional, denn bei QNAP sind die Arrays mit den Nutzdaten in der Regel immer md1 bis mdX, wobei md9 und md13 anderweitig verwendet werden, daher gewöhne ich mir lieber direkt an, das nochmal gegenzuprüfen.


root@Debian:/# cat /proc/mdstat

Code
 Personalities : [raid1]
md1 : active (auto-read-only) raid1 sdb3[1]        ## <<< Identität des Array ist damit bestätigt, denn es beinhaltet unser sdb3

      107273920 blocks super 1.0 [2/1] [_U]


Dann wird das Array mit sdb3 (in diesem Fall) gestoppt…


root@Debian:~# mdadm --stop /dev/md1

Code
 mdadm: stopped /dev/md1


… und wir erstellen ein Neues, hier mit der Nummer 99 (diese darf nicht bereits existieren). Theoretisch würde bei einem RAID1 auch nur eine Disk genügen (also sdb3 oder sdc3), dazu ist die Option --run erforderlich. Wir nehmen hier aber beide Disks mit rein und bauen das RAID neu auf:


root@Debian:/# sudo mdadm --assemble /dev/md99 /dev/sdb3 /dev/sdc3

Code
 mdadm: /dev/md99 has been started with 2 drives.

Nun werfen wir einen Blick in die Volumes welche LVM-verwaltet sind und schauen wieder anhand der Kapazität, was unsere Volume Group (VG) und unser Volume (LV) ist.


root@Debian:/# sudo lvs

Code
   WARNING: PV /dev/md99 in VG vg288 is using an old PV header, modify the VG to update.
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1   vg288 -wi------- 101.25g                                                         ## <<< Gewünschte Volume Group vg288 mit gewünschtem Volume lv1
  lv544 vg288 -wi-------   1.05g


Zunächst aktivieren wir die Volume Group:


root@Debian:/# sudo vgchange -ay

Code
   WARNING: PV /dev/md99 in VG vg288 is using an old PV header, modify the VG to update.
  2 logical volume(s) in volume group "vg288" now active


und mounten sie dann…


root@Debian:/# mkdir test

root@Debian:/# mount /dev/vg288/lv1 /test


… und nach einem Wechsel in das Verzeichnis sehen wir auch schon den Inhalt. In diesem Beispiel habe ich ein paar MP3 in der Freigabe „Media“ abgelegt…


root@Debian:/# cd test

root@Debian:/test# ls -all

Code
 total 124
drwxrwxrwx 25 root root  4096 Aug 24 12:54 .
drwxr-xr-x 20 root root  4096 Aug 24 13:25 ..
drwx------  2 root root 16384 Aug 18 14:14 lost+found
drwxrwxrwx  4 root root  4096 Aug 18 14:52 Media        ## <<< Da ist meine Freigabe "Media" (die Auflistung wurde hier gekürzt; da es das Systemvolume des QNAP war, gibt es hier viel mehr Ordner)


root@Debian:/test# cd Media

root@Debian:/test/Media# ls -all


... die Daten kann man sich nun mit WinSCP herunterladen, alternativ kann natürlich ein ausreichend großer Datenträger an den "Recovery-Rechner" angeschlossen werden, auf den die Daten direkt kopiert werden.



[RAID5 - DURCHFÜHRUNG]

Die Durchführung unterscheidet sich kaum von der bei RAID1. Das RAID5 besteht aus drei Disks mit unterschiedlicher Kapazität, in diesem Beispiel verwenden wir aber nur zwei Disks um das RAID aufzubauen, denn eine darf ja bekanntlich fehlen.


Es beginnt wieder mit einem Blick auf die Datenträger und wir identifizieren die für uns Relevanten. Hier werden erwartungsgemäß auch die System-RAID angezeigt, was beim RAID1 komischerweise nicht der Fall war:


root@Debian:/ # sudo fdisk -l


Auch hier stellen wir nochmal sicher, dass md1 auch wirklich das Array mit unseren Volumes für die Nutzdaten ist:


root@Debian:/ # cat /proc/mdstat


Dann wird das Array mit unserem sdb3 und sdc3 (in diesem Fall) gestoppt…


root@Debian:/ # sudo mdadm --stop /dev/md1

Code
 mdadm: stopped /dev/md1


… und wir erstellen ein Neues, hier wieder mit der Nummer 99 (diese darf nicht bereits existieren). Da wir nur zwei der drei Disks angeschlossen haben, erstellen wir das Array auch nur mit diesen beiden unter Verwendung der Option --run. Hat man alle Datenträger angeschlossen, so lässt man diese Option weg und fügt den Datenträger (z.B. /dev/sdd3) mit an:


root@Debian:/ # sudo mdadm --assemble --run /dev/md99 /dev/sdb3 /dev/sdc3

Code
 mdadm: /dev/md99 has been started with 2 drives (out of 3).


Nun werfen wir einen Blick in die Volumes welche LVM-verwaltet sind und schauen wieder anhand der Kapazität, was unsere Volume Group (VG) und unser Volume (LV) ist.


root@Debian:~# sudo lvs

Code
   WARNING: PV /dev/md99 in VG vg288 is using an old PV header, modify the VG to update.
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1   vg288 -wi------- 202.50g                                                        ## <<< Gewünschte Volume Group vg288 mit gewünschtem Volume lv1
  lv544 vg288 -wi-------  <2.11g


Zunächst aktivieren wir die Volume Group:


root@Debian:/# sudo vgchange -ay

Code
   WARNING: PV /dev/md99 in VG vg288 is using an old PV header, modify the VG to update.
  2 logical volume(s) in volume group "vg288" now active


und mounten sie dann…


root@Debian:/# mkdir test

root@Debian:/# mount /dev/vg288/lv1 /test


… und nach einem Wechsel in das Verzeichnis sehen wir auch schon den Inhalt. Um die Spannung zu steigern habe ich habe ich ein paar andere MP3 in der Freigabe „Media“ abgelegt, als im Beispiel zuvor…


root@Debian:/# cd test

root@Debian:/test# ls -all

Code
 total 124
drwxrwxrwx 25 root root  4096 Aug 24 12:54 .
drwxr-xr-x 20 root root  4096 Aug 24 13:25 ..
drwx------  2 root root 16384 Aug 18 14:14 lost+found
drwxrwxrwx  4 root root  4096 Aug 18 14:52 Media    ## <<< Da ist meine Freigabe "Media" (die Auflistung wurde hier gekürzt; da es das Systemvolume des QNAP war, gibt es hier viel mehr Ordner)

root@Debian:/test# cd Media
root@Debian:/test/Media# ls -all


[EPILOG]
Die Option --run bei mdadm verstehe ich übrigens anders, aber in beiden Beispielen konnte ich das Array nur mithilfe dieser Option zusammensetzen, wenn ein Datenträger gefehlt hat. Sei es drum, Hauptsache der Zugriff auf die Daten ist wieder möglich!

Auch mit einem RAID und LVM ist es demnach nicht schwer, wieder Zugriff auf die Daten zu erlangen, wenn man kein QNAP zur Hand hat. Die Testdaten wurden auf einem TS-453D unter QTS 5.0.0 erstellt, das RAID1 wurde dabei nach der ersten Datenwiederherstellung in das RAID5 konvertiert, aber das tut eigentlich nichts zur Sache.

Dieses Vorgehen ist so auch für andere RAID-Level umsetzbar, wichtig ist, dass mindestens die Datenträger verwendet werden, die bei dem Level erforderlich sind. Die Datenträger die ausfallen dürfen, können weggelassen werden.

Eigentlich wollte ich das Spiel nun wenigstens noch mit RAID0 und JBOD durchziehen, befürchte aber, dass das etwas langweilig wird.


Ich hoffe, dass ich diese Serie irgendwann mit einem dritten Teil abschließen kann, nämlich der Wiederherstellung von Thin- oder Thick- Volumes, was -sofern überhaupt möglich- der komplizierteste Teil sein wird, mal sehen ob ich hier noch einen Schritt weiter komme, denn das wäre sicherlich auch der interessanteste Teil!


So sehr mich dieses Vorgehen auch interessiert: Selbst wenn es nicht klappt brauche ich mir hier dank ausreichender Backups gar keine Sorgen machen und kann stattdessen die schönen Seiten des Lebens genießen… cheers! :beer: