Вопрос или проблема
Я хочу смонтировать следующие каталоги, используя overlayfs:
(lowerdir) /chroot в /merged
(lowerdir) /home в /merged/home
(upperdir) /tmpfs в /merged
…чтобы результирующий объединенный каталог был системой COW, содержащей и /chroot, и /home.
Не могу найти способ сделать это.
1) Попытка использовать несколько нижних каталогов:
mount -t overlay -o lowerdir=/chroot:/home,upperdir=/tmpfs,workdir=/workdir overlay /merged
ls /merged
==> неудача, содержимое /home объединяется с содержимым /chroot непосредственно в /merged, не попадая в подкаталог /merged/home.
2) Попытка использовать bind-монтажи:
mount --bind /home /chroot/home
mount -t overlay -o lowerdir=/chroot,upperdir=/tmpfs,workdir=/workdir overlay /merged
ls /merged/home
==> пусто, содержимое субмонта /chroot/home не отображается в /merged/home.
Есть идеи? Спасибо.
Я столкнулся с этой проблемой сегодня вечером, однако я использовал /
, /usr
, /var
в качестве теста, так как хотел захватить изменения в файловой системе при установке пакета и изолировать их из ‘upperdir’ OverlayFS.
Я понял, что OverlayFS не предназначен для этого, затем вспомнил о unionfs-fuse… Также заметил, что OverlayFS может использовать сам себя в качестве lowerdir
, поэтому попробовал использовать unionfs-fuse, и это сработало.
Имейте в виду, что это просто быстрая лабораторная проверка концепции, и вам, вероятно, придется подкорректировать параметры unionfs-fuse для ваших нужд…
mkdir merged union upper work
sudo unionfs-fuse /=RO:/usr=RO:/var=RO:/home=RO union
sudo mount -t overlay overlay -olowerdir=union,upperdir=upper,workdir=work merged
sudo echo test > merged/newtestfile
ls merged/newtestfile # существует
ls upper/newtestfile # существует
В целом, решение немного сложное/извращенное, но, похоже, работает, по крайней мере, для того, чтобы изолировать изменения, которые можно было бы извлечь из каталога ./upper.
Одно из решений — создать отдельный overlay, который должен оказаться как /chroot/home
в другом месте, а затем примонтировать его поверх overlay для /chroot
Мы внесли решение в:
http://bazaar.launchpad.net/~ltsp-upstream/ltsp/ltsp-trunk/revision/2652
Ответ или решение
Для решения задачи с монтированием Lowerdir в определенную поддиректорию с использованием OverlayFS, вашему вниманию предлагаются подробные инструкции. Основная цель заключается в том, чтобы содержимое каталогов /chroot
и /home
было доступно через систему Copy-on-Write в /merged
, при этом /home
должно отображаться в /merged/home
.
Шаги по настройке OverlayFS
-
Использование unionfs-fuse:
OverlayFS не предназначен для вашей задачи в стандартной конфигурации, так как она выполняет слияние, не сохраняя структуру подкаталогов. В этом случае подходящим решением может стать применениеunionfs-fuse
. Этот инструмент позволяет объединять разные файловые системы с поддержкой чтения и записи. -
Установка unionfs-fuse:
Для начала необходимо установитьunionfs-fuse
. В большинстве дистрибутивов Linux это можно сделать командой:sudo apt-get install unionfs-fuse
-
Создание структуры каталогов:
Создайте необходимые каталоги, которые будут использованы как точки монтирования и рабочие директории:mkdir /union /upper /work /merged
-
Команда для монтирования с помощью unionfs-fuse:
Используйте следующую команду для объединения директорий в одном слое:sudo unionfs-fuse /=RO:/usr=RO:/var=RO:/home=RO /union
-
Настройка OverlayFS:
Теперь, используя результат предыдущей команды как нижний уровень, вы можете монтировать OverlayFS:sudo mount -t overlay overlay -o lowerdir=/union,upperdir=/upper,workdir=/work /merged
-
Проверка работы:
Протестируйте создание и перемещение файлов для уверенности, что все настройки применены корректно:echo "test file" > /merged/newtestfile ls /merged/newtestfile # Этот файл должен существовать ls /upper/newtestfile # Этот файл должен также появиться здесь
Дополнительные соображения
- Изоляция изменений: Этот подход помогает отделить изменения в файловой системе, что особенно полезно в тестовых средах или при управлении конфигурациями.
- Гибкость настройки: Благодаря
unionfs-fuse
, вы получаете более гибкие возможности настройки, которые иным образом недоступны при использовании только OverlayFS.
Заключение
Таким образом, использование unionfs-fuse
в сочетании с OverlayFS предоставляет эффективное решение для монтирования дерева каталогов с сохранением требуемой структуры поддиректорий. Этот метод компенсирует ограничения OverlayFS и идеально подходит для задач изолирования и управления изменениями в различных средах.
Для поддержания работоспособности внутренней структуры данных и облегчения удобства пользователя, обязательно протестируйте конфигурацию в безопасных условиях, прежде чем применять ее в производственной среде.