Vom Ein­zel­lauf­werk zum RAID1

Mit omv-Bord­mit­teln lässt sich ein Ein­zel­lauf­werk nicht in ein RAID-Mit­glied umwan­deln. Ein paar Kom­man­dos auf der Kon­so­le schaf­fen aber Abhilfe.

Das Sze­na­rio

Die Situa­ti­on ist sicher nicht sel­ten: im NAS wer­kelt nur ein ein­zel­nes Lauf­werk, weil man für die vie­len Tests am Anfang nicht gleich in ein zwei­tes inves­tie­ren woll­te. Jetzt hat man die Test­pha­se hin­ter sich und ein zwei­tes Lauf­werk des (nahe­zu) glei­chen Typs gekauft. Um die Daten­si­cher­heit zu ver­bes­sern, will man aus bei­den Lauf­wer­ken einen RAI­D1-Ver­bund erstel­len, also die Daten auf bei­den Lauf­wer­ken spiegeln.

Open­me­diav­ault lässt einen sol­chen Umstieg auf sei­ner Web-Ober­flä­che lei­der nicht direkt zu. Ein RAID kann man dort nur aus „lee­ren” Lauf­wer­ken erzeu­gen, weil omv immer auf allen Lauf­wer­ken ein neu­es File­sys­tem anle­gen will. Man müss­te also zunächst die Daten sichern, dann bei­de Lauf­wer­ke löschen, mit ihnen ein RAID1 erstel­len und danach die Daten­si­che­rung wie­der zurückspielen.

Aber da omv hin­ter den Kulis­sen auch nur mit Haus­mit­teln wie mdadm arbei­tet, kann man mit ein paar Befeh­len auf der Kom­man­do­zei­le zumin­dest einen Kopier­vor­gang einsparen.

Der Plan

Das Zau­ber­wort heißt degra­ded RAID, also ein RAID-Ver­bund, der nicht alle Lauf­wer­ke ent­hält. In unse­rem Fall erzeu­gen wir aus  dem neu­en Lauf­werk ein degra­ded RAID mit nur einer Plat­te und fügen erst spä­ter das alte Lauf­werk zum RAID hin­zu. Kurz zusam­men­ge­fasst geht man so vor:

  1. Daten­si­che­rung prüfen
  2. Neue Plat­te ein­bau­en und partitionieren
  3. RAID erzeu­gen und File­sys­tem anlegen
  4. Daten kopie­ren
  5. Altes Lauf­werk zum neu­en RAID hinzufügen

Schritt 1: Daten­si­che­rung prüfen

Das mag tri­vi­al klin­gen, aber ein Tipp­feh­ler wäh­rend unse­rer Pro­ze­dur kann in Sekun­den­bruch­tei­len zum voll­stän­di­gen Daten­ver­lust füh­ren, wenn man zum Bei­spiel die Lauf­werks­be­zeich­nun­gen ver­wech­selt und das fal­sche Lauf­werk löscht. Also wirk­lich wich­tig: nicht nur eine Daten­si­che­rung haben, son­dern sich auch sicher sein, dass sie die voll­stän­di­gen Daten ent­hält und les­bar ist.

Schritt 2: Neue Plat­te ein­bau­en und partitionieren

Wie die Plat­te ein­ge­baut wer­den muss, hängt vom NAS-Gehäu­se ab. Hat man ein hot-plug-Sys­tem, kann man die Plat­te im lau­fen­den Betrieb hin­zu­fü­gen. Trotz­dem soll­te man, nach­dem die neue Plat­te ein­ge­baut ist, das NAS ein­mal neu boo­ten, denn mög­li­cher­wei­se wer­den die Lauf­werks­be­zeich­nun­gen durch eine geän­der­te Rei­hen­fol­ge der Lauf­wer­ke ver­än­dert. Ohne hot-plug muss man das NAS ohne­hin zum Ein­bau herunterfahren.

Hat man zwei­fels­frei fest­ge­stellt, wel­ches Lauf­werk das Neue ist, kann man es par­ti­tio­nie­ren. Zunächst prü­fen wir noch ein­mal, ob das neue Lauf­werk (hier: /dev/sda) auch wirk­lich leer ist:

# fdisk -l /dev/sda
Disk /dev/sda: 1,8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Die Aus­ga­be lis­tet uns Grö­ße und Orga­ni­sa­ti­on des Lauf­werks, soll­te aber noch kei­ne Par­ti­tio­nen anzeigen.

Die Par­ti­ti­on kann man per Mas­ter Boot Record (MBR) oder als GUID Par­ti­ti­on Table (GPT) ein­rich­ten. Der MBR ist ein Relikt aus DOS-Zei­ten, das die Par­ti­ti­ons­ta­bel­le im ers­ten Block des Lauf­werks spei­chert. Für die MBR-Vari­an­te gibt es eigent­lich nur zwei zwin­gen­de Gründe:

  1. Wenn man das Lauf­werk als Boot-Lauf­werk für Win­dows im Lega­cy BIOS Modus ver­wen­den will
  2. Wenn man sehr alte Hard­ware ver­wen­det, deren BIOS die GPT-Par­ti­tio­nie­rung nicht unterstützt

Da bei­des hier nicht zutrifft, wird die Par­ti­tio­nie­rung also mit dem moder­ne­ren GPT erle­digt. Es soll ledig­lich eine gro­ße Par­ti­ti­on erstellt wer­den, die das Lauf­werk voll­stän­dig belegt. fdisk erle­digt die­sen ein­fa­chen Job:

# fdisk /dev/sda

Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x12667a34.

Command (m for help): g
Created a new GPT disklabel (GUID: 4B985E31-4030-4400-ACCF-B7CA9F493E0D).

Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-3907029134, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-3907029134, default 3907029134):

Created a new partition 1 of type 'Linux filesystem' and of size 1,8 TiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

root@omv0:~# fdisk -l /dev/sda
Disk /dev/sda: 1,8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 4B985E31-4030-4400-ACCF-B7CA9F493E0D

Device     Start  End         Sectors     Size  Type
/dev/sda1  2048   3907029134  3907027087  1,8T  Linux filesystem

Die mini­ma­lis­ti­schen Ein-Zei­chen-Befeh­le von fdisk kann man sich mit m auf­lis­ten las­sen. g erzeugt die neue GPT-Par­ti­ti­on. Nimmt man jeweils die Stan­dard­wer­te an, wird die Linux Par­ti­ti­on 1 so ange­legt, dass sie den gesam­ten frei­en Platz ein­nimmt. Erst w schreibt die Ände­run­gen wirk­lich auf die Plat­te. Ein fdisk -l /dev/sda soll­te jetzt die eben ange­leg­te GPT-Par­ti­ti­on anzeigen.

Schritt 3: RAID erzeu­gen und File­sys­tem anlegen

Jetzt erzeu­gen wir mit mdadm unser neu­es RAID - zunächst nur mit der neu­en Plat­te, also im degra­ded Zustand. Die War­nung über die Eig­nung als boot-Device inter­es­siert uns nicht, da wir nicht von die­sem Lauf­werk boo­ten wollen.

# mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sda1
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Die Datei /proc/mdstat soll­te danach das neue RAID als akti­ve anzeigen.

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[1]
      1953382464 blocks super 1.2 [2/1] [_U]
      bitmap: 0/15 pages [0KB], 65536KB chunk

unused devices: <none>

Jetzt muss noch das Datei­sys­tem auf dem RAID ange­legt werden.

# mkfs.ext4 /dev/md0
mke2fs 1.44.2 (14-May-2018)
Creating filesystem with 488345616 4k blocks and 122093568 inodes
Filesystem UUID: 9c159e30-4c96-486a-9a0b-f37d8f519130
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

Ab sofort soll­te auch omv das RAID-Sys­tem unter Daten­spei­cherDatei­sys­te­me listen.

Nach dem moun­ten über die omv-Ober­flä­che (Zei­le /dev/md0 aus­wäh­len und Ein­bin­den kli­cken) ist auch die Grö­ße sichtbar.

Schritt 4: Daten kopieren

Bevor wir mit dem Kopie­ren der Daten star­ten, soll­ten wir dafür sor­gen, dass sie wäh­rend der Kopie nicht ver­än­dert wer­den. Dafür soll­ten alle Refe­ren­zen auf das alte Lauf­werk ent­fernt, das Lauf­werk aus­ge­hängt und von Hand an ande­rer Stel­le ein­ge­hängt werden.

Zunächst müs­sen alle Frei­ga­ben des Lauf­werks (nfs, smb/cifs, ftp etc.) gelöscht wer­den. Das geschieht in der omv-Ober­fä­che bei den ent­spre­chen­den Diensten.

Ist die Kon­fi­gu­ra­ti­on gespei­chert, soll­te bei Zugriffs­kon­trol­le →  Frei­ge­ge­be­ne Ord­ner bei allen Ord­nern des Lauf­werks unter Refe­ren­ziert ein Nein gelis­tet sein, ansons­ten exis­tie­ren noch ande­re Frei­ga­ben. Erst dann kön­nen die frei­ge­ge­be­nen Ord­ner ent­fernt wer­den. Dazu wählt man den jewei­li­gen Ord­ner aus und klickt auf Löschen. Wich­tig: nur den Ord­ner, nicht die Daten löschen!

Danach ist unter Daten­spei­cherDatei­sys­te­me auch für das alte Lauf­werk die Schalt­flä­che Aus­hän­gen frei­ge­ge­ben, die wir jetzt kli­cken können.

Auf der Kom­man­do­zei­le hän­gen wir das alte Lauf­werk dann unter /mnt wie­der ein.

# mkdir /mnt/alt
# mount /dev/sdb3 /mnt/alt

Zum Kopie­ren brau­chen wir noch den Namen des neu­en RAID-File­sys­tems, den man zum Bei­spiel mit mount|grep md0 herausbekommt.

# mount|grep md0
/dev/md0 on /srv/dev-disk-by-id-md-name-omv0-0 type ext4 (rw,noexec,relatime,jqfmt=vfsv0,usrjquota=aquota.user,grpjquota=aquota.group)

Schließ­lich kön­nen die Daten per rsync auf das neue RAID über­tra­gen wer­den - das wird je nach Grö­ße und Aus­las­tung des Lauf­werks eini­ge Zeit dauern.

# rsync -auxHAX /mnt/alt/ /srv/dev-disk-by-id-md-name-omv0-0

Nach feh­ler­frei­er Been­di­gung des Kopie­rens kann das alte Lauf­werk wie­der aus­ge­hängt werden.

# umount /mnt/alt

Wenn nötig, kann die Par­ti­ti­ons­ta­bel­le des alten Lauf­werks jetzt noch mit fdisk ange­passt werden.

An die­ser Stel­le ist es beson­ders wich­tig, sich eines funk­tio­nie­ren­den Back­ups sicher zu sein, denn dabei oder spä­tes­tens beim Ein­hän­gen in das RAID wird der Inhalt des alten Lauf­werks gelöscht.

Schritt 5: Altes Lauf­werk zum neu­en RAID hinzufügen

Das alte Lauf­werk wird schließ­lich mit mdadm zu unse­rem neu­en RAID hinzugefügt.

# mdadm /dev/md0 -a /dev/sdb1

Unter /proc/mdstat soll­te jetzt das RAID mit sei­nen bei­den Lauf­wer­ken ange­zeigt werden.

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb1[2](S) sda1[1]
1953382464 blocks super 1.2 [2/1] [_U]
bitmap: 15/15 pages [60KB], 65536KB chunk

unused devices: <none>

Sieht man jetzt in der omv-Ober­flä­che unter Daten­spei­cherRAID Ver­wal­tung nach, wird der RAID-Ver­bund zwar immer noch als degra­ded ange­zeigt, aber auch als reco­ve­ring mit dem ent­spre­chen­den Pro­zent­satz der Fer­tig­stel­lung. Das bedeu­tet, das jetzt der Inhalt des neu­en Lauf­werks auf das alte, eben zum RAID hin­zu­ge­füg­te Lauf­werk gespie­gelt, also kopiert wird.

Erst nach eini­gen Stun­den ist das RAID dann voll einsatzfähig.

Als letz­te Akti­on müs­sen jetzt über die omv-Ober­flä­che wie­der die vor­hin gelösch­ten Ord­ner, Frei­ga­ben und Nut­zer­pri­vi­le­gi­en ein­ge­rich­tet werden.

Ab sofort sind unse­re Daten ein gan­zes Stück siche­rer. Der Aus­fall eines Lauf­werks bedeu­tet dann kei­nen unmit­tel­ba­ren Daten­ver­lust mehr - natür­lich nur, wenn man den Aus­fall auch erkennt und das ent­spre­chen­de Lauf­werk so schnell wie mög­lich austauscht.


Quel­len:

Veröffentlicht am
Kategorisiert in NAS

3 Kommentare

  1. Vie­len Dank für die Anlei­tung. Ich bin per Zufall auf die­se Sei­te gesto­ßen und fra­ge mich, da ich sel­ber aktu­ell mei­nen ers­ten Home­ser­ver mit OMV, Next­cloud erstel­len möch­te, was Sinn macht mit einer Sys­tem-Fest­plat­te (SSD) und zwei Daten­fest­plat­ten (HDD).

    Es gibt hau­fen­wei­se Infor­ma­tio­nen und jeder will es bes­ser wis­sen. RAID1 wäre, so den­ke ich, die für mich evtl. ein­fachs­te Art und Wei­se die zwei HDDs mit dem NAS lau­fen zu lassen.

    Was hal­ten Sie von ZFS oder Snapraid und Uni­on­file­sys­tem oder ähn­li­ches? Ich sehe den Wald vor lau­ter Bäu­men nicht mehr.

    Viel­leicht ant­wo­ten Sie auf die­sen Kom­men­tar und kön­nen mir ein wenig in der Fin­dungs­su­che behilf­lich sein.

    1. Das kann man nicht so pau­schal beant­wor­ten. Es kommt immer auf das Ziel und das ver­füg­ba­re Know-How an.
      Linux-Spe­zia­lis­ten wer­den sicher von den Vor­tei­len spe­zi­el­ler Datei­sys­te­me wie ZFS oder Btrfs pro­fi­tie­ren und ihre rela­ti­ve Kom­ple­xi­tät beherr­schen kön­nen. Das läuft aber mei­nes Wis­sens alles kom­plett unter­halb von Open­me­diav­ault ab.
      Will man ein NAS vor­nehm­lich als Werk­zeug zum Spei­chern benut­zen, fährt man um eini­ges siche­rer, wenn man von den ein­ge­lau­fe­nen Wegen nicht all­zu weit abgeht. RAID und EXT sind bewährt und von daher sicher eine gute Wahl, wenn man nicht gute Grün­de hat, etwas ande­res zu nutzen.
      Ansons­ten lässt einem omv aber auch die Frei­hei­ten, unter der Ober­flä­che fast jede denk­ba­re Spe­zi­al­schrau­be zu drehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

20 + 16 =