Heute hatte ich ein bisschen Not an Swap‐Space auf meiner Linux‐Kiste und kam auf die Idee, ich könnte das Problem schnell durch ein Swap‐File nutzen. Also kurz mit dd ein bisschen Platz angelegt und mit mkswap vorbereitet.
# dd if=/dev/zero of=/extra-swap bs=1024 count=1024
1024+0 records in 1024+0 records out
# mkswap /extra‐swap 1024
Setting up swapspace, size = 1044480 bytes
#
Als ich das File dann mit swapon einbinden wollte, gab es die Ernüchterung:
# swapon /extra‐swap
swapon: /extra‐swap: Invalid argument
dmesg:
swapon: swapfile has holes
Was ist denn da nur los?
Der Kernel kann auf fast alles swappen, so lange das Ganze eine zusammenhängende Datei bildet. Durch die Eigenheit des Copy‐on‐Write verschiebt BTRFS die Swap‐Datei bei Änderungen quer über die Platte, was dem Kernel keine Freude bereitet, da die Swap‐Datei dadurch nicht mehr zusammenhängend und ohne Löcher ist.