Eu não sei dizer se o OverlayFS é um sistema de arquivos real que eu preciso criar as imagens de disco com mkfs -t xxx / caminho / para / raw / disk / image, ou é um método de montagem especial e as imagens de disco bruto estão realmente usando algo como ext4, mas eles são montados de uma maneira especial com montagem -t OverlayFS?
Não é necessário executar nenhum comando mkfs para o overlayFS, é apenas uma maneira de montar.
Uma vez montado, acredito que ainda devo poder ver meu arquivos existentes e quaisquer arquivos que eu criar agora serão realmente armazenados dentro do arquivo filesystem1.img que eu poderia mover para outro sistema?
Sim, para uma explicação mais detalhada de como funciona o OverlayFS, consulte "Docker e OverlayFS na prática ".
Exemplos
A criação de uma montagem de sobreposição pode ser feita apenas com diretórios, se desejado, conforme demonstrado aqui:
cd /tmp
mkdir lower upper workdir overlay
sudo mount -t overlay -o \
lowerdir=/tmp/lower,\
upperdir=/tmp/upper,\
workdir=/tmp/workdir \
none /tmp/overlay
Você pode usar dispositivos de blocos [virtuais] com seus próprios sistemas de arquivos (de qualquer tipo) para agir como os sistemas de arquivos inferiores e superiores, se desejar. A única restrição é que o "workdir" precisa ser um diretório vazio dentro do mesmo sistema de arquivos que o upperdir. Um exemplo usando um sistema de arquivos para o upperdir e lowerdir pode ser mostrado abaixo:
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
Os exemplos acima foram retirados da postagem do meu blog sobre o uso de overlayfs .
OverlayFS de aninhamento
... outra imagem de disco bruta e monta essa em cima da outra um que acabamos de criar. Eu faço isso como um segundo comando de montagem que é executado após o comando mount que executamos no exemplo anterior, ou posso possivelmente especificar os dois montes de uma só vez?
Você pode aninhar overlayFS. Por exemplo, você pode aninhar o exemplo acima como o lowerdir para outro sistema overlayFS executando:
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
Quando o Ubuntu obtém o kernel 4.0+ , devemos ser capazes de combinar vários diretórios inferiores em um único comando usando o caractere de dois pontos como um separador da seguinte forma:
sudo mount -t overlay -o \
lowerdir=/tmp/lower:/tmp/lowest,\
upperdir=/tmp/upper,\
workdir=/tmp/workdir \
none /tmp/overlay
Nesse caso, você não tem dois workdirs, mas um, e mantém o mesmo caminho mesclado de /tmp/overlay
. Os diretórios inferiores serão empilhados de da direita para a esquerda . Você também pode omitir upperdir=
inteiramente, o que resulta em uma montagem somente leitura.