分析维度 | bind mount | overlay2 |
定义 | 从属于mount命令,简单来说就是挂载一个已有的文件夹 | 联合文件系统解决方案 |
使用方式 | mount --bind <olddir> <newdir> 绑定后的两个目录类似于硬链接 mount -o remount,ro,bind <olddir> <newdir> 如果olddir是一个挂载点,则 | mount -t overlay overlay -o lowerdir=<lower1-dir>:<lower2-dir>:<lower3-dir>,upperdir=<upper-dir>,workdir=<work-dir> <merged-dir> |
常用选项 | 1)ro:只读挂载 2)remount:将已挂载的目录重新挂载 3)rbind:递归挂载,如果挂载的olddir内有挂载点,会把这个挂载点也一起挂载到newdir下 | 1)lowerdir=xxx:指定用户需要挂载的lower层目录(containerd场景下一般最大支持128层); 2)upperdir=xxx:指定用户需要挂载的upper层目录; 3)workdir=xxx:指定文件系统的工作基础目录,挂载后内容会被清空,且在使用过程中其内容用户不可见; 4)default_permissions:功能未使用; 5)redirect_dir=on/off:默认关闭 6)index=on/off:开启或关闭index特性,开启后可避免hardlink copyup broken问题。默认关闭 |
containerd中使用场景 | 1)主要用于Runc容器的挂卷场景,包括host-path、/etc/hosts等文件 2)当容器镜像只有一层的时候,也会使用bind mount挂载 | 主要用于容器镜像挂载,最终都挂载到bundle目录下的rootfs目录,因此不用自行设置target |
containerd使用形式 | { "type": "bind", "source": "/path/on/host", "target": "/path/inside/container", "options": [ "ro", "rbind" ] } containerd对该挂载点对象的描述来自github.com/opencontainers/image-spec/specs-go/v1中的OCI规范定义 | { "type": "overlay", "source": "overlay", "options": [ "workdir=...", "upperdir=...", "lowerdir=..." ] } containerd对该挂载点对象的定义在mount/mount.go文件中 |
介绍 | 具体描述见containerd/docs/snapshotters at main · containerd/containerd · GitHub | |
约束 | overlay2最好搭配 xfs 文件系统使用,并且使用 xfs 作为底层文件系统时,d_type必须开启 | |
其他用途/拓展知识 | 1)将一个目录创建一个挂载点(通过mount命令可查看) mount --bind foo foo 然后就可以对这个目录增加一些mount选项 mount -o remount,bind,ro foo 2)如果olddir是挂载点,则bind mount后,源和目的挂载点将属于相同peer group,创建新mount NS时。新老NS中相同挂载点属于同一个peer group 3)每个挂载点可以设置4种propagation type传播属性 mount --make-shared mountpoint mount --make-slave mountpoint mount --make-private mountpoint mount --make-unbindable mountpoint MS_SHARED: 相同peer group中所有挂载点下面的挂载信息共享,改动同步 MS_PRIVATE:挂载点配置后不属于任何peer group,挂载信息不共享 MS_SLAVE:相同peer group中,只有slave挂载点跟随master挂载点变化,挂载信息传播是单向的 MS_UNBINDABLE:配置后挂载点不能作为bind mount的源 默认情况下,子挂载点会继承父挂载点的propagation type | |
深入了解文章 | linux的mount bind命令_langb2014的博客-CSDN博客_mount: /dev/loop0 is write-protected, mounting rea | 深入理解overlayfs(二):使用与原理分析_luckyapple1028的博客-CSDN博客_overlayfs:/overlay |
【容器运行时进阶系列】containerd的bind mount与overlay的使用场景分析对比
最新推荐文章于 2023-11-25 22:09:28 发布