docker文件系统-overlayfs

overlayfs属于一种联合文件系统,linux还有其他的类型的联合文件系统,比如devicemapper,aufs等,这里先理解overlayfs,同时也参考了网友的一篇文章

1. linux内核在3.18版本开始支持overlayfs,先确定内核版本

uname -a

2. 验证是否已经加载overlay模块:

cat /proc/filesystems | grep overlay

如果没有加载:

modprobe overlay

3. 开始实验

1.切换到root用户下:

sudo -i

2.在根目录下建立如下目录结构:

3. 在lower1和lower2中分别建立相应的文件,完成之后的目录结构是这样的:

4. 通过mount命令将merge目录挂载为overlayfs:

mount -t overlay -o lowerdir=lower2:lower1,upperdir=upper,workdir=work overlay merge

执行之后的目录结构:

命令解释

lowerdir:作为基础层,例子中有两个基础层,其中lower2在lower1上层

upperdir:写入层,所有的文件更改都在这里

workdir:不知道作用

merge:用户展现底层文件系统的统一视图

6. 解释:

merge中会显示基础层中所有的文件,包括lower1和lower2中的文件,而同时因为lower2是lower1的上层,所以在merge中会以lower2为主:

overlay只支持两层,upper文件系统通常是可写的;lower文件系统则是只读,这就表示着,当我们对 overlay 文件系统做任何的变更,都只会修改 upper 文件系统中的文件。那下面看一下overlay文件系统的读,写,删除的规则:

1.读取

  • 读 upper 没有而 lower 有的文件时,需从 lower 读;
  • 读只在 upper 有的文件时,则直接从 upper 读
  • 读 lower 和 upper 都有的文件时,则直接从 upper 读。

2.写入

  • 对只在 upper 有的文件时,则直接在 upper 写
  • 对在lower 和 upper 都有的文件时,则直接在 upper 写。
  • 对只在 lower 有的文件写时,则会做一个copy_up 的操作,先从 lower将文件拷贝一份到upper,写的操作只对从lower 复制到 upper 的文件生效,而 lower 还是原文件。

3.删除

  • 删除 lower 和 upper 都有的文件时,upper 的会被删除,在 upper 目录下创建一个 没有任何权限且内容为0的同名文件,而 lower 的不会被删除。
  • 删除 lower 有而 upper 没有的文件时,会为被删除的文件在 upper 目录下创建一个 没有任何权限且内容为0的同名文件,而 lower 的不会被删除。
  • 删除 lower 和 upper 都有的目录时,upper 的会被删除,在 upper 目录下创建一个没有任何权限且内容为0的同名文件,而 lower 的不会被删除。

可以看到,因为 lower 是只读,所以无论对 lower 上的文件和目录做任何的操作都不会对 lower 做变更。所有的操作都是对在 upper 做

如上这些操作都可以自行验证

转载于:https://my.oschina.net/u/1178805/blog/915825

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值