Overlay文件系统
一个Overlay文件系统包含两个文件:
- 一个upper文件系统
- 一个lower文件系统
lower文件系统的数据不会被修改,所以修改都发生在upper文件系统中。除此之外,还有2个空目录:work和merged。work目录属于操作过程文件,merged属于overlay挂载目录(即挂载后的目录),会包含lower和upper两个系统的内容。
Overlay文件系统如何挂载?
- 首先加载overlay模块: $sudo modprobe overlay
- 创建四个文件目录:lower, upper, merged, work, 并在lower和upper下创建几个测试数据。
- 在/root目录下执行如下挂载指令,可以看到空的merged文件夹中已经包含了lower以及upper文件夹中的所有文件和目录。
$ mount -t overlay overlay -o lowerdir=./lower, upperdir=./upper, workdir=./work ./merged
- 使用df -h命令可以查看新构建的overlay文件系统已经挂载。
overlay文件系统的读、写与删除操作
读取操作
- 读upper没有而lower与的文件时,从lower读
- 读只在upper有的文件时,从lower读
- 读lower和upper都有的文件,则需要从upper读
写入操作
- 写只在upper有的文件, 直接在upper上写
- 写在lower和upper都有的文件,直接在upper写
- 写只在lower有的文件时,则会做一个copy_up的操作,先从lower拷贝一份文件到upper中,同时为文件创建一个硬链接。此时可以看到upper目录下生成了2个新的文件,写的操作支队从lower复制到upper文件生效,而lower还是原文件。
删除操作
- 删除lower和upper都有的文件时,upper中文件被删除,在upper目录下创建一个without文件,而lower文件不会被删除。
- 删除lower有而upper没有的文件,会为被删除的文件在upper目录下创建一个without文件,而在lower下的不会被删除。
- 删除lower和upper都有的目录时时,upper的会被删除,在upper目录下创建一个类似without文件的opaqu目录,而lower下的不会被删除。
因而,可以发现,lower是只读的,无论对lower上文件或目录做任何操作都不会对lower做更改。所有的操作都只在upper上进行。
注意:在挂载完成后,目录将变为可读可写,但所有的修改(在upper上)都是暂时的,重启后恢复。
网友评论