You are hereLinux / unionfs

unionfs


Linux liposuctie: Crunchbang in minder dan 1 gigabyte op de Acer Aspire One

Deze blogpost is een bewerking van http://po-ru.com/diary/linux-liposuction-or-xubuntu-in-under-a-gig-on-th.... Daar wordt er (X)Ubuntu Intrepid (8.10) gebruikt, terwijl mijn versie gericht is op Jaunty (9.04) en Karmic (9.10), meer bepaald de Crunchbang-variant met OpenBox desktop.

In een vorige blogpost heb ik 180 MiB vrijgemaakt door overbodige software en overbodige locales te verwijderen.

Ik heb di en du gebruikt om te achterhalen waar het meeste schijfruimte wordt verbruikt:

$ di -hm /
Filesystem         Mount               Megs     Used    Avail %Used fs Type
/dev/sda1          /                 6099.6   1887.6   4212.0  31%  ext4  
$ sudo du -cms /* 2>/dev/null | column -tc 2 | grep -v "^0 " | sort -nr | head -n 11
2649  total
1396  /usr
900   /home
192   /var
124   /lib
16    /boot
8     /sbin
8     /etc
6     /bin
1     /tmp
1     /srv
Het meeste plaats wordt ingenomen door /usr: 1396 MiB. Dit kan verkleind worden, met een combinatie van squashfs en unionfs.

squashfs laat je een filesystem comprimeren, maar het is read-only. unionfs laat je toe om er een schrijfbaar filesystem bovenop te leggen, zodat je gegevens kan wijzigen. Uiteraard, hoe meer data je wijzigt, hoe meer schijfruimte er gebruikt wordt, maar het is altijd mogelijk om opnieuw te comprimeren en de schijfruimte te herwinnen.

Eerst moet squashfs geinstalleerd worden. unionfs zit al standaard in de kernel bij Jaunty en Karmic, en moet dus niet meer geïnstalleerd worden.

$ sudo aptitude install squashfs-tools
Dan moet er een plaats voorzien worden voor het gecomprimeerde filesystem en de overlay:
$ sudo mkdir -p /.filesystems/usr/overlay
Comprimeer het filesystem:
$ sudo mksquashfs /usr /.filesystems/usr/usr.sqfs
Voeg deze regels toe aan /etc/modules:
unionfs
squashfs
loop
en deze regels aan /etc/fstab:
/.filesystems/usr/usr.sqfs /usr squashfs ro,loop,nodev
unionfs /usr unionfs nodev,noatime,dirs=/.filesystems/usr/overlay=rw:/usr=ro
Sluit alle programma's af, ga naar runlevel 1 (of reboot en ga in de rescue mode) en zet de oude /usr-directory opzij:
$ sudo init 1
$ mv /usr /usr.old
$ mkdir /usr
$ mount -a
$ init 3
Werkt alles OK, ook na een reboot, dan mag /usr.old verwijderd worden.

Het schijfgebruik is nu:

$ di -hm /
Filesystem         Mount               Megs     Used    Avail %Used fs Type
/dev/sda1          /                 6099.6    954.9   4834.9  21%  ext4  
Er is dus 932,7 MiB vrijgekomen. Dat komt overeen met het verschil in grootte tussen /usr en  :
$ sudo du -ms /usr /.filesystems/usr
1396    /usr
464     /.filesystems/usr

Opmerking: bij mij deed readahead een beetje lastig tijdens het booten. Dit probleem staat ook beschreven in deze forumtopic. Aangezien readahead alleen maar zinvol is bij een harde schijf maar niet bij een SSD, heb ik readahead ineens verwijderd:

$ sudo aptitude purge readahead

Reclame... ;-)

Met dank aan
  • Jasmina
  • Celine
  • Pieter
  • Jeff
  • Hans
  • Jurgen
  • Jurgen
  • Marijke
  • Amedee
  • Erik
  • Danny
  • Sofie
  • Lars
  • Christophe
  • Peter
  • Jeroen
  • Jurgen
om mij een gratis herlading twv €15 te bezorgen!

Waar ben ik?