Пример использования OverlayFS
Я использую Ubuntu 14.04 с ядром 3.19, которое должно поддерживать OpenFS (начиная с ядра 3.18). Я читал о OverlayFS, но не понимаю, как на самом деле реализовать его. Похоже, что это может быть действительно полезной альтернативой LVM, позволяющей записывать изменения где-то еще во время создания резервной копии исходной файловой системы, которая наложена?
Может ли кто-нибудь дать мне пример команд монтирования для использования (если возможно) в следующих случаях:
С необработанным образом диска (созданным с использованием
dd if=/dev/zero of=$HOME/filestystem1.img bs=4096 count=1024000
) выступать в качестве наложенной файловой системы, смонтировать ее поверх файловой системы моего хоста по адресу$HOME/mount
который уже должен содержать некоторые случайные файлы, такие какfile1.txt
а такжеfile2.txt
, После подключения я верю, что все еще смогу увидеть свои уже существующие файлы, и любые файлы, которые я сейчас создаю, будут фактически храниться внутриfilesystem1.img
файл, который я мог бы переместить в другую систему?Создайте еще один необработанный образ диска и смонтируйте его поверх другого, который мы только что создали. Я делаю это как вторую команду монтирования, которая выполняется после команды монтирования, которую мы выполнили в предыдущем примере, или я могу указать оба монтирования за один раз?
Я не могу сказать, является ли OverlayFS реальной файловой системой, которую мне нужно создать на образах дисков с mkfs -t xxx /path/to/raw/disk/image
, или это специальный метод монтирования, и необработанные образы дисков фактически используют что-то вроде ext4, но они монтируются особым образом mount -t OverlayFS
? Когда я бегу:
cd /sbin
ls mkfs*
Я получаю следующие, которые не показывают возможность сделать оверлейную файловую систему.
mkfs mkfs.cramfs mkfs.ext3 mkfs.ext4dev mkfs.minix mkfs.ntfs
mkfs.bfs mkfs.ext2 mkfs.ext4 mkfs.fat mkfs.msdos mkfs.vfat
1 ответ
Я не могу сказать, является ли OverlayFS реальной файловой системой, которую мне нужно создать на образах дисков с помощью mkfs -t xxx /path/to/raw/disk/image, или это особый метод монтирования, и необработанные образы дисков фактически используют что-то как ext4, но они монтируются особым образом с помощью mount -t OverlayFS?
Не нужно запускать какую-либо команду mkfs для overlayFS, это всего лишь способ монтирования.
После подключения я верю, что все еще смогу увидеть свои уже существующие файлы, и любые файлы, которые я сейчас создаю, на самом деле будут храниться в файле filesystem1.img, который я мог бы переместить в другую систему?
Да, для более подробного объяснения того, как работает OverlayFS, вы можете обратиться к "Docker и OverlayFS на практике".
Примеры
Создание наложенного монтирования может быть сделано исключительно с каталогами, если это необходимо, как показано здесь:
cd /tmp
mkdir lower upper workdir overlay
sudo mount -t overlay -o \
lowerdir=/tmp/lower,\
upperdir=/tmp/upper,\
workdir=/tmp/workdir \
none /tmp/overlay
Вы можете добавить [виртуальные] блочные устройства с их собственными файловыми системами (любого типа), которые будут выступать в качестве нижних и верхних файловых систем, если хотите. Единственное ограничение заключается в том, что "рабочий каталог" должен быть пустым каталогом в той же файловой системе, что и верхний каталог. Пример использования файловой системы для upperdir и lowerdir может быть показан ниже:
cd /tmp
# Create the necessary directories.
mkdir lower upper overlay
# Lets create a fake block device to hold our "lower" filesystem
dd if=/dev/zero of=lower-fs.img bs=4096 count=102400
dd if=/dev/zero of=upper-fs.img bs=4096 count=102400
# Give this block device an ext4 filesystem.
mkfs -t ext4 lower-fs.img
mkfs -t ext4 upper-fs.img
# Mount the filesystem we just created and give it a file
sudo mount lower-fs.img /tmp/lower
sudo chown $USER:$USER /tmp/lower
echo "hello world" >> /tmp/lower/lower-file.txt
# Remount the lower filesystem as read only just for giggles
sudo mount -o remount,ro lower-fs.img /tmp/lower
# Mount the upper filesystem
sudo mount upper-fs.img /tmp/upper
sudo chown $USER:$USER /tmp/upper
# Create the workdir in the upper filesystem and the
# directory in the upper filesystem that will act as the upper
# directory (they both have to be in the same filesystem)
mkdir /tmp/upper/upper
mkdir /tmp/upper/workdir
# Create our overlayfs mount
sudo mount -t overlay -o \
lowerdir=/tmp/lower,\
upperdir=/tmp/upper/upper,\
workdir=/tmp/upper/workdir \
none /tmp/overlay
Приведенные выше примеры взяты из моего поста об использовании оверлеев.
Вложенность OverlayFS
... еще один необработанный образ диска и смонтируйте его поверх другого, который мы только что создали. Я делаю это как вторую команду монтирования, которая выполняется после команды монтирования, которую мы выполнили в предыдущем примере, или я могу указать оба монтирования за один раз?
Вы можете вкладывать overlayFS. Например, вы можете вложить приведенный выше пример в качестве нижнего каталога в другую систему overlayFS, выполнив:
mkdir -p /tmp/upperdir2/upper /tmp/upperdir2/workdir /tmp/overlay2
sudo mount -t overlay -o \
lowerdir=/tmp/overlay,\
upperdir=/tmp/upperdir2/upper,\
workdir=/tmp/upperdir2/workdir \
none /tmp/overlay2
Когда Ubuntu получит ядро 4.0+, мы сможем объединить несколько нижних каталогов в одну команду, используя символ двоеточия в качестве разделителя, например:
sudo mount -t overlay -o \
lowerdir=/tmp/lower:/tmp/lowest,\
upperdir=/tmp/upper,\
workdir=/tmp/workdir \
none /tmp/overlay
В этом случае у вас есть не два рабочих каталога, а один, и вы сохраняете тот же объединенный путь /tmp/overlay
, Нижние каталоги будут расположены справа налево. Вы также можете опустить upperdir=
полностью, что приводит к монтированию только для чтения.