LINUX-BG   Адрес : http://www.linux-bg.org
SquashFS
От: ivo
Публикувана на: 25-02-2007
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=devs&key=390794693
SquashFS е компресирана файлова система само за четене.
Актуалната версия е  squashfs3.2-r2 /15 януари 2007/.  
http://sourceforge.net/projects/squashfs
В  SquashFS всичко е компресирано със zlib компресия:  
файловете,структурите от данни ,съдържащи  информация за
файловете / inodes / , директориите.
Някои по-важни характеристики на  SquashFS са:
-запазване на  User Identification /  Group ID (32 бита);
-запазване на времето на създаване на файла;
-на теория , файлове до 2^64 байта се подържат;
-на теория , файловата система може да съдържа   до 2^64  
байта;
-средната дължина на inodes е 8 бита , inodes и директориите
се записват с много висока компресия /на байт граница/.
-използва блокове  с размери до 64К /64К е по подразбиране/;
-дублираните файлове се премахват;
-подържа  big и  little endian байтов ред. Това значи ,че може
да монтира файлови системи ,направени на други модели
микропроцесори;

SquashFS е много „бърза“ файлова система. Ако желаем обаче
да извлечем максималното от нея , ще трябва да приложим LZMA
пачовете , с които ще можем да използваме   LZMA компресията.
Това ще доведе до 30% по добра компресия. Определено си
струва! Всичко е под GPL лиценз.
http://www.squashfs-lzma.org/
Като пример за използване на SquashFS с  LZMA поддръжка :
http://www.linux-live.org   -> changes

Как да включим поддръжката на SquashFS в ядрото.
Изтегляме последното стабилно ядро / linux-2.6.20.tar.bz2 / и
го разкомпресираме в директория /usr/src. Изтегляме препача за
ядрото „patch-2.6.21-rc1.bz2“ и „squashfs3.2-r2.tar.gz“.
От   squashfs3.2-r2.tar.gz  ни трябва
пача  ../squashfs3.2-r2/kernel-patches/linux-2.6.20/squash3.2-patch ,слагаме
го в /usr/src.
Подготвяме си и другите пачове ,ако са ни необходими /unionfs,
aufs или други/.
#cd  /usr/src/linux-2.6.20
Пачваме ядрото с препача:
#bzip2 -dc ../patch-2.6.21-rc1.bz2 | patch -p1
Прилагаме squashfs пача:
#patch -p1 <../ squash3.2-patch
Конфигурираме ядрото /маке xconfig/ ,като в „File
systems“->“Miscellaneous filesystems“ маркираме „SquashFS
3.2“.
Компилираме и инсталираме ядрото:
#make bzImage
#make install
/Тук аз рестартирам компютъра за да съм с новото ядро, с
„uname -r“ проверявам версията на ядрото,не е задължително
обаче/
#make modules
#make modules_install
#modprobe squashfs /ако сме го компилирали като модул/.

За да компилираме „tools“:
#cd ..../squashfs3.2-r2/squashfs-tools/
#make
Няма „make install“ ,затова преместваме „mksquashfs“
и “unsquashfs“ в някоя от директорите, от нашия
„PATH“,например
/usr/local/sbin.
След като сме готови , нека да експериментираме,да видим дали
е добра тази файлова система. Първо ще го сравним с „tar“.Нека
компресираме сорса на ядрото ,сега не ни трябва.
cd /usr/src

1.#tar -zcvf linux-backup-2.6.20.tar.gz linux-2.6.20
-> 89.8 Mbyte2мин.8 сек.

/формата е: mksquashfs source1 source2 ... destination
[options]/
2.#mksquashfs  linux-2.6.20  linux-backup-2.6.20-sqfs
-> 89Mbyte,2мин.10 сек.

Дотук еднакво./без LZMA компресия сме,squashfs използва zlib/.
Да възстановим:
#unsquashfs  -d linux-2.6.20 linux-backup-2.6.20-sqfs -> 21
секунди.
#tar -xzvf  linux-backup-2.6.20.tar.gz -> 22 секунди.

И все пак има предимствата. Например за защита на информация.
Едно е да имаме директория „101msdcf“ с снимки ,друго файл с
име снимки ...
#mksquashfs 101msdcf  snimki_album1
които винаги са ни подръка:
#mkdir /mnt/snimki
#mount -t squashfs /път_до_файла/snimki_album1 /mnt/snimki -o
loop
Разбира се ,всичко това е само илюстрация на командите ,как
работят , „истинската сила“ на Squashfs е като файлова
система. В сорса на  Squashfs има файл „PERFORMANCE.README“
,който дава сравнителни тестове с ext3,cramfs,cloop,Zisofs.
Категорично и безапелационно предимство на  Squashfs. Това
са неофициални данни ,попаднах и на подобни в Интернет, но
имам и резерви / „cramfs“ например е за съвсем друга работа /.
„Slax“,http://www.slax.org/ ,е прекрасен пример за качествата
на „squashfs“.
Очаква се скоро „squashfs“ да стане част от стабилното ядро.







<< | Програмиране графичен интерфейс (GUI) с Lazarus и freepascal >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 0 wallclock secs ( 0.13 usr + 0.02 sys = 0.15 CPU)