января 17 2008 09:56 пп

Зачем линуксоиду архиваторы, или Ставим SquashFS

Как скажет любая поисковая система, SquashFS — это сжатая файловая система, разработанная для удобного и компактного хранения файлов с быстрым доступом к ним. Разработанная прежде всего для создателей LiveCD (Knoppix-based LiveCD), может пригодиться и простому линуксоиду благодаря высокой степени сжатия, скорости доступа и удобству работы.

Архиватор vs SquashFS
Всем когда-нибудь требовалось архивировать свои файлы, и для этого уже давно разработаны утилиты типа gzip, bzip2, rar, arj... Одни из них быстрее, другие обладают высокой степенью сжатия, некоторые архиваторы избирательны (заточены на сжатие текста или графики), другие претендуют на универсальность. Так зачем нужены сжатые файловые системы?

Архиватор
Так или иначе, архиваторы создают из предъявленных ему данных сжатый файл. Прекрасно, данные заархивированы и положены на хранение. Теперь нам захотелось просмотреть архив. Есть много файловых менеджеров, которые умеют входить внутрь архивов и дают возможность работать со сжатыми файлами, как с обычными. Однако чтобы перечитать архив, требуется время (попробуйте зайти внутрь архива ядра linux.*.*.tar.gz — это будет не быстро). А теперь нам надо из архива вытащить один или несколько файлов. Здесь часто архиватору приходится распаковывать предыдущие и лишь после этого получаем нужный файл. Стоит ли говорить, что это занимает лишнее время.
Теперь нужно добавить в архив файлы. Вот тут без перепаковки всего архива не обойтись. Долго, муторно, неудобно. К тому же некоторые архиваторы, особенно rar, «забывают» права доступа к файлам, что в Linux совсем ни в какие рамки не лезет. Или нам хочется создать свой загрузочный диск с подборкой нужного софта. Да, можно скачать чужие LiveCD, а можно создать свой собственный. Если приблизительно подсчитать, сколько софта на том же Knoppix, можно ужаснуться: ну и как такой объём впихнул Клаус Кноппер в маленький диск?
SquashFS
Очень просто. Специальной утилитой mksquashfs создаётся файл со сжатой файловой системой SquashFS. Далее, при необходимости, этот файл прикручивается (монтируется) на петлевое устройство (loop) и в точке монтирования видим наши файлы. Быстро и удобно, что особенно ценно при разборе старых архивов.
Степень сжатия, как правило, выше, чем у tar.gz при ощутимо более высокой скорости сжатия и несравненном удобстве пользования. Это уже оценили создатели LiveCD и ушлые пользователи. Если требуется извлечь файл — без проблем, просто копируем его куда нам нужно. Скорость чуть ниже, чем при обычном копировании, больше нагрузка на процессор (всё-таки декомпрессия архива), но по сравнению с архиваторами — небо и земля. Нужно добавить файлы? Не вопрос: указываем mksquashfs целью старый архив и происходит дописывание данных в конец, безо всякой перепаковки. Просто и удобно. Единственное, чего нельзя — это переписать файлы «на лету»: файловая система SquashFS только для чтения. Приходится дописывать в архив файлы.

Достоинства и недостатки
Конечно, при всех достоинствах SquashFS обладает и недостатками. Архивы нужно каждый раз примонтировать и отмонтировать, обновление — дописыванием в конец или перепаковкой; кроме того, для использования нужен патч на ядро, который есть не для всех версий ядер. Компрессия больших файлов (несколько гигабайт) отнимает большое количество памяти. Зато для маленьких файлов это ценная находка: выкачанный из интернета сайт легко и быстро сжимается в один архив, а потом его можно легко читать броузером, указав точку монтирования.

Установка SquashFS
Если вы заинтересовались возможностями SquashFS и хотите его установить, то вам потребуются исходники ядра, установленный gcc, утилита patch и скачанный с сайта http://squashfs.sourceforge.net/ архив с патчем на ядро и исходниками mksquashfs. Поддерживаются последние ядра 2.4.х и ветка 2.6 начиная с 2.6.8 Можно включить поддержку SquashFS в ядро монолитно или модулем — накладываем патч на ядро:

#patch -p1 -i squashfs-patch

и вызываем make menuconfig. Теперь в разделе «File systems», «Miscellaneous file systems», должна появиться строчка «Squashed filesystem», которую можно поставить как модуль или вкомпилировать в ядро. Надеюсь, как компилировать ядро, вы знаете, а если что-то забылось — освежить знания можно тут.
Так же следует включить поддержку «Loopback device support» в секции «Device drivers»section, «Block devices» подсекции. Для более подробной справки идём сюда. Собрав ядро и перезагрузившись, компилируем mksquashfs:

# cd /usr/src/squashfs/squashfs-tools
# make # cp mksquashfs /usr/sbin

Для этого потребуются пакеты zlib*, которые потребуется установить. Скомпилированные однажды утилиты mksquashfs и прочие можно переносить с компьютера на компьютер — и они будут работать.
Чтобы создать архив из файлов в директории /temp потребуется ввести:

mksquashfs temp temp.sq

Расширение добавляется для удобства — оно может быть любым или вообще отсутствовать. Лишь бы вам было понятно, что это архив. Увидеть и работать с файлами можно, прикрутив на петлевое устройство архив штатными средствами любой *никс системы:

mount -t squashfs temp.sq /mnt/squash -o loop

Далее работаем с файлами, как обычно. После использования не забываем отмонтировать.

Что ещё почитать по Squashfs
http://www.linux.org/docs/ldp/howto/SquashFS-HOWTO/gettingready.html
http://tldp.org/HOWTO/SquashFS-HOWTO/mksqoverview.html
http://ldp.linux.by/HOWTO/SquashFS-HOWTO/whatis.html
Оригинал: http://mydebianblog.blogspot.com/2006/08/squashfs.html





Комментариев нет »


Trackback URI | Comments RSS

Leave a Reply

You must be logged in to post a comment.


« | »

  • Реклама

  • Ссылки



  • Теги



Server load average: 0.10, 0.04, 0.00
Server uptime: 47 days, 4:02
Your IP is: 54.234.247.118.