|
2.6, techniX (?), 11:30, 04/12/2006 [^] [^^] [^^^] [ответить] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
Я вот использую unionfs для создания модулей расширения в LiveCD-дистрибутиве Frenzy (в devel-версии).
Основная файловая система находится на CD и, естественно, read-only. Добавить туда софт нереально. Но хочется же :) Поэтому мы делаем модуль расширения - образ файловой системы, содержащий нужные файлы, лежащие в нужных местах - и монтируем его поверх основной файловой системы. Более того, поверх всего этого мы монтируем RAM-диск, что позволяет создать иллюзию записи в основную файловую систему - все изменения в ней будут храниться в RAM-диске и после перезагрузки будут потеряны.
Жаль только, что последний патч для 6.x (unionfs-p16) не подходит для FreeBSD 6.2-PRERELEASE. А переходить на 7-CURRENT как-то пока не хочется...
| |
|
|
2.4, GateKeeper (??), 10:47, 04/12/2006 [^] [^^] [^^^] [ответить] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
как нетрудно догадаться - пример неудачный. NULLFS != UNIONFS.
Привожу свой:
имеем: NFS-доступный каталог с дистфайлами портов на сервере (обновляется редко) и локально каталог /usr/ports/distfiles, где есть несколько файлов, причём эти несколько файлов соответствуют нашему дереву портов, а в NFS-хранилище очень много файлов соответсвуют текущему дереву в силу малой частоты обновления нужных нам портов (или их части).
Монтируем: mount_nfs server:/usr/ports/distfiles /mnt/net-distfiles
mount_unionfs -b /mnt/net-distfiles /usr/ports/distfiles
Имеем: полное дерево портов с дистфайлами, новые файлы будут создаваться локально (удобно, если NFS-каталог для нас read-only), любое изменение, затрагивающее файлы, расположенные в NFS-каталоге, приведёт к копированию этих файлов на локальное хранилище (у нас - /usr/ports/distfiles) с последующим применением изменений. Эти исключения описаны параграфом в mount_unionfs(8). В остальном поиск такой: сначала поиск в upper layer (это первый параметр), затем в lower layer (это второй параметр). При удачном поиске в lower layer идёт "теневое зеркалирование" файла на upper layer (без копирования), затем проведение операций открытия файлов и работы с ними. Ключ -b приводит к инверсии lower layer и upper layer.
В примере выше nullfs сделала бы недоступными файлы, находящиеся в каталоге, в который производится монтирование. "Слить без копирования" два каталога в один при помощи nullfs нельзя. | |
|
|