Unionfs: различия между версиями
(Import from freesource.info) |
(пометка к викификации + bugfix) |
||
Строка 1: | Строка 1: | ||
{{ | {{викифицировать}} | ||
Как этим пользоваться: | Как этим пользоваться: | ||
* поставить нужный пакет | * поставить нужный пакет | ||
* в зависимости от | * в зависимости от задачи — создать unionfs readwrite branch или не создавать | ||
* смонтировать несколько | * смонтировать несколько branch’ей в один | ||
Например: имеем подмонтированный NFS как read-only в каталог <tt>/build</tt>, необходимо сделать данные в этом каталоге read-write. | Например: имеем подмонтированный NFS как read-only в каталог <tt>/build</tt>, необходимо сделать данные в этом каталоге read-write. | ||
Строка 26: | Строка 22: | ||
<pre>mkdir /tmp/build | <pre>mkdir /tmp/build | ||
mount -t unionfs -o dirs=/tmp/build=rw:/build=ro:/raid=ro null /build</pre> | mount -t unionfs -o dirs=/tmp/build=rw:/build=ro:/raid=ro null /build</pre> | ||
А вот более реальный пример. | А вот более реальный пример. | ||
Имеем: кучу жестких дисков, NFS | Имеем: кучу жестких дисков, NFS и т. д. | ||
Задача: выложить объединенную структуру на FTP (R/O) | Задача: выложить объединенную структуру на FTP (R/O) | ||
Строка 36: | Строка 32: | ||
Решение: | Решение: | ||
<pre>mount -t unionfs -o | <pre>mount -t unionfs -o | ||
dirs=/mnt/disk=ro | dirs=/mnt/disk=ro:/mnt/disk1=ro:/mnt/disk2=ro..../mnt/diskN=ro none /var/ftp</pre> | ||
Из известных ошибок: | Из известных ошибок: | ||
* невозможность удаления каталогов с ro | * невозможность удаления каталогов с ro branch’ем на squashfs | ||
* проблемы с переносом (mv) массы симлинков, реально расположенных на r/o | * проблемы с переносом (mv) массы симлинков, реально расположенных на r/o branch’е | ||
Все остальное вроде как работает. | Все остальное вроде как работает. | ||
Также в Sisyphus лежат <tt>unionfs-utils</tt>, предоставляющие возможность на лету добавлять/удалять | Также в Sisyphus лежат <tt>unionfs-utils</tt>, предоставляющие возможность на лету добавлять/удалять branch’и, включать/отключать режим отладки. | ||
Дополнительная документация: <tt>man unionfs; man unionctl; man uniondbg</tt>. | Дополнительная документация: <tt>man unionfs; man unionctl; man uniondbg</tt>. | ||
Строка 51: | Строка 47: | ||
* testcase на C или shell | * testcase на C или shell | ||
* логами ядра, от подмонтированного unionfs с опцией debug=19 | * логами ядра, от подмонтированного unionfs с опцией debug=19 | ||
* информацией о ядре и файловых системах | * информацией о ядре и файловых системах branch’ей |
Текущая версия от 20:47, 17 сентября 2008
Как этим пользоваться:
- поставить нужный пакет
- в зависимости от задачи — создать unionfs readwrite branch или не создавать
- смонтировать несколько branch’ей в один
Например: имеем подмонтированный NFS как read-only в каталог /build, необходимо сделать данные в этом каталоге read-write.
Создаем каталог для rw branch:
mkdir /tmp/build
монтируем:
mount -t unionfs -o dirs=/tmp/build=rw:/build=ro null /build
Все. Данные в каталоге /build можно изменять (удалять, добавлять). При этом все изменения попадают в каталог /tmp/build/
Еще один пример, более странный ;-) Имеем: смонтированный через NFS (R/O) каталог /build, смонтированный через NFS (R/O) каталог /raid.
Задача: объединить дерево каталогов /build и /raid в /build, одновременно сделав /build как read-write с записью изменений в /tmp/build
mkdir /tmp/build mount -t unionfs -o dirs=/tmp/build=rw:/build=ro:/raid=ro null /build
А вот более реальный пример.
Имеем: кучу жестких дисков, NFS и т. д.
Задача: выложить объединенную структуру на FTP (R/O)
Решение:
mount -t unionfs -o dirs=/mnt/disk=ro:/mnt/disk1=ro:/mnt/disk2=ro..../mnt/diskN=ro none /var/ftp
Из известных ошибок:
- невозможность удаления каталогов с ro branch’ем на squashfs
- проблемы с переносом (mv) массы симлинков, реально расположенных на r/o branch’е
Все остальное вроде как работает.
Также в Sisyphus лежат unionfs-utils, предоставляющие возможность на лету добавлять/удалять branch’и, включать/отключать режим отладки.
Дополнительная документация: man unionfs; man unionctl; man uniondbg.
Просьба в случае обнаружения ошибок вешать в нашу bugzilla на пакет unionfs, сопровождая:
- testcase на C или shell
- логами ядра, от подмонтированного unionfs с опцией debug=19
- информацией о ядре и файловых системах branch’ей