Verschlüsseltes RAID1



  • Heute mal wieder was zum Ausprobieren.

    Hardware

    • 2 * 4TB HDD

    Software

    • Debian Buster 10

    Pakete installieren

    apt install cryptsetup
    apt install mdadm
    

    Installation

    Moment, wir brauchen noch einen Plan 🙂 Jede Platte wird mit je zwei Partitionen ausgestattet.

    • sdb1 raid_pool_1_1
    • sdb2 raid_pool_2_1
    • sdc1 raid_pool_1_2
    • sdc2 raid_pool_2_2

    Platten partitionieren

    root@frank-mankel:~# gdisk /dev/sdb
    GPT fdisk (gdisk) version 1.0.3
    
    Partition table scan:
      MBR: not present
      BSD: not present
      APM: not present
      GPT: not present
    
    Creating new GPT entries.
    
    Command (? for help): d
    No partitions
    
    Command (? for help): n
    Partition number (1-128, default 1): 1
    First sector (34-7814037134, default = 2048) or {+-}size{KMGTP}: 
    Last sector (2048-7814037134, default = 7814037134) or {+-}size{KMGTP}: 3907018567
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): 
    Changed type of partition to 'Linux filesystem'
    
    Command (? for help): n
    Partition number (2-128, default 2): 
    First sector (34-7814037134, default = 3907018752) or {+-}size{KMGTP}: 
    Last sector (3907018752-7814037134, default = 7814037134) or {+-}size{KMGTP}: 
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): 
    Changed type of partition to 'Linux filesystem'
    
    Command (? for help): w
    
    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!
    
    Do you want to proceed? (Y/N): Y
    OK; writing new GUID partition table (GPT) to /dev/sdb.
    The operation has completed successfully.
    

    Verschlüsseln

    cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdb1
    cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdb2
    cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdc1
    cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdc2
    

    Beispiel-Ausgabe

    root@frank-mankel:~# cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdb2
    
    WARNING!
    ========
    This will overwrite data on /dev/sdb2 irrevocably.
    
    Are you sure? (Type uppercase yes): YES
    Enter passphrase for /dev/sdb2: 
    Verify passphrase: 
    

    Entschlüsseln

    cryptsetup open /dev/sdb1 raid_pool_1_1
    

    Ok, was passiert hier? Wir müssen das Passwort eingeben, danach wird die HDD für das RAID vorbereitet.

    Disk /dev/mapper/raid_pool_1_1: 1.8 TiB, 2000375681024 bytes, 3906983752 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
    

    Der Rest

    cryptsetup open /dev/sdc1 raid_pool_1_2
    cryptsetup open /dev/sdb2 raid_pool_2_1
    cryptsetup open /dev/sdc2 raid_pool_2_2
    

    Raid anlegen

    mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/mapper/raid_pool_1_1 /dev/mapper/raid_pool_1_2 
    

    Danach gibt es das Device md0

    Disk /dev/md0: 1.8 TiB, 2000240377856 bytes, 3906719488 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
    

    Das andere

    mdadm --create /dev/md1 --auto md --level=1 --raid-devices=2 /dev/mapper/raid_pool_2_1 /dev/mapper/raid_pool_2_2
    

    und

    Disk /dev/md1: 1.8 TiB, 2000241360896 bytes, 3906721408 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
    

    Formatieren

    mkfs.ext4 /dev/md0
    mkfs.ext4 /dev/md1
    

    Danach sind beide Raids einsatzbereit. Hier schon gemountet.

    /dev/md0                        1.8T  626M  1.7T   1% /mnt/md0
    /dev/md1                        1.8T   77M  1.7T   1% /mnt/md1


  • Mir war dann gestern, nach einigen Neustarts aufgefallen, das die Raids den Status [1/2] hatten. Also nur eine HDD im Raid-Verbund. Ursache - unbekannt!

    Normalzustand

    /dev/mapper/raid_pool_1_1: UUID="7b7a5028-165a-6d71-d51a-671216e353ec" UUID_SUB="109b5184-0d3a-b26b-cd72-8239f0f6a56e" LABEL="frank-mankel:0" TYPE="linux_raid_member"
    /dev/md0: UUID="6744030a-4c14-4cbc-a626-7365aab80e22" TYPE="ext4"
    /dev/mapper/raid_pool_1_2: UUID="7b7a5028-165a-6d71-d51a-671216e353ec" UUID_SUB="6f8da3a7-e86f-f3bf-5602-de7dcad62aa0" LABEL="frank-mankel:0" TYPE="linux_raid_member"
    /dev/mapper/raid_pool_2_1: UUID="aa6daa4e-0964-4446-22f0-e6e3a65ea34a" UUID_SUB="ffd29fd9-84ca-1d64-2671-a0d3c417ee8c" LABEL="frank-mankel:1" TYPE="linux_raid_member"
    /dev/md1: UUID="a56404ef-4525-473d-a616-2fdf79c314f6" TYPE="ext4"
    /dev/mapper/raid_pool_2_2: UUID="aa6daa4e-0964-4446-22f0-e6e3a65ea34a" UUID_SUB="29c67ccb-9582-75e5-8345-c5589680e663" LABEL="frank-mankel:1" TYPE="linux_raid_member"
    

    Status anzeigen (hier korrekt)

    root@frank-mankel:~# cat /proc/mdstat
    Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
    md1 : active raid1 dm-25[1] dm-24[0]
          1953360704 blocks super 1.2 [2/2] [UU]
          bitmap: 0/15 pages [0KB], 65536KB chunk
    
    md0 : active raid1 dm-23[1] dm-22[0]
          1953359744 blocks super 1.2 [2/2] [UU]
          bitmap: 0/15 pages [0KB], 65536KB chunk
    
    unused devices: <none>
    

    Detaillierter Zustand

    root@frank-mankel:~# mdadm -D /dev/md0
       /dev/md0:
                  Version : 1.2
            Creation Time : Mon Aug 26 15:52:03 2019
               Raid Level : raid1
               Array Size : 1953359744 (1862.87 GiB 2000.24 GB)
            Used Dev Size : 1953359744 (1862.87 GiB 2000.24 GB)
             Raid Devices : 2
            Total Devices : 2
              Persistence : Superblock is persistent
       
            Intent Bitmap : Internal
       
              Update Time : Fri Aug 30 04:03:25 2019
                    State : clean 
           Active Devices : 2
          Working Devices : 2
           Failed Devices : 0
            Spare Devices : 0
       
       Consistency Policy : bitmap
       
                     Name : frank-mankel:0  (local to host frank-mankel)
                     UUID : 7b7a5028:165a6d71:d51a6712:16e353ec
                   Events : 55682
       
           Number   Major   Minor   RaidDevice State
              0     253       22        0      active sync   /dev/dm-22
              1     253       23        1      active sync   /dev/dm-23
    

    Problem

    Jetzt wird die ganze Sache kompliziert und man muss fürchterlich aufpassen, das nichts schief geht. Das Raid zeigt einem die UUID der noch enthaltenen Platte an. Somit muss man sich die andere raus suchen, siehe ganz oben.

    Annahme, vom Raid md0 fehlt das zweite Laufwerk. Dann machen wir

    mdadm --add /dev/md0 /dev/mapper/raid_pool_1_2
    

    Mein md0 besteht ja aus

    /dev/mapper/raid_pool_1_1
    /dev/mapper/raid_pool_1_2   
    

    Script

    Hier mein Script, was ich nach dem Starten des PCs ausführe. Das klappt auf meinem Proxmox perfekt, ich darf nur keine Einträge in der /etc/fstab haben und die eine Maschine, die eine Platte auf diesem Raid nutzt, erst später starten. Auf keinen Fall auf Autostart=1 stellen!

    Außerdem habe ich in dem Script auf

    /dev/disk/by-uuid/4dd45131-bf78-4a23-ad29-af1b24284ca0
    

    umgestellt. Die UUID findet ihr mit

    ls -lha /dev/disk/by-uuid
    

    Ausgabe

    lrwxrwxrwx 1 root root  10 Aug 29 13:24 4dd45131-bf78-4a23-ad29-af1b24284ca0 -> ../../sdc1
    lrwxrwxrwx 1 root root  10 Aug 29 13:24 a8234184-3c6a-44d1-a6a3-d06d0baedfcc -> ../../sdc2
    lrwxrwxrwx 1 root root  10 Aug 29 13:24 857a73ca-199f-4e04-9651-088963e29fae -> ../../sdd1
    lrwxrwxrwx 1 root root  10 Aug 29 13:25 ed78c5ce-5bc9-49aa-9bc7-000771610940 -> ../../sdd2
    

    umgestellt. Das macht die Sache robuster, wenn man mal HDDs ansteckt usw. Weil dabei können sich ja mal gerne die Laufwerksbezeichnungen ändern. Die UUID bleibt aber immer gleich.

    #Passwort abfragen
    echo "Passwort eingeben!"
    read -s password
    echo "Bitte warten......"
    
    
    ## Passwörter abfragen
    echo -n $password | cryptsetup open /dev/disk/by-uuid/4dd45131-bf78-4a23-ad29-af1b24284ca0 raid_pool_1_1 -d -
    echo -n $password | cryptsetup open /dev/disk/by-uuid/857a73ca-199f-4e04-9651-088963e29fae raid_pool_1_2 -d -
    echo -n $password | cryptsetup open /dev/disk/by-uuid/a8234184-3c6a-44d1-a6a3-d06d0baedfcc raid_pool_2_1 -d -
    echo -n $password | cryptsetup open /dev/disk/by-uuid/ed78c5ce-5bc9-49aa-9bc7-000771610940 raid_pool_2_2 -d -
    
    ## Raid 0&1 mounten
    mount /dev/md0 /mnt/md0
    mount /dev/md1 /mnt/md1
    
    echo "Laufwerke erfolgreich gemountet!"
    

    Ich hoffe jetzt, das ich mich damit erst mal nicht mehr beschäftigen muss. Und immer nur machen, wenn man ganz viel Zeit hat 🙂

    Damit es immer so aussieht 🙂

    fcdf8c19-31e3-4933-a452-847f4415c750-grafik.png


Log in to reply
 

Diese Artikel könnten Dich auch interessieren.