Как смонтировать lowerdir в определенный подкаталог с помощью overlayfs?

Вопрос или проблема

Я хочу смонтировать следующие каталоги, используя 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

  1. Использование unionfs-fuse:
    OverlayFS не предназначен для вашей задачи в стандартной конфигурации, так как она выполняет слияние, не сохраняя структуру подкаталогов. В этом случае подходящим решением может стать применение unionfs-fuse. Этот инструмент позволяет объединять разные файловые системы с поддержкой чтения и записи.

  2. Установка unionfs-fuse:
    Для начала необходимо установить unionfs-fuse. В большинстве дистрибутивов Linux это можно сделать командой:

    sudo apt-get install unionfs-fuse
  3. Создание структуры каталогов:
    Создайте необходимые каталоги, которые будут использованы как точки монтирования и рабочие директории:

    mkdir /union /upper /work /merged
  4. Команда для монтирования с помощью unionfs-fuse:
    Используйте следующую команду для объединения директорий в одном слое:

    sudo unionfs-fuse /=RO:/usr=RO:/var=RO:/home=RO /union
  5. Настройка OverlayFS:
    Теперь, используя результат предыдущей команды как нижний уровень, вы можете монтировать OverlayFS:

    sudo mount -t overlay overlay -o lowerdir=/union,upperdir=/upper,workdir=/work /merged
  6. Проверка работы:
    Протестируйте создание и перемещение файлов для уверенности, что все настройки применены корректно:

    echo "test file" > /merged/newtestfile
    ls /merged/newtestfile # Этот файл должен существовать
    ls /upper/newtestfile # Этот файл должен также появиться здесь

Дополнительные соображения

  • Изоляция изменений: Этот подход помогает отделить изменения в файловой системе, что особенно полезно в тестовых средах или при управлении конфигурациями.
  • Гибкость настройки: Благодаря unionfs-fuse, вы получаете более гибкие возможности настройки, которые иным образом недоступны при использовании только OverlayFS.

Заключение

Таким образом, использование unionfs-fuse в сочетании с OverlayFS предоставляет эффективное решение для монтирования дерева каталогов с сохранением требуемой структуры поддиректорий. Этот метод компенсирует ограничения OverlayFS и идеально подходит для задач изолирования и управления изменениями в различных средах.

Для поддержания работоспособности внутренней структуры данных и облегчения удобства пользователя, обязательно протестируйте конфигурацию в безопасных условиях, прежде чем применять ее в производственной среде.

Оцените материал
Добавить комментарий

Капча загружается...