На этот вопрос уже есть ответ здесь:
Я использую 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
, который я смогу переместить на другую систему?
Создайте еще один необработанный образ диска и смонтируйте его поверх другого, который мы только что создали. Сделать ли это второй командой mount, выполняемой после команды mount, которую мы выполнили в предыдущем примере, или можно указать оба монтирования за один раз?
Я не могу понять, является ли 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
Я не могу сказать, является ли OverlayFS фактической файловой системой, я должен создать на образах дисков с mkfs-t xxx/path/to/raw/disk/image или являюсь специальным способом монтажа, и изображения неструктурированного диска на самом деле используют что-то как ext4, но они смонтированы специальным способом с-t OverlayFS монтирования?
Не нужно выполнять команду mkfs для overlayFS, это - просто способ смонтироваться.
После того, как смонтированный я полагаю, что должен все еще смочь видеть свои уже существующие файлы и какие-либо файлы, которые я теперь создаю, будет на самом деле сохранен в filesystem1.img файле, который я мог возможно переместить в другую систему?
Да, для более подробного объяснения того, как OverlayFS работает, можно хотеть обратиться к "Докеру и 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
Можно добавить [виртуальные] блочные устройства с их собственными файловыми системами (любого вида) для действия как более низкие и верхние файловые системы, если Вы требуете. Единственное ограничение - то, что "workdir" должен быть пустым каталогом в той же файловой системе как upperdir. Пример с помощью файловой системы и для 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. Например, можно вложить пример выше как lowerdir к другой 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
В этом случае у Вас нет двух workdirs, но один, и Вы сохраняете тот же объединенный путь /tmp/overlay
. Более низкие каталоги будут сложены справа налево. Можно также опустить upperdir=
полностью, который приводит к монтированию только для чтения.