/var auf eine andere Partition linken

Das Problem: Kein Platz mehr auf /var

Es ist also wieder einmal passiert: Der Heimserver, der eigentlich nie für große Datenbank-Arbeiten gedacht war schlägt sich tapfer als Tileserver für Openstreetmap Karten. Nachdem das bei der Installation nicht abzusehen war, habe ich /var nicht auf eine eigene Partition gelegt und die root-Partition ist jetzt natürlich voll.

Jetzt könnte man ein bestehendes Logical Volume verkleinern (zuvor natürlich auch das unterliegende Filesystem) und den neu freigegebenen Platz für ein neues LV verwenden und dieses dann unter /var mounten. Der Quick-and-dirty-workaround ist /var einfach auf eine bestehende Partition zu verschieben und dann zu verlinken (softlink). Gesagt, getan, nur apparmor, der Sicherheitsdienst von Ubuntu-Linux ist damit nicht ganz einverstanden.

kernel: [11407.253478] type=1400 audit(1346434922.210:36): apparmor="DENIED" operation.....

OK, jetzt kann man die apparmor-Profile anpassen, aber das ist gar nicht ganz trivial und vor allem muss das für jede neue Software wieder gemacht werden.

bind bindet Verzeichnisse wie Mount-Points

Hier kommt eine seit Kernel 2.4 bestehende Erweiterung zu Hilfe: Die mount-Option bind kann Teile der Verzeichnisstruktur als eigenen Mount-Point einhängen. In der /etc/fstab kann das dann so aussehen:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/vg1-root /               ext4    errors=remount-ro 0       1
/dev/mapper/vg1-swap none            swap    sw              0       0
/dev/mapper/vg1-mm	/media/mm	ext4	defaults	0	0
/media/mm/var /var  none bind

Jetzt ist liegt /var physikalisch auf der Partition mm und kann den ganzen Plattenplatz dieser Partition (LV in diesem Fall) verwenden.

Wie gesagt, ein Quick-and-dirty hack, aber dies können ja manchmal auch ganz nützlich sein …

See also