Этот ответ и сообщение электронной почты указывают на то, что в Ubuntu 11.10 доступно что-то под названием «OverlayFS» и принудительно заменит aufs в Ubuntu 12.04.
Как мне это использовать? Где его документация?
filesystem
overlayfs
ændrük
источник
источник
mount -t overlayfs -o rw,uppderdir=x,lowerdir=y overlayfs /mount/point
. Помимо этого я невежественен. Я работаю с ним в живой системе, но мне пока не удалось заставить его работать. Хотелось бы мне узнать, что именно означают «upperdir» и «lowerdir». Я ничего не нашелОтветы:
Изменить: После написания этого ответа некоторые вещи изменились в overlayfs, а именно добавление обязательного параметра
workdir
, см . Ответ Totti ниже для подробного описания этого нового параметра.Мне наконец удалось найти это. Я нашел ссылки на него в исходном коде ядра, но по какой-то причине он не отображается в дереве git на kernel.org. Но! Если вы извлечете исходный код ядра Ubuntu следующим образом:
apt-get source linux-image-3.0.0-16-generic
вы можете найти его вlinux-3.0.0/Documentation/overlayfs.txt
. Он также доступен в пакете linux-doc в/usr/share/doc/linux-doc/filesystems/overlayfs.txt.gz
.Поскольку настоящая справочная документация - это скорее «как она работает», а не «как монтировать ее», вот краткое изложение (в документации по ядру есть один пример):
mount -t overlayfs -o [mount options] overlayfs [mountpoint for merged system]
Где [варианты монтирования] могут быть:
Поначалу меня смутила одна вещь, поэтому я должен пояснить, что монтирование оверлеев фактически не монтирует файловую систему. Я пытался смонтировать файловую систему squashfs с помощью монтирования overlayfs, но это не так. Сначала вы должны смонтировать (в моем случае squashfs) файловую систему в произвольный каталог, а затем использовать overlayfs для объединения точки монтирования (каталога) и другого каталога в третичный каталог (точку монтирования overlayfs) (edit: этот «третичный» каталог) на самом деле может быть каталогу upperdir =). Третичный каталог - это место, где вы увидите объединенные файловые системы (или деревья каталогов - это гибко).
Пример 1, наложение корневой файловой системы
Я работал над гибридным загрузочным диском Ubuntu, где базовая система Ubuntu существует в виде filesystem.squashfs, и у меня есть файлы с именами ubuntu.overlay kubuntu.overlay xubuntu.overlay и lubuntu.overlay. Файлы .overlay - это базовые установки указанных систем с сокращением содержимого filesystem.squashfs (для экономии места). Затем я изменил сценарии инициализации, чтобы наложить файл .overlay правильного дистрибутива (из параметра загрузки), используя overlayfs и вышеуказанные параметры, и он работает как шарм!
Это строки, которые я использовал в моих скриптах инициализации (после перевода всех переменных):
Обратите внимание, что файл filesystem.squashfs выше - это каталог, созданный casper, а не файл.
Эти три оператора создают
/overlay
каталог, монтируют файловую систему squashfs в/overlay
каталог и затем используют OverlayFS, чтобы по существу объединить содержимое/overlay
over/
.Пример 2, прозрачное слияние двух каталогов
В процессе восстановления живого USB для каждого выпуска я использую OverlayFS, чтобы сэкономить кучу времени. Я начну с каталога под названием ubuntu-base, который содержит содержимое образа ядра ubuntu, который является самой базовой установкой. Затем я создам каталоги с именами ubuntu, kubuntu, lubuntu и xubuntu.
Затем я использую OverlayFS, чтобы файлы из базы ubuntu отображались в отдельных каталогах. Я бы использовал что-то вроде этого:
Это заставляет файлы из ubuntu-base появляться в папке kubuntu. Затем я могу
chroot
в папку kubuntu и сделать что-то вродеapt-get install kubuntu-desktop
. Любые изменения, сделанные во время этого монтирования OverlayFS, останутся в верхнем каталоге, в этом случае в папке kubuntu. Затем, когда я размонтирую OverlayFS, смонтируйте файлы, которые действительно существуют в ubuntu-base, но «зеркально отражаются» в папке kubuntu, исчезают, если они не были изменены. Это избавляет меня от необходимости иметь несколько копий файлов в Ubuntu-Base, но при этом я могу использовать их так, как будто они физически существуют в каждом месте.источник
overlay
не сoverlayfs
С https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt :
источник
Я расширил эти статьи, добавив в них скрипт для оверлеев, который устанавливает корень fs только для чтения.
Надеюсь, это поможет.
источник
Минимальный исполняемый пример
GitHub вверх по течению .
Выход первого
ls
с креплением:Выход второй
ls
без крепления:Интерпретация:
work/
каталог), о котором мы не должны заботитьсяПример адаптирован из: Пример использования OverlayFS
Вот более сложный пример с несколькими нижними уровнями: Overlayfs перезагружается с несколькими слоями (переход от aufs)
Протестировано на Ubuntu 18.04, ядро Linux 4.15.0.
источник