ZFS Swap später einbinden

In der Vergangenheit habe ich es erlebt, dass der Bootvorgang gestoppt wurde wenn einzelne Partitionen nicht verfügbar sind. Das ist insbesondere manchmal der Fall wenn in einem ZFS Mirror eine Platte nicht da ist aber ein Booten möglich wäre weil es ist ja eine andere da.

Deswegen wollte ich Swap Partition nur einrichten wenn die Partition auch da ist. Hier hat ChatGPT mir eine nette Idee geliefert die ich noch etwas verfeinern musste.

Die Idee: Swap wird nicht über die fstab eingerichtet sondern über ein rc Startup Script das vorher prüft ob die Partition da ist.

Hier das rc Startup Script

vi /etc/rc.d/swap_add_optional


#!/bin/sh
#
# PROVIDE: swap_add_optional
# REQUIRE: FILESYSTEMS
# BEFORE: swaplate
# KEYWORD: nojail

. /etc/rc.subr

name="swap_add_optional"
start_cmd="swap_add_optional_start"
stop_cmd=":"

swap_devices="/dev/gpt/swap0 /dev/gpt/swap1 "

swap_add_optional_start() {
    echo "Adding available swap devices..."
    for dev in ${swap_devices}; do
        if [ -e "$dev" ]; then
            echo "  Adding swap: $dev"
            swapon "$dev"
        else
            echo "  Swap device missing: $dev"
        fi
    done
}

load_rc_config $name
run_rc_command "$1"

Die Datei muss natürlich ausführbar sein

chmod +x /etc/rc.d/swap_add_optional

Das ganze muss noch in der rc.conf gestartet werden

vi /etc/rc.conf

   swap_add_optional_enable="YES"