PS:要转载请注明出处,本人版权所有。
PS: 这个只是基于《我自己》的理解,
如果和你的原则及想法相冲突,请谅解,勿喷。
环境说明
无
前言
对于overlay文件系统来说,我以前只是听过,具体貌似docker里面使用了相关技术,但是也仅仅限于听过了。
最近,由于需要通过tar来备份一个系统的rootfs来做测试,我发现了很多重复备份的内容,一看,嘿,可能是overlay文件系统导致的,因此,我可能需要先了解了解这个文件系统是干嘛的,然后才能够采取合适的方案来备份rootfs。
实现大致原理
overlayfs主要是结合了两个文件系统 -- "upper fs" 和 "lower fs" 。其组成规则是:
- 当"upper fs"和 "lower fs"存在两个相同的名字的文件时,"upper fs"的文件是可见的,"lower fs"的文件是隐藏的。
- 当"upper fs"和 "lower fs"存在两个相同的名字的目录时,会合并两个目录的文件。
overlayfs主要是涉及目录的操作,其挂载命令是:
# 堆叠两个目录,合并lower目录,upperdir目录,展示到merge目录
# workdir和upperdir必须是同一个文件系统的空目录
mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,workdir=/work /merged
# 堆叠多个目录(从最右边的目录开始向左堆叠),合并lower3,lower2,lower1,展示到merged目录
mount -t overlay overlay -olowerdir=/lower1:/lower2:/lower3 /merged
对, 本文的内容已经完了,overlay的大致工作原理和工作效果和说完了。
其他细节,请参考 参考小节。
后记
不知道大家注意到没有,我们在描述其组合的规则的时候,对于:隐藏"lower fs"的文件、合并两个目录的文件 的操作说的是那么的自然,但是其是怎么实现的呢?其实这才是overlayfs的一些实际技术原理。
其实,这一切都与linux的vfs和ext文件系统有一些关系,详情请参考本文的前置文章:
- 《Linux 文件系统(一) --- ext4文件系统简介》 https://www.cnblogs.com/Iflyinsky/p/18162137
- 《Linux 文件系统(二) --- vfs简单分析》 https://www.cnblogs.com/Iflyinsky/p/18187558
参考文献
PS: 请尊重原创,不喜勿喷。
PS: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。