Объединить изменения в верхнюю файловую систему, чтобы снизить файловую систему в Linux Overlay (OverlayFS) mount

Я хотел бы иметь возможность объединить изменения из верхней файловой системы оверлейного монтирования в более низкую файловую систему.

Меня интересуют как онлайн (т. Е. Сливаются при наложении), так и в автономном режиме (размонтировать наложение и затем объединить) решения.

Я нашел пару автономных решений, которые я добавил в качестве ответов.

Кто-нибудь знает какие-либо онлайн- решения? Было бы неплохо иметь команду типа «commit», которую вы могли бы запустить, чтобы объединить слои, пока оверлей все еще установлен.

Что-то вроде этого было задано в следующих вопросах без ответа:

  • Есть ли способ изменить один файл и синхронизировать его с нижним каталогом в OverlayFs?
  • Как изменить нижний файл через каталог OverlayFS?
  • OverlayFS Плавно редактирует файл в нижнем каталоге
  • OverlayFS – Как сделать изменения в верхней файловой системе постоянными без размонтирования?

Комментарии в этих сообщениях предлагают различные mergerfs и bcache , оба из которых решают конкретные варианты использования, но не общий пример использования файлов-агностиков, которые предоставляют оверлеи.

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

У меня есть подозрение, что современный mainline Linux обладает всеми необходимыми функциями, чтобы сделать это встроенным, благодаря всем новинкам песочницы / виртуализации за последние несколько лет, если бы я знал, как их использовать.

3 Solutions collect form web for “Объединить изменения в верхнюю файловую систему, чтобы снизить файловую систему в Linux Overlay (OverlayFS) mount”

Я нашел проект overlayfs-tools, который реализует полезный набор инструментов (diff, merge и vacuum). Это требует, чтобы наложение было размонтировано, поэтому это автономное решение.

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

Другое автономное решение, которое я придумал, это использовать rdiffdir для создания патча с установленным наложением, затем отключить и применить его. Это решение требует промежуточного этапа хранения патча где-то в то же время (либо на диске, либо в ramdisk / tmpfs).

Попытка интернет- решения, но его не совсем там.

Настройка (в каталоге /tmp , с правами root):

LOWER=$HOME mkdir u1 w1 o1 O mount -t overlay overlay -o lowerdir=$LOWER,upperdir=u1,workdir=w1 o1 mount --bind o1 O

Затем вы можете работать в директории O , которая накладывается над $LOWER . Когда вы хотите сделать снимок:

mkdir u2 w2 o2 mount -t overlay overlay -o lowerdir=o1,upperdir=u2,workdir=w2 o2 (Обратите внимание, что вложенные наложения, подобные этому, не будут работать на старых ядрах).

Но тогда я хочу каким-то образом атомически изменить привязку привязки в точке O чтобы указать на o2 вместо o1 . Я не знаю, как это сделать, кроме: umount O mount --bind o2 O ( Не атомарно , есть окно, где O размонтируется).

В идеальном случае запущенные процессы могут продолжаться, не зная, что базовая файловая система O изменилась с o1 на o2 . Я не знаю, возможно ли это, или может ли изменение базовой файловой системы O как это, слишком сильно нарушит открытые приложения. Мне нужно исследовать дальше.

Затем, как только O будет перенаправлен на o2 , мы можем повторно установить o1 только для чтения в качестве меры предосторожности, а затем выполнить автономное слияние, используя, например, инструменты rdiffdir или overlayfs.

Наконец, мы хотели бы каким-то образом lowerdir=$HOME,upperdir=u2,workdir=w2 перестройку o2 как lowerdir=$HOME,upperdir=u2,workdir=w2 так что o1 , u1 и w1 (все теперь пустые dirs) могут быть удалены. Опять же, я не знаю, возможно ли это.

В противном случае мы можем добиться моментальных снимков, просто вложив вложения наложения глубже и глубже, оставив наложения и верхние диски для каждого монтируемого без попытки слияния или очистки. Но, вероятно, существует ограничение на количество вложенных наложений, которые можно установить. И в какой-то момент нам еще нужно объединить слои вниз, если мы хотим сохранить изменения.

Linux и Unix - лучшая ОС в мире.