하위 레이어를 교체(오프라인, 심지어 다시 시작)할 수 있는 병합된 오버레이 구조를 구축하려고 합니다. 어떻게든 예상대로 작동하지 않습니다. 내 문제를 설명하기 위해 다음 예를 사용했습니다.
mkdir lower upper work merged
mount -t overlay overlay -o lowerdir=lower,upperdir=upper,workdir=work merged
mkdir merged/test
getfattr -n trusted.overlay.opaque upper/test
umount merged
mkdir -p lower/test
touch lower/test/blub.txt
mount -t overlay overlay -o lowerdir=lower,upperdir=upper,workdir=work merged
ls -la merged/test
umount merged
touch upper/test/bla.txt
mount -t overlay overlay -o lowerdir=lower,upperdir=upper,workdir=work merged
ls -la merged/test
umount merged
rm -rf lower upper work merged
결과는 다음과 같습니다.
root@linux:/data# mkdir lower upper work merged
root@linux:/data# mount -t overlay overlay -o lowerdir=lower,upperdir=upper,workdir=work merged
root@linux:/data# mkdir merged/test
root@linux:/data# getfattr -n trusted.overlay.opaque upper/test
# file: upper/test
trusted.overlay.opaque="y"
root@linux:/data# umount merged
root@linux:/data# mkdir -p lower/test
root@linux:/data# touch lower/test/blub.txt
root@linux:/data# mount -t overlay overlay -o lowerdir=lower,upperdir=upper,workdir=work merged
root@linux:/data# ls -la merged/test
total 8
drwxr-xr-x 2 root root 4096 Feb 3 18:30 .
drwxr-xr-x 1 root root 4096 Feb 3 18:30 ..
root@linux:/data# umount merged
root@linux:/data# touch upper/test/bla.txt
root@linux:/data# mount -t overlay overlay -o lowerdir=lower,upperdir=upper,workdir=work merged
root@linux:/data# ls -la merged/test
total 8
drwxr-xr-x 2 root root 4096 Feb 3 18:32 .
drwxr-xr-x 1 root root 4096 Feb 3 18:30 ..
-rw-r--r-- 1 root root 0 Feb 3 18:32 bla.txt
root@linux:/data# umount merged
root@linux:/data# rm -rf lower upper work merged
그래서 기본적으로 빈 병합된 오버레이 파일에 새 폴더를 만듭니다. 예상대로 맨 위에 이 디렉터리가 생성됩니다. 하지만 "trusted.overlay.opaque" 설정을 사용하는 것은 어떻습니까?
이제 이 속성을 설정한 후에는 하위 파일 시스템에 대한 변경 사항이 나중에 숨겨집니다. 변경이 오프라인으로 수행되었으므로 작동해야 합니까?
Debian(4.19 커널) 및 Archlinux(5.10 커널)에서 테스트되었습니다.
시간 내 주셔서 감사합니다:)