在Linux文件系统中创建一个循环

如何在 Linux文件系统中创建循环?我想打破Linux文件系统的有向无环图(DAG)属性.这可能吗?当我在我的Ubuntu上安装了scratchBox交叉编译器时,我曾经看到过这种情况.

我现在不知道如何重现它.

解决方法

其他一些响应者已经回答了如何使用loopback设备设置挂载,但是您特别询问了绑定挂载,这有点不同.如果要使用绑定装载,只需在mount命令中指定–bind即可.例如:
mount --bind /original/path /new/path

这将使/ original / path中可访问的文件系统位置也可通过/ new / path访问.请注意,这不会跟随挂载点!例如,假设我有以下挂载点:

/something
/something/underneath/that

现在假设我为/ something做了一个绑定挂载:

mount --bind /something /new_something

我将能够通过路径/ new_something / myfile访问/ something / myfile等文件.但是我无法通过路径/ new_something / under / that / otherfile访问/ something / under / that / otherfile等文件.您必须为每个文件系统设置单独的绑定装载;或者如果你有一个相对较新的内核,你可以使用rbind挂载,它遵循挂载点:

mount --rbind /something /new_something

关于rbind挂载的一个警告:它们不处理在设置rbind之后安装文件系统的情况.也就是说,假设我有这样的坐骑:

/something

然后我按上面的方式设置了我的rbind,然后我在/下面安装/ something /:rbind不会神奇地通过rbind位置看到新的挂载.还要注意,显然由于内核中的错误,您无法卸载rbind挂载.

另外,如果您的意思是“如何使用mount(2)系统调用设置绑定挂载?”:当您为常规绑定调用mount(2)时,必须指定MS_BIND标志(在mount.h中定义)安装.对于rbind挂载,必须指定MS_BIND和undocument MS_REC标志(在linux / fs.h中定义).

希望有所帮助,

埃里克·梅尔斯基

相关文章

insmod和modprobe加-f参数导致Invalid module format错误 这...
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安...
1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...