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
-
-
Debian Bookworm 12.9 released
Verschoben Linux -
-
-
-
-
-