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 .