我在Linux内核中查找了有关mount命名空间的各种信息来源,我不得不说我无法找到有关它如何工作的更多信息(结构的布局以及它们如何相互关联)
我想要做的是在进程X的mount命名空间中获取给定路径,并在init / root进程命名空间中获取相同的文件路径。
示例:
block device A has a file as blah/whatever/fileX
In the init/root process mount namespace, this bdev A is mounted on folder /root making the path /root/blah/whatever/fileX
In the process X mount namespace, this bdev A is mounted on folder /myfolder making the path /myfolder/blah/whatever/fileX
当使用路径名进入内核的特定系统调用来自进程X的世界时,我想取路径名/ myfolder / blah / whatever / fileX并将其转换为原样在init / root的世界中创建路径名/ root / blah / whatever / fileX(如果文件无法通过init / root的任何挂载点访问,则为NULL)
一些相关问题: Linux - understanding the mount namespace & clone CLONE_NEWNS flag
答案 0 :(得分:0)
如果我理解正确,你并不是在寻找mount命名空间,而只是在mount系统调用或cli中调用bind mount的选项。
对于root / init,设备安装在blah / whatever / fileX中...你可以在/ myfolder / blah中绑定挂载相同的blah / whatever ...因此,使用两个路径可以看到相同的fileX和相同的dirs。 。
现在除非您查找隔离,即您不希望任何其他进程查找这些挂载点,否则您可以使用mount命名空间。最简单的做法是使用“unshare”
启动processX