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