новости книги игры
библиотека программы форум

11.05 11.10 1C 2010 2011 3d Acer action Additional Adobe alt linux ALT линукс в школу altlinux amarok AMD Android Apache apple apt-get ArchLinux asplinux ASUS Asus Eee PC ATI audio avi backup bash beta big buck bunny bind bittorrent blender bluetooth bsd c C++ Calibre Canonical cd Cedega CentOS chrome chromium cisco clamav CLI Damn Small Linux debian Dell desktop dns DOOM DOS download driver dvd e-book Eclipse emacs embedded linux enterprise EPUB Etersoft exim ext2 ext3 ext4 faq FB2 fedora fedora10 fedora8 fedora9 fedoracore firefox firefox3 firewall Flash Fluxbox flv free FreeBSD freeware ftp games gcc gentoo GIMP gnome GNU gnu linux google GPL GRUB gtk GTK+ hackday hdd HDR


   

«    Октябрь 2008    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

Какой браузер вы используете?

Firefox
Opera
Mozilla
Internet Explorer
Другой



LinuxTwitter:




Архив:

Октябрь 2011 (91)
Октябрь 2010 (42)
Апрель 2010 (10)
Январь 2010 (29)
Декабрь 2009 (6)
Ноябрь 2009 (31)
Октябрь 2009 (20)
Апрель 2009 (19)
Март 2009 (1)
Февраль 2009 (20)
Январь 2009 (31)
Декабрь 2008 (71)
Ноябрь 2008 (89)
Октябрь 2008 (91)
Сентябрь 2008 (113)
Август 2008 (168)
Июль 2008 (156)
Июнь 2008 (147)
Май 2008 (191)
Апрель 2008 (213)
Март 2008 (197)
Февраль 2008 (195)
Январь 2008 (112)
Декабрь 2007 (146)
Ноябрь 2007 (94)




Партнёры:


 

Добавить в Google Reader
Читать в Yandex.Ленте
Mobile LinuxOpen (test version)

Пример использования squashfs 

 Мне нравится:


 

alt
Сегодня я покажу как сжать часть файловой системы, и при этом не потерять возможности записи. А потом посмотрим как быстро все это работает.

Кое-кто наверняка слышал про squashfs. Это сжатая файловая система, которую обычно используют на LiveCD.
Понадобилось мне сжать систему на моем EeePC (что бы уложиться в 2Гб SD-флешку), и нашел я вот такую заметку (на английском). Сейчас сделаем почти так же, но в более расширенном варианте.
Основная суть этого метода - сжимать не всю файловую систему, а только выборочные папки (/usr например). Если сжать все, то придется изменять initrd, что бы система продолжала загружаться. А если только /usr, то изменения минимальны.

Но как быть с записью, ведь squashfs только для чтения? А на этот случай есть подключаемая файловая система unionfs. Сначала "подключаем" в /usr наш сжатый образ (только для чтения), а потом поверх какую нибудь папку, уже с возможностью записи. И тогда все изменения будут храниться в отдельной папке.

Для поддержки Squashfs в официальном linux-ядре потребуются патчи патчей.

Итак начнем. Это можно делать прямо из рабочей системы, пока ничего необратимого не делаем.
Код:
#создаем overlay-папку, куда будут писаться изменения
mkdir -p /.filesystems/usr/overlay
#Создаем сжатый образ /usr
mksquashfs /usr /.filesystems/usr/usr.sqfs

Что бы модули этих файловых систем загружались автоматически добавляем в /etc/modules:
Код:
unionfs
squashfs
loop

И в файл /etc/fstab добавляем точки монтирования
Код:
/.filesystems/usr/usr.sqfs /usr squashfs ro,loop,nodev 0 0
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 1300Мб -> 520Мб
Вся система 1600Мб -> 840Мб

Как видно, даже при сжатии только usr, система стала в 2 раза меньше. Если сжать всю систему, а не только usr, то получится 600мб.

Производительность
А теперь оценим как быстро все это работает.
Для этого просто сравним время распаковки образа, с копированием /usr.
Код:
#!/bin/bash
#создаем временные точки папки
mkdir mp target target2
#монтируем образ
sudo mount /.filesystems/usr/usr.sqfs mp -o loop
#время распаковки
time cp -R mp/* target
#время несжатой стсиемы
time cp -R target/* target2

Результаты

Сжатая 2:05 0%
Несжатя 3:12 +50%

Как видите, после сжатия даже стало работать быстрее, за счет того, что не нужно возиться с мелкими файлами.
Еще быстрее можно сделать, если использовать приоритеты (порядок, в каком файлы кладутся в архив), это можно сделать через опцию -sort. Это полезно не только на LiveCD, ведь архив распаковывается блоками по 100кб, туда влезет 50-100 мелких файлов, и если они потребуются по порядку, то прирост скорости будет немалый.

Take World

источник статьи   


9 октября 2008  /   /   ]

Похожие статьи

  • Как сделать маленький LiveCD "вручную"
  • mhddfs: объедините несколько реальных файловых систем в одну большую
  • Мой Linux часть 4
  • Делаем образы дисков с помощью dd и gzip
  • Работа с ISO-образами в GNU/Linux из консоли




  • Комментировать:



    [root@linuxopen.ru ~]$ find
     ©2007 - 2011 @antropoff.ru