Festplatte durch größere ersetzen bei vorhandenem Raid 1 und verschlüsseltem System (Crypt)

Hast Du Probleme mit Hardware, die durch die anderen Foren nicht abgedeckt werden? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
speedy-22
Beiträge: 21
Registriert: 23.10.2003 12:24:28

Festplatte durch größere ersetzen bei vorhandenem Raid 1 und verschlüsseltem System (Crypt)

Beitrag von speedy-22 » 13.12.2017 10:34:07

Hallo zusammen!

Ich hab da seit langem mal wieder ein Problem. Vor ein paar Jahren hab ich mir meinen neuen Debianserver (aktuell Stretch) aufgesetzt. Systemplatte und Datenplatte mit Raid1 gespiegelt und darauf ein vollverschlüsseltes System (außer /boot) inkl. LVM.

aktuell

2x 256GB SSD (RAID 1)
/dev/md0 -> /boot
/dev/md1 -> Crypt -> LVM -> /,/usr,/var usw. und eine Volume für ein paar virtuelle Maschinen

2x 2TB HD (RAID 1)
/dev/md2 -> Crypt -> LVM -> /home

Da mir langsam der Platz knapp wird, wollte ich die Festplatten gegen größere Festplatten austauschen.
Den Austausch hab ich in etwa nach dieser Anleitung vorgenommen: https://wiki.hetzner.de/index.php/Festp ... tware-RAID

Im Groben: auszutauschende Festplatte im Raid auf fail gesetzt und removed, Festplatte ausgetauscht, von der noch im Raid vorhandenen Festplatte per sfdisk die Partitionstabelle auf die neue Festplatte kopiert und per mdadm -add die Partitionen wieder ins Raid eingefügt, Sync abgewartet, Raid 1 wieder i.O.

Nun zum Problem, wenn ich jetzt aus dem Raid 1 die kleinere Festplatte entferne (nach Shutdown abgesteckt) und wieder von der neuen großen Festplatte booten will, kommt zwar noch Grub, aber danach findet er das verschlüsselte Device nicht, so dass ich das Passwort dafür eingeben könnte. Nachdem er das LVM-Volume für das System nicht findet und eigentlich das Passwort abfragt, kommt stattdessen immer wieder die Meldung:

Code: Alles auswählen

Reading all physical volumes. This may take a while ...
Wenn ich weiter warte kommt dann diese Fehlermeldung:

Code: Alles auswählen

ALERT! /dev/disk/by-uuid/************* does not exist.
Mit einem unverschlüsselten System hab ich sowas schon mehrmals erfolgreich gemacht, nur hier klappt es jetzt nicht. Muss ich Grub oder irgendwas anderes nach dem Festplattentausch noch anpassen, damit er auch auf der neuen Festplatte die verschlüsselte Partition findet?

Gruß

speedy

Edit:
Wenn die alte kleine SSD und die große neue SSD dran sind, bootet er ganz normal. Das Raid sieht wie gesagt ok aus.

Code: Alles auswählen

# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md2 : active raid1 sdd1[3] sdc1[2]
      1953382400 blocks super 1.2 [2/2] [UU]
      bitmap: 0/15 pages [0KB], 65536KB chunk

md1 : active raid1 sda5[0] sdb5[2]
      249676800 blocks super 1.2 [2/2] [UU]
      bitmap: 2/2 pages [8KB], 65536KB chunk

md0 : active raid1 sda1[3] sdb1[2]
      248640 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
Allerdings sagt er mir, dass die zweite Partition auf der großen SSD kein LUKS device ist. :? Bei der kleinen SSD /dev/sda5 werden mir die header informations angezeigt.

Code: Alles auswählen

# cryptsetup -v luksDump /dev/sdb5
Device /dev/sdb5 is not a valid LUKS device.
Command failed with code 22: Invalid argument

albundy
Beiträge: 83
Registriert: 26.08.2009 19:49:12

Re: Festplatte durch größere ersetzen bei vorhandenem Raid 1 und verschlüsseltem System (Crypt)

Beitrag von albundy » 13.12.2017 23:34:58

Hi,

ich hoffe ich habe das alles auch richtig verstanden.
Allerdings sagt er mir, dass die zweite Partition auf der großen SSD kein LUKS device ist. :? Bei der kleinen SSD /dev/sda5 werden mir die header informations angezeigt.

Code: Alles auswählen

# cryptsetup -v luksDump /dev/sdb5
Device /dev/sdb5 is not a valid LUKS device.
Command failed with code 22: Invalid argument
Bin da jetzt nicht der Experte bis ins Detail, aber m.M.n. sollte es, so wie die Skizze ist, auch auf /dev/sda5 diesen Fehler geben, denn Du verschlüsselst ja das /dev/md1 und nicht die einzelne Partition auf der SSD.
Ich habe das ganze bei mir in einem Setup ähnlich wie dein /dev/md2, nur halt das /home und keine mit boot-Devices. Da habe ich genau das machen müssen. Also das RAID vergrößern durch neue, größere Platten, dann das LVM und das Filesystem vergrößern müssen.

Der Aufbau ist dieser:

Code: Alles auswählen

NAME                             TYPE  MOUNTPOINT
sda                              disk  
├─sda1                           part  /
├─sda2                           part  
└─sda5                           part  [SWAP]
sdb                              disk  
└─sdb1                           part  
  └─md0                          raid1 
    └─md0-crypt                  crypt 
      └─vmg--md0--crypt-lv--md0  lvm   /home
sdc                              disk  
└─sdc1                           part  
  └─md0                          raid1 
    └─md0-crypt                  crypt 
      └─vmg--md0--crypt-lv--md0  lvm   /home
Ich liste dir hiermal die Shell-Befehle wie es bei mir funktioniert hat:

Code: Alles auswählen

cryptsetup luksDump /dev/md0 

# Platten ersetzen, 2x 1TB durch 2x 2TB HDDs, resync natürlich abwarten
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm -r /dev/sdb1
sync;shutdown -h now;exit
fdisk /dev/sdb
mdadm -a /dev/md0 /dev/sdb1
mdadm /dev/md0 -f /dev/sdc1 -r /dev/sdc1
sync;shutdown -h now;exit
fdisk /dev/sdc
mdadm -a /dev/md0 /dev/sdc1
mdadm --detail /dev/md0

# RAID vergrößern
mdadm --grow /dev/md0 -z max
mdadm --detail /dev/md0 | grep -i -e 'Array Size' -i -e 'Dev Size'
cryptsetup status md0-crypt
reboot

# Kontrolle
cryptsetup status md0-crypt 
cat /proc/mdstat 

# PV, LV und Dateisystem vergrößern.
pvresize /dev/mapper/md0-crypt
lvresize -l+100%FREE /dev/vmg-md0-crypt/lv-md0
resize2fs /dev/mapper/vmg--md0--crypt-lv--md0 
reboot
#  Abschließende Kontrolle
cat /proc/mdstat 
lsblk -f
df -Th
Das ist auch sehr interessant, ist zwar ArchLinux, aber ggf. lehrreich:
https://www.youtube.com/watch?v=4ke3cstVjJg

Mehr kann ich dazu nicht beitragen. Das alles natürlich nicht ohne Backup usw. usf.
Vielleicht gibt es dir einen Wink in die richtige Richtung.

Benutzeravatar
speedy-22
Beiträge: 21
Registriert: 23.10.2003 12:24:28

Re: Festplatte durch größere ersetzen bei vorhandenem Raid 1 und verschlüsseltem System (Crypt)

Beitrag von speedy-22 » 15.12.2017 18:06:36

Hi albundy,

Du hast das richtig verstanden. Beim /dev/md2 ist es auch so, dass ich nur von /dev/md2 die header informations angezeigt bekomme und auch da klappt der Tausch bei /dev/sdd von der 2 TB auf 4 TB nicht so, dass ich danach /dev/sdc entfernen kann und alles läuft. Hab es jetzt auch nochmal mit allen Originalplatten probiert. Mit /dev/sda und /dev/sdc fährt er normal hoch. Wenn ich aber eine dieser beiden Platten rausnehme und nur noch /dev/sdb und/oder /dev/sdd vorhanden ist, bootet er entweder nicht komplett, weil er /dev/md1 nicht findet oder ich habe kein /home, da er /dev/md2 nicht findet. Scheinbar läuft da schon länger was nicht richtig. Bei der Erstinstallation hatte ich das soweit ich weiß mal mit dem Festplattenausfall getestet. :?

Den Tausch hab ich genau nach Deiner Anleitung gemacht (im Prinzip ne Kurzfassung von der Hetzner-Anleitung). Nur komm ich ja leider nicht bis zum vergrößern des Raid usw. Ich teste das mal in ner virtuellen Maschine und lass den Server erstmal nur mit 1x SSD und 1 x HDD laufen. Backup der Daten hatte ich vorher schon per Backuppc und hab jetzt noch /dev/sda u. /dev/sdc auf eine der jeweils größeren Platten geclont. Bevor der erste Tausch und Sync nicht einwandfrei klappt, brauch ich diese ja noch nicht.

Danke auch für den Video-Tipp. Wird dort sehr gut erklärt.

Gruß

speedy

Benutzeravatar
speedy-22
Beiträge: 21
Registriert: 23.10.2003 12:24:28

Re: Festplatte durch größere ersetzen bei vorhandenem Raid 1 und verschlüsseltem System (Crypt)

Beitrag von speedy-22 » 18.12.2017 12:17:56

Ich hab das ganze jetzt in einer virtuellen Maschine getestet und habe dort das selbe Problem.

Das aktuelle Debian 9.3 habe ich per Netinstall installiert und dabei die Festplatten manuell partitioniert, Raid, die Verschlüsselung und LVM konfiguriert. Nach der Installation hab ich noch Grub auf /dev/sdb installiert, damit er auch von dieser Festplatte starten könnte.

Code: Alles auswählen

# grub-install /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.

Code: Alles auswählen

# fdisk -l /dev/sda
Disk /dev/sda: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc121a9b5

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       2048   999423   997376  487M fd Linux raid autodetect
/dev/sda2       1001470 16775167 15773698  7.5G  5 Extended
/dev/sda5       1001472 16775167 15773696  7.5G fd Linux raid autodetect


# fdisk -l /dev/sdb
Disk /dev/sdb: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7f8a45cc

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sdb1  *       2048   999423   997376  487M fd Linux raid autodetect
/dev/sdb2       1001470 16775167 15773698  7.5G  5 Extended
/dev/sdb5       1001472 16775167 15773696  7.5G fd Linux raid autodetect


# fdisk -l /dev/sdc
Disk /dev/sdc: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2552611d

Device     Boot Start     End Sectors  Size Id Type
/dev/sdc1        2048 2095103 2093056 1022M fd Linux raid autodetect

# fdisk -l /dev/sdd
Disk /dev/sdd: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x65268da0

Device     Boot Start     End Sectors  Size Id Type
/dev/sdd1        2048 2095103 2093056 1022M fd Linux raid autodetect

Code: Alles auswählen

# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md2 : active raid1 sdc1[2] sdd1[1]
      1045952 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sdb1[1] sda1[2]
      498368 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sdb5[1] sda5[2]
      7882752 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

Code: Alles auswählen

# lsblk
NAME                MAJ:MIN RM    SIZE RO TYPE  MOUNTPOINT
sda                   8:0    0      8G  0 disk  
├─sda1                8:1    0    487M  0 part  
│ └─md0               9:0    0  486.7M  0 raid1 /boot
├─sda2                8:2    0      1K  0 part  
└─sda5                8:5    0    7.5G  0 part  
  └─md1               9:1    0    7.5G  0 raid1 
    └─md1_crypt     253:0    0    7.5G  0 crypt 
      ├─system-tmp  253:1    0    380M  0 lvm   /tmp
      ├─system-root 253:2    0    488M  0 lvm   /
      ├─system-swap 253:3    0    976M  0 lvm   [SWAP]
      ├─system-usr  253:4    0    2.9G  0 lvm   /usr
      └─system-var  253:5    0    2.9G  0 lvm   /var
sdb                   8:16   0      8G  0 disk  
├─sdb1                8:17   0    487M  0 part  
│ └─md0               9:0    0  486.7M  0 raid1 /boot
├─sdb2                8:18   0      1K  0 part  
└─sdb5                8:21   0    7.5G  0 part  
  └─md1               9:1    0    7.5G  0 raid1 
    └─md1_crypt     253:0    0    7.5G  0 crypt 
      ├─system-tmp  253:1    0    380M  0 lvm   /tmp
      ├─system-root 253:2    0    488M  0 lvm   /
      ├─system-swap 253:3    0    976M  0 lvm   [SWAP]
      ├─system-usr  253:4    0    2.9G  0 lvm   /usr
      └─system-var  253:5    0    2.9G  0 lvm   /var
sdc                   8:32   0      1G  0 disk  
└─sdc1                8:33   0   1022M  0 part  
  └─md2               9:2    0 1021.4M  0 raid1 
    └─md2_crypt     253:6    0 1019.4M  0 crypt
      └─home-home   253:7    0   1016M  0 lvm   /home
sdd                   8:48   0      1G  0 disk  
└─sdd1                8:49   0   1022M  0 part  
  └─md2               9:2    0 1021.4M  0 raid1 
    └─md2_crypt     253:6    0 1019.4M  0 crypt 
      └─home-home   253:7    0   1016M  0 lvm   /home
sr0                  11:0    1   1024M  0 rom

Code: Alles auswählen

# blkid 
/dev/mapper/md1_crypt: UUID="MToMTm-TOMm-dMfy-g9NL-rqg0-6iAS-xyknpN" TYPE="LVM2_member"
/dev/mapper/system-root: LABEL="/" UUID="56d150d0-7f1a-4233-8dee-a8754535b7b3" TYPE="ext4"
/dev/sda1: UUID="507f5ac6-3e8a-44d2-a572-cbab60a39a5c" UUID_SUB="58aab6b7-3eaf-7d07-b432-9f36e0ec02d0" LABEL="debian-ssd-hdd:0" TYPE="linux_raid_member" PARTUUID="c121a9b5-01"
/dev/sda5: UUID="b4719432-fafa-b74d-7f2d-b3775afa97e7" UUID_SUB="89c647a8-1d1e-662b-8194-883245dc3e06" LABEL="debian-ssd-hdd:1" TYPE="linux_raid_member" PARTUUID="c121a9b5-05"
/dev/sdb1: UUID="507f5ac6-3e8a-44d2-a572-cbab60a39a5c" UUID_SUB="b9b7b7ee-2546-6e41-ceee-cb3f7bf9a695" LABEL="debian-ssd-hdd:0" TYPE="linux_raid_member" PARTUUID="7f8a45cc-01"
/dev/sdb5: UUID="b4719432-fafa-b74d-7f2d-b3775afa97e7" UUID_SUB="ffcd1ae1-ec4b-0b1d-ca50-1d4f257acc45" LABEL="debian-ssd-hdd:1" TYPE="linux_raid_member" PARTUUID="7f8a45cc-05"
/dev/sdc1: UUID="6dbb319d-56ae-fdf7-ea81-d364cf2f724f" UUID_SUB="75727319-3bb5-be78-ff20-364c795eb487" LABEL="debian-ssd-hdd:2" TYPE="linux_raid_member" PARTUUID="2552611d-01"
/dev/sdd1: UUID="6dbb319d-56ae-fdf7-ea81-d364cf2f724f" UUID_SUB="1223b383-6bbd-4365-8512-671f70ad6095" LABEL="debian-ssd-hdd:2" TYPE="linux_raid_member" PARTUUID="65268da0-01"
/dev/md1: UUID="9750289c-e4d4-44f3-84a8-7989421af2f5" TYPE="crypto_LUKS"
/dev/md0: LABEL="/boot" UUID="ab6d855a-fb29-4942-a2ea-fe06012d55b4" TYPE="ext4"
/dev/md2: UUID="226f4005-31b2-486d-b697-5289e50f4e56" TYPE="crypto_LUKS"
/dev/mapper/system-tmp: LABEL="/tmp" UUID="c4c6f888-5822-4a15-a2ac-be5c0b7b0f55" TYPE="ext4"
/dev/mapper/system-swap: UUID="02d3fcea-7fd5-40c7-9631-d48da64cfdc7" TYPE="swap"
/dev/mapper/system-usr: LABEL="/usr" UUID="43a366a2-32fb-4943-860b-4a5ec550cfd7" TYPE="ext4"
/dev/mapper/system-var: LABEL="/var" UUID="cbdb2f01-46c1-4546-8da0-12bb5e9bba62" TYPE="ext4"
/dev/mapper/md2_crypt: UUID="DndWi1-jM88-brNK-2Lyw-WDlq-lx41-hHHJFg" TYPE="LVM2_member"
/dev/mapper/home-home: LABEL="/home" UUID="c8420416-442a-4adb-b2c7-723dea4b025c" TYPE="ext4"

Zum Test hab ich dann mal die Festplatte /dev/sdc entfernt. Beim Start lande ich dann nach einiger Zeit im "emergency mode", weil er /dev/md2 nicht findet. Per Rootpasswort kann ich mich einloggen und finde dann folgendes vor:

Code: Alles auswählen

# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdb1[1] sda1[2]
      498368 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sdb5[1] sda5[2]
      7882752 blocks super 1.2 [2/2] [UU]

md2 : inactive raid1 sdc1[1] (S)
      1046000 blocks super 1.2
            
unused devices: <none>
Wenn ich dann per "mdadm --manage /dev/md2 --run" das Raid aktiviere, kommt sogar die Abfrage des Passwort für md2_crypt, aber danach bleibt er einfach hängen.

Hat noch jemand eine Idee wo es hier klemmt oder ob ich noch irgendwas konfigurieren muss, damit ein Festplattenausfall nicht zum Komplettausfall wird.

Danke und Gruß

speedy

Benutzeravatar
speedy-22
Beiträge: 21
Registriert: 23.10.2003 12:24:28

Re: Festplatte durch größere ersetzen bei vorhandenem Raid 1 und verschlüsseltem System (Crypt)

Beitrag von speedy-22 » 19.12.2017 10:16:34

Ich glaub, dass hat gar nicht mal was mit der Verschlüsselung zu tun, sondern mit mdadm. Siehe https://bugs.debian.org/cgi-bin/bugrepo ... bug=781172 Wobei das laut dem Eintrag dort mit Version 3.4-2 gefixt sein soll und ich hab bei Debian 9.3 Stretch ja schon mdadm 3.4-4. :?
Wenn ich bei laufender VM /dev/sda entferne und dann einen Reboot mache, klappt der Boot einwandfrei (vorher hatte ich dies bei der VM und auch bei meinem echten Server, erst nach dem herunterfahren gemacht). Dann werde ich dies mal so mit meinem echten Server probieren.

Benutzeravatar
speedy-22
Beiträge: 21
Registriert: 23.10.2003 12:24:28

Re: Festplatte durch größere ersetzen bei vorhandenem Raid 1 und verschlüsseltem System (Crypt)

Beitrag von speedy-22 » 22.12.2017 21:13:33

Mein Festplattentausch war jetzt erfolgreich. Mein Fehler war, dass ich vor dem zweiten Festplattentausch bzw. Ausfalltest bei der SSD /dev/sda1, /dev/sda5 und bei der HDD /dev/sdc1 im RAID nicht auf --fail u. --remove gesetzt hatte, sondern nach dem shutdown einfach so die Festplatten entfernt hab. Somit hab ich jetzt wieder genug Platz und der Server läuft weiter prima wie bisher. :D

Schöne Weihnachten und bis zum nächsten Problem. :wink:

Gruß

speedy

Antworten