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

1C 3d Acer action 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 blender bluetooth bsd c C++ Canonical cd Cedega CentOS chrome cisco clamav CLI Damn Small Linux debian Dell desktop dns DOOM DOS driver dvd Eclipse embedded linux enterprise Etersoft exim ext2 ext3 ext4 faq fedora fedora10 fedora8 fedora9 fedoracore firefox firefox3 firewall Flash Fluxbox flv FreeBSD freeware ftp fuse games gcc gentoo GIMP gnome GNU gnu linux google GPL GRUB gtk GTK+ hdd holywar HP html IBM icq install install fest Intel internet ipod iptables iptv iso itunes Jabber


логин :  
пароль :  
 
 
Регистрация
Напомнить пароль?

«    Октябрь 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
 

Gnome vs KDE?

Gnome
KDE
other...



А на форуме:





Рейтинг блогов



Партнёры:


 

Архив:

Май 2010 (1)
Апрель 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)


Пример использования 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

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


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

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

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




  • Информация

    Посетители, находящиеся в группе Посетители, не могут оставлять комментарии в данной новости.

    [root@linuxopen.ru ~]$ find