Debian Stretch(ルートとして実行)では、現在の動作は次のとおりです。
# Create base directory
mkdir base
touch base/example
# Create merge, upper and work directories for 2 layers
mkdir layer1 layer1.upper layer1.work
mkdir layer2 layer2.upper layer2.work
# Mount layer1 as the merged directory using layer1.upper as the true upper layer,
# with base as a lower layer and layer1.work as the necessary work directory
mount -t overlay overlay -o lowerdir=$(pwd)/base,upperdir=$(pwd)/layer1.upper,workdir=$(pwd)/layer1.work layer1
ls layer1 # should show example as expected
ls layer1.upper # shows no file (this is expected behaviour, it should only show files written on layer1)
rm layer1/example
ls layer1 # should show no files
ls layer1.upper # should show a special character device called "example", this is the "whiteout" file
# unmount, and remount with layer2 being the new upper layer and using layer1.upper directory as the top level lower layer.
umount layer1
mount -t overlay overlay -o lowerdir=$(pwd)/base:$(pwd)/layer1.upper,upperdir=$(pwd)/layer2.upper,workdir=$(pwd)/layer2.work layer2
ls layer2 # now shows example again as if it was never deleted
これはバグですか?それともこれが制限/予想される動作ですか?
期待している場合、迅速かつ簡単に修正するための提案はありますか?
FWIW auFSで期待どおりに動作するので、回避策はaufs-dkmsをインストールしてauFSを使い続けることです。
【書き直す】私は間違っていました。 (現在修正済み)回答を確認してください!
ベストアンサー1
私はこれが間違いだと判断しました。したがって、私はDebianにバグレポートを提出しました:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=896646
こんな!私が何か間違っていることが判明しました! Debian のバグに応じて言及されているように:
Overlayfsは文書化されたとおりに動作します。ドキュメント(filesystems/overlayfs.txt)には次のように記載されています。 「指定されたサブディレクトリは、一番右のディレクトリから始まり、左に積み重ねられます。上記の例では、lower1は最上位レイヤ、lower2は中間レイヤ、lower3は一番下のレイヤです。」
あなたの例では、これは「layer1.upper」が最下層で、白い色がその上にある「base」のファイルで覆われていることを意味します。私の考えでは、インストールオプションでこのディレクトリの順序を変えることができます。
記事を読んだが、「右から左へ」部分を見逃した!
正しく完了したら(たとえば、右から左への順序を変更した場合)、期待どおりに機能していることを確認できます。