RAI­D1-NAS-Lauf­werk nach­träg­lich verschlüsseln

In mei­nem Open­me­diav­ault-NAS läuft schon seit eini­ger Zeit ein RAI­D1-Array aus zwei 2TB-Plat­ten. Dar­auf lan­den alle Back­ups aus mei­nem EDV-Zoo. Als Schutz gegen neu­gie­ri­ge Die­be soll der Inhalt nun nach­träg­lich ver­schlüs­selt werden.

Lei­der geht das nicht ein­fach auf Knopf­druck. Ein­zi­ger gang­ba­rer Weg scheint fol­gen­der zu sein:

Aus­gangs­punkt ist ein mit der Open­me­diav­ault-GUI erzeug­tes unver­schlüs­sel­tes RAID1 aus den zwei Plat­ten sda und sdc. Für das Back­up steht tem­po­rär eine wei­te­re aus­rei­chend gro­ße Plat­te zur Verfügung.

  1. Back­up erstel­len (!)
    rsync -axHAXW --info=progress2 <altes RAID1> <Backup-Disk>
  2. Aus dem bestehen­den RAID1 eine Plat­te ent­fer­nen und neu for­ma­tie­ren
    mdadm --fail /dev/md0 /dev/sdc1
    mdadm --remove /dev/md0 /dev/sdc1
    fdisk /dev/sd
    c
    g - crea­te a new emp­ty GPT par­ti­ti­on table
    n - add a new par­ti­ti­on (Grö­ße ca. 100MB klei­ner als maxi­mal mög­lich)
    w - wri­te table to disk and exit
  3. Auf die­ser Par­ti­ti­on ein neu­es RAID1 mit nur einer Plat­te anle­gen
    mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdc1
  4. Das neue RAID1 ver­schlüs­seln, ein File­sys­tem anle­gen und moun­ten
    cryptsetup -v luksFormat /dev/md1 (Pass­wort ein­ge­ben)
    mkfs.ext4 /dev/mapper/md1-crypt
    mkdir /mnt/raid1
    mount -t ext4 /dev/mapper/md1-crypt /mnt/raid1
  5. Die Daten aus der Siche­rung auf die ver­schlüs­sel­te Par­ti­ti­on kopie­ren
    rsync -axHAXW --info=progress2 <Backup-Disk> /mnt/raid1
    umount /mnt/raid1
    umount <Backup-Disk>
  6. In der Open­me­diav­ault-GUI das neue, ver­schlüs­sel­te RAID1 moun­ten und alle Ver­wei­se vom alten RAID1 auf das neue umlenken
  7. In der GUI das alte RAID unmounten
  8. Das RAID und von der alten Plat­te ent­fer­nen
    mdadm --stop /dev/md0
    mdadm --remove /dev/md0
    mdadm --zero-superblock /dev/sda1
  9. Auf der frei­en Plat­te eine neue Par­ti­ti­on anle­gen und for­ma­tie­ren
    fdisk /dev/sda
    g - crea­te a new emp­ty GPT par­ti­ti­on table
    n - add a new par­ti­ti­on (glei­che Grö­ße wie bei ers­ter Plat­te)
    w - wri­te table to disk and exit
  10. Die Par­ti­ti­on zum neu­en RAID1 hin­zu­fü­gen wie­der­her­stel­len las­sen
    mdadm --add-spare /dev/md1 /dev/sda1
    mdadm --readwrite /dev/md1

    In der GUI und mit cat /proc/mdstat kann man den Fort­schritt der Syn­chro­ni­sa­ti­on beobachten

Nach Abar­bei­tung die­ses 10-Punk­te-Plans brauch­te das NAS noch gute 5 Stun­den für die Synchronisation.

Wenn man mit dem erhöh­ten Risi­ko des Daten­ver­lusts leben kann, z.B. weil ohne­hin wei­te­re aktu­el­le (!) Back­ups exis­tie­ren, kann man sich auch das kopei­ren in Schritt 1 spa­ren und in Schritt 5 die Daten direkt vom degra­dier­ten alten RAID1 auf das Neue kopie­ren. Das spart eini­ge Stun­den Zeit ein.


Nach­trag

Wird das ver­schlüs­sel­te RAID1 wie oben vor­be­rei­tet, bleibt es im Open­me­diav­ault nach dem Boo­ten ver­schlüs­selt und kann so nicht auto­ma­tisch gemoun­tet wer­den. Es wäre also immer Hand­ar­beit nötig, bevor das RAID benutz­bar wäre.

Zum auto­ma­ti­schen Ent­schlüs­seln gibt es meh­re­re Lösun­gen mit Pass­wor­ten oder key-files auf USB-Sticks oder remo­te gemoun­te­ten Lauf­wer­ken. Ich habe das Script von von The­Fax [3] etwas ange­passt in Betrieb. Es ent­schlüs­selt das RAID-Lauf­werk zuver­läs­sig - aller­dings bleibt es in der Ursprungs­fas­sung am Ende umge­moun­tet. Irgend­wann (nach Time­out?) moun­tet es Open­me­diav­ault dann zwar doch noch, wenn man es aber sofort nut­zen will, hilft fol­gen­de Zei­le am Ende des Scripts:

# mount the unlocked file systems
mount /dev/mapper/$DEVICENAME-crypt >>$LOGFILE 2>&1

Trotz­dem kommt es beim Boo­ten noch zu einer Ver­zö­ge­rung, weil Open­me­diav­ault das File­sys­tem in die /etc/fstab ein­trägt und das Sys­tem beim Boo­ten auf die Bereit­schaft des Lauf­werks war­tet. Das es zu dem Zeit­punkt noch nicht ent­sperrt wer­den kann, läuft das Script in ein Time­out, das stan­dard­mä­ßig 90 Sekun­den beträgt.

Zur Abhil­fe wird in der fstab zu den Lauf­werks­op­tio­nen noauto hin­zu­ge­fügt, um das auto-moun­ten zu ver­hin­dern, und x-systemd.device-timeout=1, um den unver­meid­li­chen Time­out beim Boo­ten zu ver­kür­zen. Die Zei­le für das RAID sieht dann etwa so aus:

/dev/disk/by-uuid/... /srv/dev-disk-by-uuid-... ext4 defaults,noauto,nofail,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl,x-systemd.device-timeout=1	0 2

Die /etc/fstab wür­de aller­dings bei Ände­run­gen von omv wie­der über­schrie­ben wer­den, daher müs­sen die Anga­ben in die Lauf­werks­op­tio­nen in /etc/openmediavault/config.xml ein­ge­tra­gen und über­nom­men werden:

    ...
    <fstab>
      ...
      <mntent>
        <uuid>992c8734-c019-49f5-9652-4d89201f5439</uuid>
        <fsname>/dev/disk/by-uuid/e62f7869-7f16-4619-8a9e-4f91014a4c4b</fsname>
        <dir>/srv/dev-disk-by-uuid-e62f7869-7f16-4619-8a9e-4f91014a4c4b</dir>
        <type>ext4</type>
        <opts>defaults,noauto,x-systemd.device-timeout=1,nofail,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl</opts>
        <freq>0</freq>
        <passno>2</passno>
        <hidden>0</hidden>
        <usagewarnthreshold>85</usagewarnthreshold>
        <comment>2TB RAID LUKS EXT4</comment>
      </mntent>
    </fstab>
    ...

Quel­len:

  1. https://​blog​.getreu​.net/​_​d​o​w​n​l​o​a​d​s​/​e​n​c​r​y​p​t​e​d​-​r​a​i​d​1​-​n​a​s​.​pdf
  2. https://​www​.red​dit​.com/​r​/​O​p​e​n​M​e​d​i​a​V​a​u​l​t​/​c​o​m​m​e​n​t​s​/​n​e​o​8​c​z​/​c​o​n​v​e​r​t​_​u​s​b​_​r​a​i​d​1​_​a​r​r​a​y​_​t​o​_​r​s​y​n​c​d​_​d​i​s​k​s​_​r​a​s​p​b​e​r​ry/
  3. https://​git​hub​.com/​T​h​e​F​a​x​/​A​u​t​o​m​o​u​n​t​_​L​U​K​S​_​o​p​e​n​m​e​d​i​a​v​a​ult

Schreibe einen Kommentar

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

neunzehn − 16 =