Serie: NAS mit ODROID-HC4 - Teil 1: Basis

Fr, 8. Oktober 2021, Martin Brodbeck

Mit dieser Artikelserie soll das Einrichten eines kleinen, günstigen NAS erläutert werden. Linux basierte Clients im Haushalt sollen darauf ihre Backups ablegen. Damit eine defekte NAS-Festplatte keinen Daten-GAU verursacht, werden die Daten per RAID1 gespiegelt. Der generische Ansatz (kein Fertigsystem) soll uns dabei helfen, auch andere Wünsche an das NAS zu erfüllen, wie z. B. ein Calibre Server.

Es sind folgende Teile geplant:

  1. Hardware und Betriebssystem
  2. Backups mit Borg
  3. Calibre Server
  4. Samba Server

Hardware und Betriebssystem

Für unser NAS benötigen wir einen ODROID-HC4 samt Netzteil. Dieser günstige Single Board Computer bietet neben einer mehr als ausreichenden ARM CPU (Cortex A55) und 4GB RAM auch zwei SATA-Anschlüsse. Hierbei werden die Festplatten wie bei einem Toaster von oben in die Schlitze gesteckt. Zwei 4TB-HDDs von Western Digital (WD Red) dienen als Datenhalde. Als Datenträger für das Betriebssystem kommt eine 32GB microSD Karte zum Einsatz.

Die Wahl des Betriebssystems fällt auf armbian (Bullseye). Dieses lässt sich einfach installieren und fusst auf der stabilen Debian Distribution.

Der ODROID-HC4 wird übrigens via Ethernetkabel an das LAN angeschlossen, z. B. direkt an eine Fritz!Box.

Installation des Betriebssystems

Das entsprechende Image kann man von der armbian Webseite herunterladen und mittels eines geeigneten Tools, z. B. belenaEtcher, auf die microSD Karte schreiben. Weil armbian noch nicht mit dem neuen Petitboot System des HC4 zurechtkommt, müssen wir vorab Petitboot entfernen. Ohne eingelegte microSD-Karte booten wir den Computer und wechseln in die Petitboot-Shell. Folgende Kommandos löschen Petitboot, wodurch das System in der Folge u-boot startet, was mit armbian kompatibel ist:

# flash_eraseall /dev/mtd0
# flash_eraseall /dev/mtd1
# flash_eraseall /dev/mtd2
# flash_eraseall /dev/mtd3

Durch Ziehen des Netzsteckers wird das Gerät ausgeschaltet und die microSD Karte kann eingelegt werden. Nach erneuter Stromgabe startet nun zum ersten Mal das armbian-System, das auch gleich das Dateisystem auf die Größe der microSD Karte anpasst. Nach Eingabe einiger Daten wie root-Passwort, Erstellen eines normalen Benutzers, Angaben zu Lokalisierung usw. ist das System bereit zum Einsatz.

Btrfs und RAID1

RAID Level 1, also das Spiegeln von Daten, gilt für das Dateisystem Btrfs als stabil, weswegen wir es hier auch gerne dafür einsetzen. Die Integration der RAID-Funktionalität in das Dateisystem erspart uns das Aufsetzen von LVM und wir kommen in den Genuss weiterer Annehmlichkeiten wie das Anlegen dynamischer "Partitionen" (Subvolumes), ohne vorher deren Grösse vorgeben zu müssen.

Zunächst erstellen wir auf den beiden Festplatten mittels fdisk /dev/sda bzw. fdisk /dev/sdb je eine frische gpt-Partitionstabelle (Befehl g) und eine grosse Partition über die gesamte Platte (Befehl n und Vorgaben akzeptieren). Anschliessend teilen wir Btrfs mit, dass es diese als RAID1-Verbund nutzen soll:

# mkfs.btrfs -m raid1 -d raid1 /dev/sda1 /dev/sdb1

Option: In meinem Fall bin ich tatsächlich etwas anders vorgegangen und habe zunächst nur eine der Festplatten angeschlossen. Diese habe ich wie beschrieben partitioniert und zunächst nur ein normales Btrfs-Dateisystem angelegt:

# mkfs.btrfs /dev/sda1

Das hat den Vorteil, dass man sich bei der Zuordnung "welche Festplatte ist wo eingesteckt" leichter tut, was im Falle einer defekten Platte ("Welche ist das bloss?") nützlich sein kann. Man kann sich also in Ruhe mittels fdisk -l /dev/sda den Disk Identifier notieren. Später kann das Dateisystem dann einfach zu einem RAID1 Verbund erweitert werden. Nach Anschliessen der zweiten Festplatte (ggf. das System dafür Herunterfahren) partitioniert man diese, notiert sich den Disk Identifier, und konvertiert dann auf RAID1. Dazu mountet man das bereits erstellte Dateisystem der ersten Platte und fügt dann die Zweite hinzu:

# mount /dev/sda1 /mnt
# btrfs device add /dev/sdb1 /mnt
# btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt
# umount /mnt

Das Basissystem ist nun soweit vorbereitet. Im nächsten Teil erstellen wir das erste Btrfs Subvolume und richten das NAS für remote Borg-Backups ein.