2Stoned
Lieutenant
- Registriert
- Apr. 2007
- Beiträge
- 680
Nach der News zum Erscheinen einer neuen Manjaro ISO, habe ich mich entschlossen dieses auf meinem Hauptsystem einzusetzen. Doch wollte ich dieses nicht einfach installieren, sondern gerne auf ein RAID aus zwei Samsung 970 Evo Plus NVMe SSDs packen. Dabei zeigten sich für mich etliche Stolperfallen, die ich schlussendlich doch irgendwie überwunden habe. Wie, will ich hier im Detail erläutern. Jedoch will ich auch gleich anmerken, dass ich weder bezüglich Linux noch RAIDs ein Experte bin. Es mag elegantere Lösungen geben. Meine Lösung mag nicht immer funktionieren. Und doch, hilft meine Variante vielleicht ja jemanden seine eigenen Installations-Probleme zu meistern.
Im Folgenden also eine kleine Übersicht, wie ich Manjaro auf mein System auf ein RAID10 bestehen aus 2 NVMe SSDs installiert habe.
Wie installiere ich Manjaro auf ein RAID?
Zunächst einmal muss man Manjaro Live vom USB-Stick booten. Ich habe mich für die gnome-edition entschieden.
Vom Live-System aus, lässt sich dann auch schon die ganze Installation vornehmen.
Hat man vorher schon etwas mit RAID herumexperimentiert und möchte die gerne komplett platt machen, sind vorab noch ein paar Extraschritte nötig, welche jedoch auch aus dem Live-System heraus machbar sind.
Partitionieren
Im Folgenden lege ich die Boot-Partition nur auf eine Festplatte. Falls genau diese sterben sollte, kann man natürlich nicht mehr booten, auch wenn alle weiteren Daten durch die Spiegelung noch vorhandensein müssten. Besser wäre es die Boot-Partition auf ein RAID1 zu legen. Dazu muss man von der nachfolgenden Beschreibung etwas abweichen:
Als erstes muss ich meine SSDs partitionieren. Ich will zuerst den Bootloader haben, dann root, dann swap. Um beide Platten gleich aufzuteilen, mache ich bei einer eine Partition, die gleich gross wie die bootloader-Partition der ersten Platte ist, aber als Dateisystem gekennzeichnet ist. Die 300MB Platzverlust kann ich verkraften. Meine Partitionstabelle sieht also in etwa wie folgt aus:
Zum Partitionieren nutze ich gdisk:
Relevante Kommandos für gdisk (ungefähr in der Reihenfolge, wie ich sie das erste Mal verwende):
RAID anlegen
Für ein RAID10 mit 2 Platten nutze ich folgenden Befehl:
Anschliessend ist das RAID eigentlich sofort ready, aber es wird im Hintergrund noch zusammengeschustert. Mit
Partitionen formatieren und Manjaro installieren
Die EFI-Partition muss nicht formatiert werden. Die swap-Partition kann einfach mit
formatiert werden, gleiches für die zweite, die ich angelegt habe. Der Linux Kernel sollte bei mehreren swap-Partitionen diese clever verwalten und immer die schnellste nutzen, sogar wie ein RAID0, ohne ein eigentliches RAID angelegt zu haben.
Das RAID kann auf zwei Arten formatiert werden, je nachdem, ob man für die Installation von Manjaro den CLI-Installer Architect oder den GUI-Installer Calamares verwendet.
Post-Installations-Anpassungen
Wenn die Installation durch ist, muss man noch ein paar Änderungen vornehmen. (Im Architect kann man das auch direkt machen. Hat man den Architect aber bereits geschlossen, kann man ebenfalls wie folgt vorgehen).
Zunächst muss man die root partition auf
(
Dann chrooted ihr euch in eure Installation:
Dann fügt ihr euer RAID der mdadm-Konfiguration hinzu:
Mit
In eine der untersten Zeilen solltet ihr auch noch ein
Mit CTRL+X könnt ihr nano (den Texteditor) wieder schliessen, bestätigt einfach, dass er die Datei überschreiben soll.
Dann müsst ihr noch die GRUB-Konfiguration anpassen:
Dort dann folgendes ergänzen:
und noch eine kleine kosmetische Änderung, damit man beim Booten nicht auf "Disk Filter Writes Error"s hingewiesen wird:
Als letztes muss dann nur noch eine Datei verändert werden:
:
Dort solltet ihr
.
Jetzt muss man mit
noch die initramfs neu generieren und mit
noch grub.
Jetzt kann man mit
Betrachtet dies bitte eher als Erfahrungsbericht und nicht als best-practice. Es mag bessere Wege geben und es mögen ungewollte Nebeneffekte auftreten. Ich bin kein Experte auf dem Gebiet!
Im Folgenden also eine kleine Übersicht, wie ich Manjaro auf mein System auf ein RAID10 bestehen aus 2 NVMe SSDs installiert habe.
Wie installiere ich Manjaro auf ein RAID?
Zunächst einmal muss man Manjaro Live vom USB-Stick booten. Ich habe mich für die gnome-edition entschieden.
Vom Live-System aus, lässt sich dann auch schon die ganze Installation vornehmen.
Hat man vorher schon etwas mit RAID herumexperimentiert und möchte die gerne komplett platt machen, sind vorab noch ein paar Extraschritte nötig, welche jedoch auch aus dem Live-System heraus machbar sind.
Eigentlich müsste sich ein bestehendes RAID relativ einfach auflösen lassen:
Wobei sowohl
Nur erhielt ich so beim Boot ständig Fehler, dass ein altes RAID, welches ich so eigentlich aufgelöst hatte, nicht angeschlossen sei. Etwas tiefer würde eigentlich
Code:
mdadm --stop /dev/md/md_test
mdadm --zero-superblock /dev/sdx(#)
sdx
für eine Festplatte oder sdx#
für eine Partition verwendet werden kann.Nur erhielt ich so beim Boot ständig Fehler, dass ein altes RAID, welches ich so eigentlich aufgelöst hatte, nicht angeschlossen sei. Etwas tiefer würde eigentlich
dmraid -E -r /dev/sdx
greifen, doch auch so habe ich das Problem-RAID nicht entfernt gekriegt. Also habe ich die Festplatte ordentlich plattgemacht, mit secure erase. Für NVMe Platten geht das folgender massen:nvme-cli
installieren. Unter Arch(-Derivaten) mitsudo pacman -Syy nvme-cli
sudo nvme format -s1 -lb=0 /dev/nvme0n1
- 2. wiederholen für alle weitere zu löschenden Festplatten, also bei mir noch
sudo nvme format -s1 -lb=0 /dev/nvme1n1
Partitionieren
Im Folgenden lege ich die Boot-Partition nur auf eine Festplatte. Falls genau diese sterben sollte, kann man natürlich nicht mehr booten, auch wenn alle weiteren Daten durch die Spiegelung noch vorhandensein müssten. Besser wäre es die Boot-Partition auf ein RAID1 zu legen. Dazu muss man von der nachfolgenden Beschreibung etwas abweichen:
Ich habe dies so nicht getestet. Falls es jemand umsetzt, wäre ich um eine Mitteilung froh, dann kann ich dies hier noch ergänzen. Grob müsste man wohl Folgendes anders machen, als im Weiteren beschrieben:
- Partition 1 muss auf beiden Platten ebenfalls als
fd00
-Partition angelegt werden. - Nebst dem RAID10 über die Partitionen 2 beider Platten muss dann noch ein RAID1 über die Partitionen 1 angelegt werden
- Der Befehl müsste wie folgt aussehen:
mdadm --create --verbose --level=1 --metadata=1.0 --raid-devices=2 /dev/md/MyRAID1Boot /dev/nvme0n1p1 /dev/nvme1n1p1
- Der Befehl müsste wie folgt aussehen:
- Später bei der Installation muss man dann natürlich
/boot/efi
auf das angelegte RAID1 (wahrscheinlich md126) legen. - (Falls das jemand so umsetzt und dabei auf weitere Abweichungen stösst bitte melden, dann würde ich das hier ergänzen!)
Als erstes muss ich meine SSDs partitionieren. Ich will zuerst den Bootloader haben, dann root, dann swap. Um beide Platten gleich aufzuteilen, mache ich bei einer eine Partition, die gleich gross wie die bootloader-Partition der ersten Platte ist, aber als Dateisystem gekennzeichnet ist. Die 300MB Platzverlust kann ich verkraften. Meine Partitionstabelle sieht also in etwa wie folgt aus:
NVMe 1 | NVMe 2 | ||
---|---|---|---|
Grösse | Typ | Grösse | Typ |
300M | ef00 (bootloader) | 300M | 8300 (Daten) |
rest | fd00 (RAID) | rest | fd00 (RAID) |
72G | 8200 (swap) | 72G | 8200 (swap) |
Zum Partitionieren nutze ich gdisk:
Code:
sudo gdisk /dev/nvme0n1
- o: löscht alte Partitionstabelle und legt neue GPT-Partitionstabelle an
- n: neue Partition
- +300M: Kann z.B. bei der Boot-Partition als "last sector" angegeben werden, dann wird die Partition 300M gross
- ef00: Partitionstyp für EFI-Bootloader-Partition
- fd00: Partitionstyp für die RAID-Partition (auf die kommt root)
- -72G: kann bei der root Partition als "last sector" angegeben werden, dann bleiben für die weiteren Partitionen, in meinem Falle swap, noch 72G frei
- 8200: Partitionstyp für die swap-Partition
- p: listet auf, was man bisher erfasst hat
- w: schreibt die erfasste Partitionstabelle mit den angelegten Partitionen auf die Festplatte
RAID anlegen
Für ein RAID10 mit 2 Platten nutze ich folgenden Befehl:
Code:
mdadm --create --verbose --level=10 --metadata=1.2 --chunk=512 --raid-devices=2 --layout=f2 /dev/md/MyRAID10Array /dev/nvme0n1p2 /dev/nvme1n1p2
/dev/md/MyRAID10Array
ist der Name, den das RAID tragen wird/dev/nvme0n1p2
ist die Partition der ersten Platte, die zum RAID gehören soll/dev/nvme1n1p2
entsprechend die zweite
Anschliessend ist das RAID eigentlich sofort ready, aber es wird im Hintergrund noch zusammengeschustert. Mit
cat /proc/mdstat
lässt sich der Status und die geschätzte Restdauer ablesen. (Ich habe vorsichtshalber mal gewartet, bis es fertig war, bevor ich fortfuhr.)Partitionen formatieren und Manjaro installieren
Die EFI-Partition muss nicht formatiert werden. Die swap-Partition kann einfach mit
Code:
sudo mkswap /dev/nvme0n1p3
sudo swapon /dev/nvme0n1p3
Das RAID kann auf zwei Arten formatiert werden, je nachdem, ob man für die Installation von Manjaro den CLI-Installer Architect oder den GUI-Installer Calamares verwendet.
Das md127 kann hier direkt formatiert werden:
Details und Abweichungen sind wiederum dem Arch Wiki zu entnehmen.
Wenn man dann im Architect soweit ist, dass man festlegen soll, auf welche Partition root (
Code:
mkfs.ext4 -v -L myarray -m 0.01 -b 4096 -E stride=128,stripe-width=256 /dev/md127
Wenn man dann im Architect soweit ist, dass man festlegen soll, auf welche Partition root (
/
) kommt, muss man in einem weiteren Terminal kurz die entsprechende Partition selbst mounten, bevor man im Architect auf ok drückt. Der Architect schafft das irgendwie nicht selbst und meldet stets ein Mount Failed!
. Also, bevor man bestätigt, dass root auf /dev/md127
liegen soll, man es aber bereits angewählt hat und nur noch enter drücken müsste, öffnet man ein weiteres Terminal und gibt dort flott sudo mount /dev/md127 /mnt
ein. Anschliessend kann man beim Architect weitermachen und dort enter drücken. Man sollte nun ein Mount successful!
sehen.Auch mit dem graphischen Installer ist es möglich Manjaro auf ein RAID zu installieren. Hierfür muss man das angelegte RAID selbst allerdings ebenfalls partitionieren. Also nochmals gdisk nutzen:
Dort mit
So ausgestattet kann man dann im Installer "Manual Partitioning" auswählen, oben in der Auswahlliste
Dann wieder oben in der Auswahlliste
Code:
sudo gdisk /dev/md127
o
eine neue Partitionstabelle anlegen, dann mit n
eine neue Partition, mit [enter], [enter], [enter] die Standardwerte übernehmen und mit w
die Partitionstabelle aufs RAID schreiben.So ausgestattet kann man dann im Installer "Manual Partitioning" auswählen, oben in der Auswahlliste
md127
wählen, die Partition anklicken, unten auf edit
und dort bei Mount Point
das root-Verzeichnis /
setzen.Dann wieder oben in der Auswahlliste
/dev/nvme0n1
anwählen, und Partition 1 als mount point für /boot/efi
auswählen. Sonst ist nichts weiter Spezielles zu unternehmen und man kann dem Installer folgen, wie wenn man auf eine einzelne Festplatte installieren würde.Post-Installations-Anpassungen
Wenn die Installation durch ist, muss man noch ein paar Änderungen vornehmen. (Im Architect kann man das auch direkt machen. Hat man den Architect aber bereits geschlossen, kann man ebenfalls wie folgt vorgehen).
Zunächst muss man die root partition auf
/mnt
mounten und die EFI-Partition auf /mnt/boot/efi
:
Code:
sudo mount /dev/md127p1 /mnt
mount /dev/nvme0n1p1 /mnt/boot/efi
(
md127p1
natürlich mit eurer Partition auf der root liegt ersetzen und nvme0n1p1
mit der Partition, auf der bei euch der bootloader liegt ersetzen)Dann chrooted ihr euch in eure Installation:
Code:
manjaro-chroot /mnt
Dann fügt ihr euer RAID der mdadm-Konfiguration hinzu:
Code:
mdadm --examine --scan >> /etc/mdadm.conf
nano /etc/mdadm.conf
könnt ihr die Konfiguration nochmals anschauen. Solltet ihr zu unterst zweimal die gleiche Zeile haben, löscht ihr einfach eine der beiden.In eine der untersten Zeilen solltet ihr auch noch ein
#MAILADDR
finden, dort müsst ihr die Raute entfernen und nachher root@localhost
als Email eintragen.Mit CTRL+X könnt ihr nano (den Texteditor) wieder schliessen, bestätigt einfach, dass er die Datei überschreiben soll.
Dann müsst ihr noch die GRUB-Konfiguration anpassen:
Code:
nano /etc/default/grub
Code:
GRUB_PRELOAD_MODULES="... mdraid09 mdraid1x"
Code:
GRUB_SAVEDEFAULT=false
Als letztes muss dann nur noch eine Datei verändert werden:
Code:
nano /etc/mkinitcpio.conf
Dort solltet ihr
BINARIES=(mdmon)
eintragen und bei den hooks zwischen block
und filesystems
noch mdadm_udev
eintragen und ganz am Ende noch fsck
. Dann sieht die Zeile mehr oder weniger so aus:
Code:
HOOKS="base udev autodetect modconf block mdadm_udev keyboard keymap filesystems fsck "
Jetzt muss man mit
Code:
mkinitcpio -P
Code:
update-grub
Jetzt kann man mit
exit
wieder aus der chroot und kann nun den PC neu starten und dabei hoffen, dass man in ein sauberes, frisch installiertes Manjaro bootet. Betrachtet dies bitte eher als Erfahrungsbericht und nicht als best-practice. Es mag bessere Wege geben und es mögen ungewollte Nebeneffekte auftreten. Ich bin kein Experte auf dem Gebiet!
Zuletzt bearbeitet: