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

4

Я запускаю 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*

Я получаю следующее, которое не отображает возможность создания файловой системы overlay.

mkfs      mkfs.cramfs  mkfs.ext3  mkfs.ext4dev  mkfs.minix  mkfs.ntfs
mkfs.bfs  mkfs.ext2    mkfs.ext4  mkfs.fat      mkfs.msdos  mkfs.vfat
    
задан Programster 18.11.2015 в 13:23
источник

1 ответ

9
  

Я не могу сказать, является ли 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. Пример с использованием файловой системы для верхнего и нижнего регистров может быть показан ниже:

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 .

Вложение надстроек вложенности

  

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

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

    
ответ дан Programster 30.11.2015 в 20:02
источник