OverlayFS Editar o arquivo no diretório inferior

6

Estou tentando configurar um ambiente PXEboot no qual o sistema básico (servido via NFS para os clientes PXE) é somente leitura, e o sistema de arquivos raiz é um sistema de arquivos overlayfs com o sistema base NFS somente leitura como o lowdir e um tmpfs como o diretório superior / de trabalho.

Eu editei um script initramfs AuFS para usar o OverlayFS, e ele está funcionando bem, exceto que quando você tenta editar um arquivo que está no lowerdir (digamos, por exemplo, / etc / environment) ele é aberto como somente leitura, o que não é o caso de novos arquivos (por exemplo, / etc / foobar) ou arquivos que já foram copiados para o diretório superior. O problema pode ser mitigado com um simples toque antes de tentar editar o arquivo, mas é menos do que ideal e é provável que quebre outros aplicativos.

O AuFS não teve esse problema. Algum conselho? Aqui está a parte relevante do script initramfs (em / etc / initramfs-tools / scripts / init_bottom / 00_overlayfs_init), editada por brevidade.

mkdir /overlay
mkdir /local
mkdir /remote



# mount the temp file system and move real root out of the way
mount -t tmpfs none /local
mount --move ${rootmnt} /remote

mkdir /local/rw
mkdir /local/work

mount -t overlayfs -o lowerdir=/remote,upperdir=/local/rw,workdir=/local/work overlay /overlay

#test for mount points on overlay file system
[  -d /overlay/ro ] || mkdir /overlay/remote
[  -d /overlay/rw ] || mkdir /overlay/local

mount --move /remote /overlay/remote
mount --move /local /overlay/local

mount --move /overlay ${rootmnt}

editar: mais informações

Tentar editar (com um editor, por exemplo, o Vim) resulta no vim declarando que o arquivo é somente leitura e em :wq! , E166: Can't open linked file for writing .

root@dark-node:~# echo FOO=bar >> /etc/environment 
-bash: /etc/environment: Permission denied
root@dark-node:~# echo FOO=bar > /etc/environment 
-bash: /etc/environment: Permission denied
root@dark-node:~# touch /etc/environment
root@dark-node:~# echo FOO=bar >> /etc/environment 
root@dark-node:~# cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/game::/usr/local/games"
FOO=bar
root@dark-node:~# uname -a
Linux dark-node 4.4.0-57-generic #78-Ubuntu SMP Fri Dec 9 23:50:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
    
por Travis DePrato 03.01.2017 / 00:32

1 resposta

1

Eu encontrei exatamente o mesmo problema (tentando fazer exatamente a mesma coisa: um sistema básico somente leitura para um ambiente de inicialização PXE).

O comportamento que estou vendo corresponde exatamente ao relatório de erros do Ubuntu . Eu não posso escrever alterações para arquivos existentes , mas eu posso deletar eles (mas eles são preservados no sistema de arquivos inferior ... com a camada superior apenas registrando sua ausência) e em seguida, escreva-os novamente (nesse ponto, a camada superior tem uma cópia que eu posso editar).

Pelo que consigo descobrir, isso acontece porque o OverlayFS e o NFS não funcionam bem juntos. O que esperamos que aconteça, quando tentamos modificar um arquivo do sistema de arquivos inferior, é chamado de "cópia para cima" e ele quebra quando o OverlayFS tenta usar um sistema de arquivos NFS porque o NFS não suporta xattrs.

Até agora, a única avenida promissora que posso encontrar é que é possível usar fuse_xattrs para emular xattrs em sua montagem NFS ( descrito aqui ), mas requer que você tenha duas montagens do seu compartilhamento NFS: a" real "ea" xattr-enhanced "que precisa primeiro.

    
por 22.02.2018 / 08:28

Tags