联合文件系统
最近在学Docker,碰到联合文件系统的概念,看了下书和资料都说的不清楚。这里详细说明下。
官方说法:Docker联合文件系统Union File System,它是实现Docker镜像的技术基础,是一种轻量级的高性能分层文件系统,支持将文件系统中的修改进行提交和层层叠加,这个特性使得镜像可以通过分层实现和继承。同时支持将不同目录挂载到同一个虚拟文件系统下。
没看懂?没关系,看图
目录一包含两个文件夹:A和B,分别含有不同的文件:
目录二爷包含两个文件夹:A和C,也分别含有不同的文件:
那如果用联合文件系统技术来“合并”合并两个目录呢?在合并后的时候,目录对于原来的目录里文件的路径是不会改变的。因此,就是如图这种情况:
从图中看,文件相对目录确实没变化。但合并前5个文件,合并后怎么只有4个了,少了个a.txt?这里说下:
1.联合文件系统是:谁先被挂载就显示成谁的,如果目录一先被挂载,那优先显示目录一里的a.txt
2.被联合文件系统挂载的文件都是只读的,无法修改
3.如果修改,只是修改联合文件系统生成的一个副本,修改只在该副本上起作用
4.如果删除某个文件,只是逻辑删除:系统生成一个whiteout类型的文件,记录删除标记,也就是不再显示