挂载名称空间(Mount Namespace)

挂载名称空间提供进程间挂载列表的隔离,通过clone(2)或unshare(2)创建。初始状态下,新命名空间的挂载列表可能是父进程的副本。挂载传播类型如MS_SHARED、MS_PRIVATE、MS_SLAVE和MS_UNBINDABLE决定了事件的传播方向。共享子树特性允许挂载事件在特定挂载点间传播,用于解决跨挂载名称空间的资源共享问题。根文件系统是第一个被挂载的系统,通常包括隐藏的rootfs和用户指定的文件系统。
摘要由CSDN通过智能技术生成

挂载名称空间为每个名称空间实例中的进程所看到的挂载列表提供隔离。因此,每个挂载名称空间实例中的进程将看到不同的单目录层次结构。

/proc/pid/mounts、/proc/pid/mountinfo和/proc/pid/mountstats文件提供的视图,对应于PID为pid的进程所在的挂载命名空间。(位于同一挂载名称空间中的所有进程将在这些文件中看到相同的视图。)

使用带有CLONE_NEWNS标志的clone(2)或unshare(2)创建新的挂载名称空间。当创建一个新的挂载命名空间时,它的挂载列表被初始化如下:

        (1)如果名称空间是使用clone(2)创建的,子名称空间的挂载列表是父进程的挂载名称空间的挂载列表的副本。

        (2)如果使用unshare(2)创建命名空间,则新命名空间的挂载列表是调用方以前的挂载命名空间中的挂载列表的副本。

对任何一个挂载名称空间中的挂载列表(mount(2)和umount(2))的后续修改不会(默认情况下)影响另一个名称空间中的挂载列表(但请参阅下面关于共享子树的讨论)。

在完成挂载名称空间的实现之后,经验表明,在某些情况下,它们提供的隔离性太大了。例如,为了使新加载的光盘在所有挂载名称空间中可用,需要在每个名称空间中执行挂载操作。对于这个用例和其他用例,Linux 2.6.15中引入了共享子树特性。该特性允许在名称空间之间(或者更准确地说,在作为对等组成员的mount(2)和umount(2)事件相互传播的mount(2)之间自动、受控地传播事件)。

每个挂载(通过mount(2))被标记为具有以下传播类型之一:

MS_SHARED

        此挂载与对等组的成员共享事件。Mount(2)和umount(2)事件将立即传播到作为对等组成员的其他挂载。这里的传播意味着相同的mount(2)或umount(2)将在对等组中的所有其他mount(2)下自动发生。相反,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值