web-dev-qa-db-ja.com

OverlayFSは下位ディレクトリのファイルをシームレスに編集します

ベースシステム(NFS経由でPXEクライアントに提供される)が読み取り専用であり、ルートファイルシステムが、lowerdirおよびtmpfsとして読み取り専用NFSベースシステムを使用するoverlayfsファイルシステムであるPXEboot環境をセットアップしようとしていますアッパー/ワークディレクトリとして。

OverlayFSを使用するようにAuFSinitramfsスクリプトを編集しましたが、正常に機能していますexcept lowerdirにあるファイル(たとえば、/ etc/environment)を編集しようとすると、ファイルが開かれます。読み取り専用として。これは、新しいファイル(たとえば、/ etc/foobar)や、上位ディレクトリにすでにコピーされているファイルには当てはまりません。この問題は、ファイルを編集する前にタッチするだけで軽減できますが、理想的とは言えず、他のアプリケーションを壊す可能性があります。

AuFSにはこの問題はありませんでした。何かアドバイス? initramfsスクリプト(/ etc/initramfs-tools/scripts/init_bottom/00_overlayfs_initにあります)の関連部分は、簡潔にするために編集されています。

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}

編集:詳細

(Vimなどのエディターを使用して)編集しようとすると、ファイルが読み取り専用であり、: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
6
Travis DePrato

私はまったく同じ問題に遭遇しました(まったく同じことをしようとしています:PXEブート環境の読み取り専用ベースシステム)。

私が見ている動作は このUbuntuバグレポート の動作と完全に一致しています。 既存のファイルに変更を書き込むことはできませんが、削除することはできます(しかし、それらは下位のファイルシステムに保存されます...上位層はそれらの不在を記録するだけです)そしてそれらを再度書き戻します(その時点で上位層には編集可能なコピーがあります)。

私が掘り下げることができることから、これはOverlayFSとNFSが一緒にNiceを再生しないために起こっています。下位のファイルシステムからファイルを変更しようとするときに発生すると予想されることは「コピーアップ」と呼ばれ、NFSがxattrsをサポートしていないため、OverlayFSがNFSファイルシステムを使用しようとすると中断します。

これまでのところ、私が見つけることができる唯一の有望な方法は、Fuse_xattrsを使用してNFSマウントでxattrsをエミュレートできることです( ここで説明 )が、NFS共有のマウントが2つ必要です。 「本物の」もの、そして最初のものを必要とする「xattr-enhanced」のもの。

1
Jemenake