gpt4 book ai didi

Linux - 在克隆手册页中使用术语 mount

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:42 26 4
gpt4 key购买 nike

我问了一个question阐明挂载在 Linux 中的含义。

我对克隆手册页中这个术语的使用有疑问:

The namespace of a process is the data (the set of mounts) describing the file 
hierarchy as seen by that process.

挂载集 - 描述文件层次结构似乎误导了我。

根据我的理解,基于已接受的 answer ,文件层次结构可能不仅仅是一组挂载,因为这组挂载将只是将文件系统添加到现有文件系统的挂载点。

谁能澄清一下?

最佳答案

如果您将“安装点集”视为(至少)一组(设备、安装点) 对,而不仅仅是一组安装点 em>,然后它开始看起来很像 fstabmount 命令的输出(没有参数),尽管没有关于标志和选项的附加信息(例如 rwnosuid 等)。

这样的“一组挂载”提供了关于哪些文件系统挂载在哪里的完整信息。根据定义,这是进程的“挂载命名空间”。一旦您从拥有一个全局挂载命名空间的传统情况转变为拥有每个进程挂载命名空间,当进程 fork() 时会出现其他问题。

传统上,挂载或卸载文件系统会更改所有进程看到的文件系统。

使用每个进程的挂载命名空间,子进程可以拥有与其父进程不同的挂载命名空间。现在出现一个问题:

子项对挂载命名空间所做的更改是否应该传播回父项?

显然,此功能必须至少得到支持,而且实际上必须是默认功能。否则,启动 mount 命令本身不会产生任何变化(因为父 shell 看到的文件系统不会受到影响)。

同样清楚的是,这种必要的传播也必须有可能被抑制,否则我们永远无法创建一个其挂载命名空间与其父进程不同的子进程,我们又拥有一个全局挂载命名空间(init 看到的文件系统)。

因此,我们必须决定 fork() 子进程是否从父进程获取有关已挂载文件系统的数据副本,它可以在不影响父进程的情况下更改它,或者获取一个指针到相同的数据结构,它可以更改(更改传播回来所必需的,就像从 shell 启动 mount 时一样)。

如果 CLONE_NEWNS 标志被传递给 clone()fork(), child 得到一个副本 其父挂载的文件系统数据,它可以在不影响父挂载命名空间的情况下更改。否则,它会得到一个指向父数据结构的指针,其中子数据结构所做的更改将被父数据看到(因此 mount 命令本身可以工作)。

关于Linux - 在克隆手册页中使用术语 mount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com