Exemplo de uso do OverlayFS

6

Estou executando o Ubuntu 14.04 com o kernel 3.19, que deve ter suporte ao OpenFS (desde o kernel 3.18). Eu tenho lendo sobre OverlayFS , mas estou confuso sobre a forma de realmente implementar usando-o . Parece que pode ser uma alternativa realmente útil para o LVM ao permitir que as alterações sejam gravadas em algum outro lugar, enquanto se faz um backup do sistema de arquivos original que está sendo sobreposto?

Alguém pode me dar os comandos de montagem de exemplo para usar (se possível) nos seguintes casos:

  • Com uma imagem de disco bruta (criada usando dd if=/dev/zero of=$HOME/filestystem1.img bs=4096 count=1024000 ) para agir como o sistema de arquivos de sobreposição, monte-a na parte superior do sistema de arquivos do host em $HOME/mount , que deve conter alguns arquivos aleatórios, como file1.txt e file2.txt . Uma vez montado, acredito que ainda devo poder ver meus arquivos já existentes e todos os arquivos que eu criar agora serão armazenados dentro do arquivo filesystem1.img que eu poderia mover para outro sistema?

  • Crie outra imagem de disco bruta e monte essa em cima da outra que acabamos de criar. Eu faço isso como um segundo comando de montagem que é executado após o comando de montagem que executamos no exemplo anterior, ou posso especificar as duas montagens de uma só vez?

Não sei dizer se o OverlayFS é um sistema de arquivos real que preciso criar nas imagens de disco com mkfs -t xxx /path/to/raw/disk/image ou se é um método de montagem especial e se as imagens brutas do disco estão usando algo como ext4, mas elas são montadas uma maneira especial com mount -t OverlayFS ? Quando eu corro:

cd /sbin
ls mkfs*

Eu recebo o seguinte que não mostra uma opção para fazer um sistema de arquivos de sobreposição.

mkfs      mkfs.cramfs  mkfs.ext3  mkfs.ext4dev  mkfs.minix  mkfs.ntfs
mkfs.bfs  mkfs.ext2    mkfs.ext4  mkfs.fat      mkfs.msdos  mkfs.vfat
    
por Programster 18.11.2015 / 13:23

1 resposta

12
  

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.

    
por Programster 30.11.2015 / 20:02

Tags