Kategorien
NAS

Vom Einzellaufwerk 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 Abhil­fe.

Das Szenario

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 spie­geln.

Open­me­diavault 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ück­spie­len.

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 ein­spa­ren.

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 par­ti­tio­nie­ren
  3. RAID erzeu­gen und File­sys­tem anle­gen
  4. Daten kopie­ren
  5. Altes Lauf­werk zum neu­en RAID hin­zu­fü­gen

Schritt 1: Datensicherung 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 Platte einbauen 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 her­un­ter­fah­ren.

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 anzei­gen.

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ün­de:

  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 unter­stü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 anzei­gen.

Schritt 3: RAID erzeugen und Filesystem 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 wol­len.

# 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 anzei­gen.

# 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 wer­den.

# 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 lis­ten.

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 sicht­bar.

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 wer­den.

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 Diens­ten.

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ön­nen.

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 her­aus­be­kommt.

# 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 dau­ern.

# 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 wer­den.

# 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 wer­den.

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 Laufwerk zum neuen RAID hinzufügen

Das alte Lauf­werk wird schließ­lich mit mdadm zu unse­rem neu­en RAID hin­zu­ge­fü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 wer­den.

# 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­vering 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 ein­satz­fä­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 wer­den.

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 aus­tauscht.


Quel­len:

1 Anwort auf „Vom Einzellaufwerk zum <span class="caps">RAID1</span>“

Schreibe einen Kommentar

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