如何在 Linux 文件系统中创建循环?我想打破 Linux 文件系统的有向无环图 (DAG) 属性。这可能吗?当我在我的 Ubuntu 上安装 scratchbox 交叉编译器时,我曾经看到过这种情况。
我现在不知道如何重现它。
最佳答案
其他一些回复者已经回答了如何使用环回设备设置挂载,但是你专门问了bind
坐骑,有点不同。如果你想使用绑定(bind)挂载,你只需指定 --bind
在挂载命令中。例如:
mount --bind /original/path /new/path
这将使文件系统位置可访问 /original/path
也可通过/new/path
访问.请注意,这将不跟随挂载点!例如,假设我有以下挂载点:
/something
/something/underneath/that
现在假设我做了一个 bind
安装 /something
:
mount --bind /something /new_something
我将能够访问像 /something/myfile
这样的文件通过路径 /new_something/myfile
.但是我不能访问/something/underneath/that/otherfile
这样的文件通过路径 /new_something/underneath/that/otherfile
.您必须设置单独的 bind
为每个文件系统挂载;或者如果你有一个相对较新的内核,你可以使用 rbind
挂载,确实遵循挂载点:
mount --rbind /something /new_something
关于 rbind
的一个警告挂载:它们不处理在 rbind
之后挂载文件系统的情况是设置。也就是说,假设我有一个这样的坐骑:
/something
然后我设置我的 rbind
如上所述,然后我挂载 /something/underneath/that
: rbind
不会神奇地通过 rbind
使新坐骑可见地点。另请注意,显然由于内核中的错误,您无法卸载 rbind
。挂载。
此外,以防万一您的意思是“如何使用 mount(2) 系统调用设置绑定(bind)挂载?”:您必须指定 MS_BIND
标志(在 mount.h
中定义)当您调用 mount(2)
时对于常规 bind
山。对于 rbind
安装,您必须指定 MS_BIND
和文件 MS_REC
标志(在 linux/fs.h
中定义)。
希望对你有帮助,
埃里克梅尔斯基
关于linux - 在 Linux 文件系统中创建循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730589/