Пример использования OverlayFS [duplicate]

На этот вопрос уже есть ответ здесь:

Я использую 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
7
задан 18 November 2015 в 05:43

1 ответ

Я не могу сказать, является ли 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

... другое изображение неструктурированного диска и монтирует этого сверху другого, которого мы просто создали. Я делаю это как вторую команду монтирования, которая выполняется, после монтируют команду, которую мы выполнили в предыдущем примере, или я могу возможно указать оба, монтируется сразу?

Можно вложить 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= полностью, который приводит к монтированию только для чтения.

18
ответ дан 23 November 2019 в 06:13

Другие вопросы по тегам:

Похожие вопросы: