|
||||||||||||||||||||||||||||||||||||||
![]()
Mobile LinuxOpen (test version) |
Пример использования squashfsМне нравится:
Кое-кто наверняка слышал про squashfs. Это сжатая файловая система, которую обычно используют на LiveCD.
Понадобилось мне сжать систему на моем EeePC (что бы уложиться в 2Гб SD-флешку), и нашел я вот такую заметку (на английском). Сейчас сделаем почти так же, но в более расширенном варианте. Основная суть этого метода - сжимать не всю файловую систему, а только выборочные папки (/usr например). Если сжать все, то придется изменять initrd, что бы система продолжала загружаться. А если только /usr, то изменения минимальны. Но как быть с записью, ведь squashfs только для чтения? А на этот случай есть подключаемая файловая система unionfs. Сначала "подключаем" в /usr наш сжатый образ (только для чтения), а потом поверх какую нибудь папку, уже с возможностью записи. И тогда все изменения будут храниться в отдельной папке. Для поддержки Squashfs в официальном linux-ядре потребуются патчи патчей. Итак начнем. Это можно делать прямо из рабочей системы, пока ничего необратимого не делаем. Код:
mkdir -p /.filesystems/usr/overlay #Создаем сжатый образ /usr mksquashfs /usr /.filesystems/usr/usr.sqfs Что бы модули этих файловых систем загружались автоматически добавляем в /etc/modules: Код:
squashfs loop И в файл /etc/fstab добавляем точки монтирования Код:
unionfs /usr unionfs nodev,noatime,dirs=/.filesystems/usr/overlay=rw:/usr=ro 0 0 Первая строка - простое монтирование сжатого образа, а вторая - добавление overlay-папки через unionfs. В папке /usr будут лежать все файли из образа, и /.filesystems/usr/overlay. А если создать в /usr файл, то он появится в /.filesystems/usr/overlay. Далее перезагружаемся, если все нормально, то можно загрузиться с LiveCD (или чистой консоли), и удалить/переместить содержимое /usr, пустая папка /usr должна остаться. Результаты
Как видно, даже при сжатии только usr, система стала в 2 раза меньше. Если сжать всю систему, а не только usr, то получится 600мб. Производительность А теперь оценим как быстро все это работает. Для этого просто сравним время распаковки образа, с копированием /usr. Код:
#!/bin/bashРезультаты
Как видите, после сжатия даже стало работать быстрее, за счет того, что не нужно возиться с мелкими файлами. Еще быстрее можно сделать, если использовать приоритеты (порядок, в каком файлы кладутся в архив), это можно сделать через опцию -sort. Это полезно не только на LiveCD, ведь архив распаковывается блоками по 100кб, туда влезет 50-100 мелких файлов, и если они потребуются по порядку, то прирост скорости будет немалый. Take World
Похожие статьиКомментировать: |
|||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||