Squash en Union,Aufs FileSystem

Inhoud


Inleiding

Het Squash filesysteem is een goed gecomprimeerd 'alleen lezen' systeem voor Linux .
De bestanden hebben meestal de extentie .sfs en kunnen worden verbonden aan het filesysteem als zijnde een virtuele drive .

Het Union of Aufs systeem steld je instaat om verschillende folder onder 1 en dezelfde folder zichtbaar te maken (te verenigen).


Squash

Maken

Maak een klad folder my-klad en zet daarin alles wat je in het bestand my-drive wilt gaan zetten .
Inlcusief alle sub folder . ( -e"filenaam" , sluit filenaam uit .)

Met de opdracht mksquashfs my-klad my-drive.sfs maak je het bestand aan .

Uitpakken

Om een sfs bestand weer te bekijken kun je deze weer uitpakken .
Met unsquasfs bestand.sfs wordt deze uitgepakt in een folder "squashfs-root" .
Je kunt enkele opties meer geven om b.v. de eigen uitpak folder tegeven met -d"foldernaam" .
De inhoud kun je bekijken door -l .

Voorbeeld : unsquasfs -l bestand.sfs laat de inhoud van het bestand zijn .

Mount

Om je virtuele drive te binden aan het filesysteem moet je een mountpoint hebben (of maken) .
B.v. mkdir /mnt/mountvirdrive .

Nu kun je je virtuelle drive mounten .
mount -t squashfs my-drive.sfs /mnt/mountvirdrive -o loop

Nu kijk je de inhoud van je virtuelle drive bekijk met ls /mnt/mountvirdrive of m.b.h. je window-file-manager .

UnMount

Verwijderen van je virtuele drive doe je d.m.v. umount opdracht .
umount /mnt/mountvirdrive (ook het loop device is dan weer beschikbaar)
Soms lukt het niet geef dan eens umount -l /mnt/mountvirdrive

Overige

Je kunt deze bestanden ook wijzigen en bewerken zoals je dat kunt met .zip bestanden .
Voor mee informatie zie : SquashFS-HOWTO


Union

Unionfs is ontwikkeld in 2004 op de Stony Brook universiteit en voegd de inhoud van verschillende folders (ook wel 'branches' gemoemd) zamen in een folder terwijl de ze physiek gescheiden blijven .

Gebruik

In volgende voorbeeld verenigen we twee folders zamen in een folder . Wel aannemende dat de folder bestaan .
mount -t unionfs -o dirs=/mnt/cdrom1=ro:/mnt/cdrom2=ro none /mnt/union
Na deze 'mount' bevat de folder /mnt/union alle files en folder van beide cdrom's .
Wel met dien verstande dat cdrom1 voorrang heeft boven cdrom2 als het gaat om een zelfde folder / bestands naam .

Voor het ongedaanmaken gebruik je umount /mnt/union .

Een meer uitgebreide methode is die welke gebruik maakt van unionctl .
Een opdracht als unionctl /mnt/union --list geeft aan welke elementen aan de union zijn gekoppeld .
Zou kun je later een union toevoegen :
unionctl /mnt/union --add --before /mnt/cdrom1 -mode rw /mnt/changes .
Hiermee kun je de veranderingen opslaan in /mnt/change welke als eerste op de union stack staat .

Wil je een union verwijderen (uit zo'n union stack) dan doe je dit met --remove eventueel met een plaatsbepaling (--before --after) .
Vb. unionctl /mnt/union --remove /mnt/change . De wijzigingen staan op /mnt/change .

Voorbeeld

Een leuk gebruik hiervan is het toevoegen van iets als OpenOffice aan je Puppy . OpenOffice is geheel geinstaleerd iets van 300 mB terwijl de .sfs maar 100 Mb is . Door de Squash te kombieneren met Union kun je heel OpenOffice gebruiken zonder deze geheel op je hardeschijf te zetten .
mount -t squashfs /OpenOffice.sfs /opt/OO -o loop
mount -t unionfs -o dirs=/usr/local:/opt/OO/local=ro none /usr/local .

Nu zijn alle folder van /opt/OO/local vereningd met die van /usr/local waardoor alle opdrachten beschikbaar zijn . Dit daar het path naar /usr/local/bin standaard open staat .
Wil de OpenOffice weer kwijt dan : umount /usr/local en umount /mnt/opt/OO is voldoende .

Aufs

Aufs is min of meer de opvolger voor Unionfs . Het werk op vrjwel de zelfde manier maar blijkt stabieler te zijn . Als je in boven genoemde voorbeelden het type (achter -t) vervangt door aufs dan werkt het ook . Wel zijn de opdrachten om branches te verwijderen of toe te voegen iets anders . Zie daartoe deze uitleg . (In Puppy blijkt de eerste branch schrijfbaar te moeten zijn .)
Voor het vinden van een object wordt eerst in de eerste branche gezocht , is het daar niet aanwezig dan in de tweede . Mocht deze ook in de derde aanwezig zijn dan wordt de eerst gevondene gebruikt . (Overlay)

Voorbeeld

Een leuk gebruik hiervan is het toevoegen van iets als OpenOffice aan je Puppy . OpenOffice is geheel geinstaleerd iets van 300 mB terwijl de .sfs maar 100 Mb is . Door de Squash te kombieneren met Aufs kun je heel OpenOffice gebruiken zonder deze geheel op je hardeschijf te zetten .
mount -t squashfs /OpenOffice.sfs /opt/OO -o loop
mount -t aufs -o dirs=/usr/local:/opt/OO/local=ro none /usr/local .

Nu zijn alle folder van /opt/OO/local vereningd met die van /usr/local waardoor alle opdrachten beschikbaar zijn . Dit daar het path naar /usr/local/bin standaard open staat .
Wil de OpenOffice weer kwijt dan : umount /usr/local en umount /mnt/opt/OO is voldoende .
Soms lukt het niet geef dan de optie -l mee aan de opdracht umount .

Overige

Hier wat interesante referenties :
Kernel Korner - Unionfs: Bringing Filesystems Together
A Stackable Unification File System
Aufs - another unionfs

Heb je hierwat aan gehad mail mij dan maar eens .