от ivo(25-02-2007)
рейтинг (11)
[ добре ]
[ зле ]
Вариант за отпечатване
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 >>
|