Overlayfs是一种堆叠文件系统,它依赖并建立在其它的文件系统之上(例如ext4fs和xfs等等),并不直接参与磁盘空间结构的划分,仅仅将原来底层文件系统中不同的目录进行“合并”,然后向用户呈现,就像是一个视图,这就是所谓的联合挂载技术。
Overlayfs中有四种目录,LowerDir、UpperDir、WorkDir和MergedDir:
- WorkDir中存放临时文件。
- MergedDir就是呈现给用户的目录。
- LowerDir是只读的,不能修改,可以有多个LowerDir。
- UpperDir是可读写的。
实际挂载的时候将LowerDir和UpperDir合并到MergedDir,从挂载点MergedDir的视角看,UpperDir层的文件会覆盖LowerDir层的文件,如果在UpperDir层和LowerDir层有一个同名文件,挂载点MergedDir里看到的就只是UpperDir层里的文件。
MergedDir是视图层,LowerDir和UpperDir才是存储层。如果我们在MergedDir里做文件操作,具体可能会包括这三种:
- 新建文件:这个文件会出现在UpperDir中。
- 删除文件:如果我们删除一个实际位于UpperDir中的文件,那么这个文件会在UpperDir中消失,会真正删除。如果我们删除一个实际位于LowerDir中的文件, 在LowerDir里的这个文件不会有变化,只是在UpperDir中增加了一个特殊文件来告诉OverlayFS删除的这个文件不能出现在MergedDir里了,以此表示它已经被删除了。
- 修改文件:如果我们修改一个实际位于LowerDir中的文件,那么就会在UpperDir中新建一个同名文件,存储最新内容,而在LowerDir中的原来的实际文件不会改变。