Netzwerk-Anhangs-Speicher
Ich habe einen kleinen Würfel, hinten mit Netzwerk-Buchse & Strom, innen sind fünf Festplatten. Feine Sache, das.
Hier ein paar Notizen zur Installation.
Vorbereitung
Das USB-Image schreiben (hier z.B. von einem Mac aus):
sudo dd if=FreeBSD-11.0-RELEASE-amd64-memstick.img of=/dev/rdisk4 bs=1m conv=sync
Davon booten, den Installer abbrechen, und in die Live-Shell wechseln.
Als root einloggen, und erstmal Module nachladen:
kldload geom_eli zfs aesni
Partitionieren
Das System soll eigenständig laufen können, die Daten sollen aber trotzdem verschlüsselt sein.
Weiterhin sollen die Festplatten alle gleich partitioniert sein, da diese im Verbund laufen.
Das System wird natürlich mit UEFI aufgesetzt - modern, modern!
Dies ergibt dann sechs Partitionen pro Platte…
- zwei Boot-Partitionen (efi & gpt)
- eine Partition für den
zfs mirror
bootpool (unverschlüsselt -/boot
) - eine Swap-Partition (verschlüsselt)
- eine Partition für den
raidz2
-Pool zroot (unverschlüsselt - System/
) - eine Partition für den
raidz2
-Pool tank (verschlüsselt - Daten/tank
)
Zurecht finden:
-
Ein
gpart show
listet die Platten mit ihren Partitionen sowie deren Start und End-Sektoren. -
Ein
camcontrol devlist
zeigt die Herstellerdaten der Platten, und deren Device-Files (z.B./dev/ada0
). -
camcontrol identify ada0
zeigt noch mehr Informationen zur Platte an.
Frisch ans Werk:
foreach i ( 0 1 2 3 4 )
foreach? gpart create -s GPT "ada$i"
foreach? gpart add -t efi -l "efiboot$i" -s 800K "ada$i"
foreach? gpart add -t freebsd-boot -l "gptboot$i" -s 512K "ada$i"
foreach? gpart add -t freebsd-zfs -l "boot$i" -s 2G -a 4K "ada$i"
foreach? gpart add -t freebsd-swap -s 2G -a 4K "ada$i"
foreach? gpart add -t freebsd-zfs -l "zroot$i" -s 15G -a 4K "ada$i"
foreach? gpart add -t freebsd-zfs -l "tank$i" -a 4K "ada$i"
foreach? end
- Die Blockgrößen werden auf
4K
festgezurrt (gpart ... -a 4K
)
Hinweis:
foreach
funktioniert natürlich nur in der csh (und Varianten).
Als nächstes kommt der Bootloader:
foreach i ( 0 1 2 3 4 )
foreach? dd if=/boot/boot1.efifat of="/dev/ada${i}p1"
foreach? gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 2 "ada$i"
foreach? end
- Der EFI-Loader wird in die erste Partition geschrieben (
dd ...
). - Die GPT-Boot-Partitionen bekommen ihren Bootstrap-Code verpasst
(
gpart bootcode ... -i 2
).
An dieser Stelle kann man bereits einmal neu starten, um zu testen, ob der Bootloader geladen wird, und soweit alles funktioniert. Muss man aber nicht.
Jetzt sind die Pools dran:
Damit das System später Platz hat, legen wir den RAIDz2 Pool zroot
an:
zpool create -o cachefile=/var/tmp/zpool.cache \
-o altroot=/mnt zroot raidz2 \
/dev/gpt/zroot0.nop /dev/gpt/zroot1.nop \
/dev/gpt/zroot2.nop /dev/gpt/zroot3.nop \
/dev/gpt/zroot4.nop
Wir erstellen davor aber noch einen Mountpoint in den wir schreiben dürfen:
mkdir /tmp/zroot
zpool create -m /tmp/zroot zroot raidz2 ada0p3 ada1p3 ada2p3 ada3p3 ada4p3
Dann werden die Mountpoints für das System eingetragen:
zfs create zroot/home
zfs create zroot/root
zfs create zroot/tmp
zfs create zroot/usr
zfs create zroot/usr/home
zfs create zroot/usr/ports
zfs create zroot/usr/src
zfs create zroot/var
zfs create zroot/var/audit
zfs create zroot/var/crash
zfs create zroot/var/log
zfs create zroot/var/mail
zfs create zroot/var/tmp
Access Time ausschalten:
zfs set atime=off zroot
Installieren
Sind die Platten soweit partitioniert, wird das System entpackt:
tar -xvf /usr/freebsd-dist/base.txz -C /tmp/zroot
tar -xvf /usr/freebsd-dist/kernel.txz -C /tmp/zroot
tar -xvf /usr/freebsd-dist/doc.txz -C /tmp/zroot
tar -xvf /usr/freebsd-dist/lib32.txz -C /tmp/zroot
Jetzt wird konfiguriert! In die /tmp/zroot/boot/loader.conf
kommt:
geom_eli_load="YES"
zfs_load="YES"
aesni_load="YES"
vfs.root.mountfrom="zfs:zroot/ROOT/default"
autoboot_delay="3"
Die /tmp/zroot/etc/fstab
wird erstellt:
/dev/ada0p2.eli none swap sw 0 0
/dev/ada1p2.eli none swap sw 0 0
/dev/ada2p2.eli none swap sw 0 0
/dev/ada3p2.eli none swap sw 0 0
/dev/ada4p2.eli none swap sw 0 0
zroot / zfs rw,noatime 0 0
zroot/root /root zfs rw,noatime 0 0
zroot/home /home zfs rw,noatime 0 0
zroot/tmp /tmp zfs rw,noatime 0 0
zroot/usr /usr zfs rw,noatime 0 0
zroot/usr/home /usr/home zfs rw,noatime 0 0
zroot/usr/ports /usr/ports zfs rw,noatime 0 0
zroot/usr/src /usr/src zfs rw,noatime 0 0
zroot/var /var zfs rw,noatime 0 0
zroot/var/audit /var/audit zfs rw,noatime 0 0
zroot/var/crash /var/crash zfs rw,noatime 0 0
zroot/var/log /var/log zfs rw,noatime 0 0
zroot/var/mail /var/mail zfs rw,noatime 0 0
zroot/var/tmp /var/tmp zfs rw,noatime 0 0
last update: 2024-04-21 20:20:41 +0200