MNT名字空间

2019-03-08 02:50胡浩
西部论丛 2019年4期
关键词:驱动器列表光盘

胡浩

摘 要:MNT名字空间是一个强大而灵活的工具,用于创建每个用户和每个容器的文件系统树。MNT名字空间提供了高度的隔离性,然而在不同的容器间也需要适度的共享挂载点或硬件设备,MNT名字空间的共享子树技术很好的适应了这种需求,它允许在MNT名字空间之间以自动控制的方式传播挂载和卸载事件。

关键词:MNT名字空间;;共享子树

1MNT名字空间

MNT名字空间是一种隔离技术,这种技术隔离名字空间中进程所看到的挂载点列表。每个MNT名字空间都有自己的挂载点列表,这意味着不同名字空间具有不同的目录结构视图。系统默认创建初始MNT名字空间,带有CLONE_NEWNS标记fork()或unshare()系统调用创建新的MNT名字空间【1】。创建新的MNT名字空间时将复制从调用方的名字空间的挂载点列表。fork()和unshare()执行后,可以在每个名字空间通过mount()和umount()独立的添加和删除挂载点,默认情况下,对挂载点列表的更改仅对进程所在的MNT名字空间中的进程可见;这些更改在其他MNT名字空间中不可见。MNT名字空间有多种用途。它们可以为每个用户提供不同的文件系统视图。其他用途包括为PID名字空间挂载/proc文件系统,fork()时同时创建PID名字空间(CLONE_NEWPID)和MNT名字空间(CLONE_NEWN),在MNT名字空间挂载/proc文件系统不会影响主机的/proc文件系统【3】。另外,MNT名字空间也可与绑定挂载配合使用。

2共享子树

MNT名字空间的一个缺点是只提供绝对的隔离而缺乏共享,假设加载光盘驱动器,使光盘驱动器在所有MNT名字空间中可见的唯一方法是在每个名字空间中分别挂载,系统中可能有数十个不同MNT名字空间,若其用户都需要访问光盘驱动器,则分别在数十个不同MNT名字空間逐个挂载是非常繁琐的事情,最好是执行一次挂载操作,使光盘驱动器在系统上所有MNT名字空间中可见。

共享子树技术可以解决上述问题,其主要优点是允许在名字空间之间自动、受控地传播挂载和卸载事件。在一个MNT名字空间中挂载光盘驱动器,所有其他名字空间会自动触发光盘驱动器的挂载。在共享子树特性下,每个挂载点都被标记为一种“传播类型”,该类型决定了挂载点下创建和删除的挂载点,相应的挂载事件是否传播到其他挂载点。每个挂载点可以设置四种不同的传播类型:

(1)设置挂载点为MS_SHARED传播类型,此挂载点与其“对等组”成员的其他挂载点共享挂载和卸载事件。当在此挂载点下添加或移除挂载点时,此更改将传播到对等组,因此挂载或卸载也将在每个对等挂载点下进行。对等组内的其他成员也具有相同的特性。

(2)设置挂载点为MS_PRIVATE传播类型,这和MS_SHARED传播类型刚好相反。挂载点不会将事件传播到任何对等点,也不会接收来自任何对等点的传播事件。

(3)设置挂载点为MS_SLAVE传播类型,此传播类型位于共享和私有之间。多个从挂载点(Slave)和一个主挂载点(Master)形成一个共享的对等组,主挂载点将挂载和卸载事件传播到从挂载点。但是,从挂载点不会将事件传播到主挂载点。

(4)设置挂载点为MS_UNBINDABLE传播类型,此挂载点不可绑定和复制。与私有挂载点一样,此挂载点不传播挂载事件。此外,这个挂载点不能作为绑定挂载操作的源,此挂载也不可被复制。

传播类型是在每个挂载点设置。在名字空间中,某些挂载点可能被标记为共享,而其他挂载点则标记为私有(或从属或不可绑定)。传播类型决定挂载和卸载事件的传播。因此,如果在共享挂载下,X创建一个子挂载Y,该子挂载将传播到对等组中的其他挂载点。但是,X的传播类型对于在Y下创建和删除的挂载点没有影响,Y下的事件是否传播取决于为Y定义的传播类型。类似地,卸载事件是否会在卸载时传播取决于X的父挂载的传播类型。这里的“事件”是一个抽象的术语,意思是“发生了什么事情”。事件传播的概念并不意味着在挂载点之间传递某种消息。在一个挂载点上的挂载或卸载操作会触发一个或多个其他挂载点的匹配操作,在代码的具体的实现上,事件的传播是挂载的复制【1】。

最后,一个挂载点可以同时是从节点(MS_SLAVE)和共享挂载(MS_SHARED)【2】。在这种情况下,挂载事件可能会从主挂载点传到从挂载点,然后从挂载点又将这些事件传播到它的共享对等组中的成员。

参考文献:

[1]《深入Linux内核架构》郭旭译人民邮电出版社2010年6月第一版

[2]《Docker容器与容器云》浙江大学SEL实验室人民邮电出版社2016年10月第二版

[3]《Docker进阶与实战》华为Docker实践小组机械工业出版社2016年7月第一版

猜你喜欢
驱动器列表光盘
扩列吧
藏起驱动器号确保数据安全
将驱动器钉在Windows 10任务栏
光盘小熊
列表法解分式方程问题探索
希捷推出低容量大尺寸硬盘
保护CD
列表画树状图各有所长
2011年《小说月刊》转载列表
产品