overlayfs是目前使用比较广泛的层次文件系统,实现简单,性能较好. 可以充分利用不同或则相同overlay文件系统的page cache,具有
下面我们举1个简单的例子。
1, 首先加载overlayfs内核模块
我使用的是3.10的内核,里面已经加载了overlay
[root@hz01-orp-centos00.hz01.baidu.com olfs]# lsmod | grep over
overlay 29855 1
如果输出为空,就通过下面命令加载一下
modprobe overlay
没有报错,就说明加载成功了。2, 挂载overlay文件系统
[root@olfs]# tree
.
|-- lower
| `-- l1.txt
|-- merged
|-- upper
| `-- u2.txt
`-- work
4 directories, 1 file
### 这里指定lower是-o,也就是只读
[root@olfs]# mount -t overlay overlay -olowerdir=./lower,upperdir=./upper,workdir=./work ./merged
[root@olfs]# df -h
...
overlay 19G 12G 6.8G 63% /root/docker/olfs/merged
可以看到, /root/docker/olfs/merged已经挂载成为一个overlayfs了。
3, 下面我们测试一下
上下合并
刚才通过tree命令,我们看到lower目录下,有一个l1.txt,我们进入merged目录,
[root@olfs]# cd merged/
[root@merged]# ls
l1.txt u2.txt
[root@merged]# cat l1.txt
american
这就说明, 2个目录的文件进行了合并。
同名遮盖
那我们再修改一下这个文件, 再看下文件内容
[root@hz01-orp-centos00.hz01.baidu.com merged]# echo "russia" > l1.txt
[root@hz01-orp-centos00.hz01.baidu.com merged]# cat l1.txt
russia
返回去,看下lower目录,
[root@hz01-orp-centos00.hz01.baidu.com olfs]# cd ../lower/
[root@hz01-orp-centos00.hz01.baidu.com lower]# cat l1.txt
american
文件内容并没有变化,在看下upper目录
[root@hz01-orp-centos00.hz01.baidu.com lower]# cd ../upper/
[root@hz01-orp-centos00.hz01.baidu.com upper]# cat l1.txt
russia
[root@hz01-orp-centos00.hz01.baidu.com upper]# ll
total 8
-rw-r--r-- 1 root root 7 Dec 13 20:52 l1.txt
-rw-r--r-- 1 root root 6 Dec 13 20:48 u2.txt
出现了2个文件,原来的u2.txt,和现在的l1.txt,l1.txt就是merged下面我们看到的l1.txt的内容。并且2这的inode号是一样的
[root@hz01-orp-centos00.hz01.baidu.com upper]# ls -i l1.txt
2329235 l1.txt
[root@hz01-orp-centos00.hz01.baidu.com upper]# ls -i ../merged/l1.txt
2329235 ../merged/l1.txt
删除文件
我们在merged目录下,删除l1.txt,
[root@hz01-orp-centos00.hz01.baidu.com merged]# ll ../lower/
total 4
-rw-r--r-- 1 root root 9 Dec 13 20:38 l1.txt
[root@hz01-orp-centos00.hz01.baidu.com merged]# ll ../upper/
total 4
c--------- 1 root root 0, 0 Dec 13 20:56 l1.txt
-rw-r--r-- 1 root root 6 Dec 13 20:48 u2.txt
可以看到, 这个文件在lower目录,依然不变, 但是在upper下面, 变成了一个,任何用户都没有任何权限,大小为0的字符设备。 overlay也就是一这种方式来标记文件删除的。
【参考】
1)内核官方文档:https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt
2)overlayfs原理:http://wenku.baidu.com/link?url=gSV2u1YJGs20Y_d1R8fOP9wE6tOsHjbTBJUiMFKyv812fLe2uUifddIZ7cUKUbGrqIe5Hku52AxjQWAZCUuqmWi3gYSPZz9gs24StKQG0He
3)Flash Layout/Flash 布局:https://wiki.openwrt.org/zh-cn/doc/techref/flash.layout
转自:http://www.tuicool.com/articles/6ri2Ej7