linux挂载目录文件命名空间,mount namespace和共享子树

原标题:mount namespace和共享子树

没有一个mount namespace是一座孤岛

2

本文翻译自lwn上一个namespace系列文章的一篇,原文链接会在文末给出,各位看官开始进入mount namespace的世界吧!

Mount namespaces用来创建一个用户或者容器独立的文件系统树,是一个强大且灵活的工具。同时,mount namespaces也有一些比较复杂的特点。本文,作为一系列的namespace文章延续,将对这些复杂性进行解释。我们将更细致的说明一下共享子树(shared subtrees) 这个特征,通过共享子树,挂载(mount)和卸载(unmount)事件可以通过一种自动,可控的方式在不同的命名空间之间传递。

导论

Mount namespaces 是第一个进入Linux内核的namespace,首次出现在Linux 2.4.19版本。它们隔离了每个进程可以看到的挂载点列表,或者换句话说,每个Mount namespace都有它们自己的挂载点列表,意味着在不同namespace中的进程都可以看到且控制不同的目录层次结构(目录树)。

当系统启动时,只有一个“ 初始命名空间”。新的mount命名空间通过设置clone()系统调用中的CLONE_NEWNS来创建,或者通过unshare()系统调用将调用者迁移到一个新的命名空间。当一个新的命名空间被创建时,它将继承调用clone()和unshare()的进程的命名空间的全部挂载点列表(mount point list)。

调用clone()或者unshare()之后,通过mount()或者unmount()函数,每个namespace中的挂载点可以被动态的删除或者增加。默认情况下,对挂载点列表的修改只对处于该命名空间的进程是可见的,对于其他命名空间中的进程则是无效的。

Mount namespaces 有多种用途。比如说,它们(指代命名空间)可以给每个用户提供一个独立的文件系统视图。其他的用途包括为新创建的pid namespaces挂载一个/proc文件系统,或者实现类似chroot() 的目录层次结构的隔离。在一些应用中,mount namespaces是和 bind mounts联合使用的。

共享子树(Shared subtrees)

在使用mount namespaces的过程中,用户空间的程序员可能会遇到一个难题:mount namespaces提供了过度的隔离。设想一下,当我们将一个光盘插入到光驱中,在

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值