от ivo(25-02-2007)

рейтинг (12)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

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 >>