Du bist aktuell auf der Suche nach einem (virtuellen) Server? Ich bin seit Jahren von netcup begeistert und hätte da ein paar Gutscheine.
Bei meinen externen Proxmox-Servern muss ich mich um Festplattenredundanz nicht kümmern. Bei einem Hoster (bei mir immer noch netcup) laufen die (virtuellen) Server selbstverständlich gründsätzlich auf einem ausfallsicheren RAID System.
Backups hat man natürlich schon auch, trotzdem fällt eine Platte/SSD immer dann aus, wenn das letzte Backup schon zu lange her ist. Und auch 2 Stunden sind manchmal zu lange. Von daher halte ich in jedem Server gründsätzlich den Massenspeicher redundant. Hardware RAID braucht man für Zuhause jetzt nicht unbedingt, Intel SoC Mainboards mit einem Hardware RAID Controller direkt auf dem Board habe ich jetzt noch nicht gesehen, eine PCIe Karte würde natürlich auch noch gehen, aber ich habe es ja auch gerne günstig und meine, Software RAID ist für diesen Zweck völlig ausreichend und in Debian ja auch schon vorhanden (MDRAID).
Der Proxmox ISO-Installer bietet auch schon von Haus aus Unterstützung für Software RAID, aber leider nur mit ZFS – und leider braucht ZFS ein bisschen zuviel RAM (bei meinem System mit 8 GB Hauptspeicher waren das ca. 1,5 GB Overhead). Wie aber schon in Proxmox voll-verschlüsselt beschrieben, kann man Proxmox aber ja recht einfach auf ein stink normales Debian bügeln, als machen wir das:
Folgendes Szenario geht von einer Maschine mit zwei Platten aus, aus denen ich ein RAID1 machen wollte.
1. Debian Installation
Ich nehme die Netinst-ISO und folge dem grafischen Installer erst mal bis es an die Festplattenpartitionierung geht, dort gibt es dann einiges zu beachten, was nachfolgend beschrieben ist.
1.1. Beide Platten initialisieren und Partitionen erstellen
Wir benötigen eine eigene Boot-Partition (die nicht verschlüsselt wird) und eine große für den Rest (die natürlich verschlüsselt wird). Kann man auch anders/feiner aufteilen, mir reicht das aber meistens so.
Weil Bilder oft besser sind, habe ich das mal in einem kurzen Screencast beschrieben:
Update 2024: Für die Boot Partition besser 1024 MB (statt 512 MB wie im Video) als Größe wählen + für UEFI-Systeme eine 100 MB Partition am Anfang erstellen (beide Platten, wegen Redundanz siehe Punkt 1.7 unten) und die erste (auf der „primären Platte“) entsprechend mounten („Use as EFI System Partition“).
1.2. (MD)RAID(1) erstellen für beide Partitionen
Als nächstes erzeugen wir über jeweils beide Partitionen ein RAID1 Array.
1.3. Bootpartition erstellen und Datenpartition verschlüsseln
Nun haben wir zwei MDRAID Block Devices, mit denen geht es weiter. Auf dem ersten Array erzeugen wir die Boot-Partition, das zweite wird mit LUKS verschlüsselt.
1.4. LVM Volume Group und Logical Volumes für SWAP und den Rest erstellen
Über das zweite, größere, Array, legen wir nun noch den LVM. Anschließend erzeugen wir eine Partition (bzw. ein Logical Volume) für SWAP. Über die Größe der SWAP-Partition gibt es verschiedene Meinungen, ich nehme meistens pauschal 8 GB. Der verbleibende Platz wird dann ein weiteres Logical Volume.
1.5. LVM Logical Volumes zuordnen und Installation starten
Nun müssen nur noch die erzeugten Logical Volumes zugerodnet werden – das erste als SWAP und eben das zweite eingehängt in /
(root). Anschließend geht es ganz normal mit der Installation weiter.
1.6. GRUB Bootloader am Ende der Instalation auf /dev/sda
installieren
Am Ende der Installation kommt die Frage bzgl. Installation des Bootloaders, leider kann man hier nicht direkt mehrere Festplatten auswählen, wir installieren den von daher erstmal ganz normal auf /dev/sda
.
1.7. GRUB Bootloader auf zweiter Platte installieren
Nun sind wir soweit fertig, allerdings ist der Bootloader ja nur auf der ersten Platte installiert. Wenn die abraucht, wird das System von daher nicht mehr starten. Von daher installieren wer den nun auch auf der zweiten Platte.
Für Nicht-UEFI-Systeme:
dpkg-reconfigure grub-pc
Für UEFI-Systeme:
dpkg-reconfigure grub-efi-amd64
Siehe dazu auch folgende Notiz: EFI System Partition (ESP) klonen (MDRAID, RAID1)
2. Remote-Entsperrung via Dropbear
Nun geht es weiter mit der Einrichtung bzgl. Remote-Entsperr-Möglichkeit.
Siehe Punkt 2 von Proxmox voll-verschlüsselt.
3. Proxmox installieren
Nun haben wir ein fertiges Debian System, muss also noch Proxmox drauf.
Siehe Punkt 3 von Proxmox voll-verschlüsselt.
Schritte um eine Festplatte zu ersetzen
Passiert ja hoffentlich eh nie, aber wenn dann irgendwann eine Platte kaputt geht, ist es hilfreich zu wissen, was zu tun ist. Das Ganze kann man wie folgt machen, ich gehe mal davon aus, dass /dev/sdb
(die zweite Platte) das Zeitliche gesegnet hat.
Wenn das System doch nicht mehr bootet
Aktuell gibt es in Debian wohl einen Bug der dafür sorgen kann, dass das System nicht mehr von einem degraded MDRAID bootet. Beim Start heißt es dann, dass LVM keine Volume Groups finden kann. Konnte ich so nachvollziehen, Workaround ist aus der initramfs-Debug-Shell (in der landet man nach 2 Minuten automatisch, wenn kein LVM Device gefunden wird) die Arrays manuell zu starten mit:
mdadm --run /dev/md0 mdadm --run /dev/md1 exit
Damit bootet das System auch von dem degraded RAID.
Defekte Platte aus den Arrays entfernen
Je nachdem wie die Platte so gestorben ist, ist diese evtl. noch im Array vorhanden oder nicht. Schadet auf alle Fälle nicht, die erstmal zu entfernen mit:
mdadm -–manage /dev/md0 -r failed mdadm –-manage /dev/md1 -r failed
Partitionslayout neu einrichten bzw. kopieren
Als nächstes müssen zuerst die Partitionen auf der neuen Platte wieder angelegt werden. Kann man manuell machen, wir haben aber ja auch noch eine funtionierende Platte – also kopieren wir doch einfach das Layout von /dev/sda
(der funktionierenden Platte) nach /dev/sdb
(die neue Platte) mit:
Für GPT Datenträger (UEFI):
apt-get install gdisk sgdisk -R /dev/sdb /dev/sda sgdisk -G /dev/sdb
Für MRB Datenträger (Nicht-UEFI):
sfdisk -d /dev/sda | sfdisk /dev/sdb
Neue Platte den Arrays hinzufügen
Als nächstes wird die neue Platte bzw. die Partitionen noch den jeweiligen MDRAID Arrays wieder hinzugefügt mit:
mdadm --zero-superblock /dev/sdb1 mdadm --zero-superblock /dev/sdb5 mdadm -–manage /dev/md0 --add /dev/sdb1 mdadm –-manage /dev/md1 --add/dev/sdb5
Der Rebuild startet von selbst, den Status kann man jederzeit checken mit:
mdadm --detail /dev/md0 mdadm --detail /dev/md1
GRUB Bootloader auf neuer Platte installieren
Zuletzt muss auch noch der Bootloader auf der neuen Platte installiert werden, sonst hätten wir wieder das Problem, dass beim Tod von der ersten Platte kein startfähiges System vorhanden wäre. Macht man genauso wie in Schritt 1.7. oben.