Vad är ett loop-filsystem?
Gnu/Linux (och de allra flesta unix-system) har en mekanism som tillåter montering av en fil (tidigare formaterad) som om den vore en hårddisk, vanligtvis utan partitionstabell. Det här taskiga diagrammet (gjord av mig) förklarar hur den här mekanismen fungerar.
Användning av loop-filer
1- Montera .iso-filer
.iso-filerna, den grundläggande standarden på CD- och DVD-skivor, är inget annat än en loop-fil vars filsystem kan ISO 9960 (vanligare på CD-skivor) eller UDF (vanligare på DVD-skivor). För att montera den använder vi kommandot mount.
mkdir iso # skapa katalogen chmod -R 666 iso # ge alla användare läsbehörighet montera image.iso iso/ # montera iso-bilden (kräver root)
Begränsningen du har är att båda filsystemen av uppenbara skäl är skrivskyddade.
2- Skrivskyddade squashfs
Anta att vi har en mapp med bilder och/eller videor som är organiserad efter vilket år den togs. Uppenbarligen är det ganska osannolikt att vi vill ändra data som finns i mappar från tidigare år. Det är där Squashfs kommer in i bilden. Squashfs är ett skrivskyddat komprimerat filsystem, så när bilden är gjord, Vi kommer inte att kunna ändra data inuti.
Så inte ensam vi kommer att spara enorma mängder utrymme, men den märkliga effekten kommer också att inträffa att läsa filerna går snabbare, genom att behöva läsa mindre filer, eftersom att dekomprimera en fil numera är en minimal ansträngning för de flesta processorer.
Om vi lämnar ingressen åt sidan, för att skapa squashfs-bilden måste vi använda kommandot mksquashfs, vars syntax är enkel:
mksquashfs directorio 1 [directorio 2 directorio 3...] imagen.sqsfs -comp [algoritmo de compresión] -b [tamaño del bloque ]
Och här ett praktiskt exempel:
mksquashfs fotos-2009 fotos-2010 fotos-2011 fotos-2012 fotos-2013 fotos_2009-2013.sqsfs -comp xz -bs 1M
Tja, den valda algoritmen är xz eftersom det är den som högre kompressionsförhållande erbjudanden (av de tillgängliga), medan den valda blockstorleken är den maximala. som möjliggör bättre kompressionsresultat (standard är 64KiB).
Nu borde vi kunna montera den med en enkel ;
mount fotos_2009-2013.sqsfs fotos_2009-2013/
Efter att ha kontrollerat att allt är korrekt kan vi ta bort originalfilerna eller lämna filen som en säkerhetskopia.
Om vi vill att det ska monteras när operativsystemet startas, måste vi lägga till en rad så här till /etc/fstab:
/dir/loop.sqsh /dir/mountdir squashfs ro,defaults 0 0
Nu, vad händer när vi vill lägga till eller ta bort filer, eller helt enkelt extrahera dessa ögonblicksbilder? Tja, vi har kommandot kommandot unsquashfs.
unsquashfs [opciones] snapshot.sqfs [Directorios o archivos que extraer]
Som standard kommer den att använda squashfs-root som extraktionskatalog. kan ändras med alternativet -d
- live-cd
- inbyggda system
- servrar
- I allmänhet alla skrivskyddade system
3-"Nödbyte"
Föreställ dig att du av någon anledning (dvala, massiva sammanställningar...) behöver extra byte. Det är här loopfilen kommer in i spelet, första steget är att göra en tom fil av en viss storlek, med en viss blockstorlek, det gör vi med kommandot dd:
dd if=/dev/zero of=loop bs=1M count=512
I det här fallet är blocket en MiB och filstorleken är 512 MiB. Det behöver inte vara så här.
Vi skapar och aktiverar bytet med detta kommando
mkswap loop && swapon loop
Tänk på att prestandan för en loopfil alltid är något lägre än en riktig fysisk.
4-Gör vad du vill
Detta är bara några av de mest karakteristiska exemplen, experimentera gärna med chroots, krypterade system, kapslade loopsystem... Dess möjligheter är obegränsade. Men var försiktig med kommandona du kör, tänk efter innan du trycker på enter.
Länkar av intresse
- squashfs wikipedia
- man mksquashfs
- man unsquashfs
- iso 9960 wikipedia
- udf wikipedia
- vfs wikipedia
- loop wikipedia
Bra inlägg che!! Jag har några gigantiska säkerhetskopior liggandes och det föll mig aldrig in att komprimera dem. Jag ska använda den här och kryptera min externa för att fylla i den och sedan kom jag ihåg att jag skulle kryptera den 🙁
Intressant att prova squashfs
Bra handledning, jag hade läst hur man skapar img-filer med dd och monterar dem, men jag kände inte till användningen av Squashfs och dess komprimering; Även om det inte tillåter dig att ändra dess innehåll, kan det vara användbart i situationer som de du nämner. Tack för att du delar med dig, hälsningar.
Mycket bra att veta, tack för tipset.
Man lär sig alltid något nytt. Excellent!
Det är roligt, jag visste squashfs och vad det är till för, men det hade aldrig fallit mig in att komprimera mina bilder. Tack för tipset.
Imponerande, låt oss prova och se vad som händer. Mycket bra tips
utmärkt tutorial!!! =) …mycket bra tips!!!
Hej roader. Mycket intressant artikel, tack för att du delar med dig.
i Gentoo behöver du aktivera stöd för SquashFS i kärnan innan du kompilerar den, jag ska prova det och se hur det fungerar. Tack.
testade på Gentoo och kompilerade kärnan för det och utmärkt.
Rätta bara ett litet stavfel, roader.
I exemplet:
mksquashfs photos-2009 photos-2010 photos-2011 photos-2012 photos-2013 photos_2009-2013.sqsfs -comp xz -bs 1M
spara s för "-bs" (som bestämmer storleken på blocket), bör det se ut så här:
mksquashfs photos-2009 photos-2010 photos-2011 photos-2012 photos-2013 photos_2009-2013.sqsfs -comp xz -b 1M