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

Я хочу смонтировать следующие каталоги, используя overlayfs:

(lowerdir) /chroot in /merged
(lowerdir) /home   in /merged/home
(upperdir) /tmpfs  in /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) Попробовать крепления:

mount --bind /home /chroot/home
mount -t overlay -o lowerdir=/chroot,upperdir=/tmpfs,workdir=/workdir overlay /merged
ls /merged/home

==> пусто, содержимое / chroot /home submount не отображается в / merged / home.

Есть идеи? Спасибо.

3 ответа

Одним из решений является создание отдельного наложения для того, что должно закончиться как /chroot/home где-то еще, затем связать его поверх оверлея для /chroot

Я столкнулся с этой проблемой сегодня вечером, однако я использовал /, /usr, /var в качестве теста, так как я хотел записать изменения в файловой системе из пакета установки и удалить его из OverlayFS 'upperdir'.

Я понял, что OverlayFS не предназначен для этого, потом вспомнил про unionfs-fuse... Я также увидел, что OverlayFS может использовать себя как lowerdir, поэтому я сделал снимок с использованием unionfs-fuse вместо этого, и это сработало.

Имейте в виду, что это всего лишь быстрый "лабораторный" PoC-тест, и я уверен, что вы захотите немного изменить настройки 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 # exists
ls upper/newtestfile # exists

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

Мы зафиксировали решение в: http://bazaar.launchpad.net/~ltsp-upstream/ltsp/ltsp-trunk/revision/2652

Другие вопросы по тегам