我有一个分区,/dev/sdb1,安装在/数据。在 /etc/fstab 中我有:
/dev/sdb1 /data ext4 defaults 1 2
安装该分区后,我将进行以下绑定安装:
/data/backups/f17/opt /opt none rw,bind 0 0
/data/backups/f17/home /home none rw,bind 0 0
/data/var/www/html /var/www/html/ none rw,bind 0 0
所有安装都完成得很好。
问题是,当我运行时df
,我得到的与 sdb1 相关的唯一条目指向“/opt”,而不是“/data”。
例如:
/dev/sdb1 240233144 196081648 31925236 86% /opt
我期望/想要df
显示原始的挂载点,即/数据, 代替/选择。或者至少,展示全部与 sdb1 相关的挂载点。如果我使用umount
/opt 绑定挂载点,则df
很高兴地显示 /data (即使其他两个绑定挂载仍然挂载,奇怪的是)。
mount -a
如果我在终端中执行安装命令(与让系统通过使用 /etc/fstab执行安装命令相比),行为没有任何区别。
我知道我可以使用类似的东西findmnt --df
来更好地了解所有已安装的文件系统,但我想使用df
(并且我不想将 df 别名为其他任何东西)。
- 软呢帽21
- 内核 3.19.3-200.fc21.x86_64
- df(GNU coreutils)8.22
- 从 util-linux 2.25.2 挂载
谢谢。
更新
(添加更多信息)
该文件/proc/mounts
显示所有四个安装点:
/dev/sdb1 /data ext4 rw,relatime,data=ordered 0 0
/dev/sdb1 /var/www/html ext4 rw,relatime,data=ordered 0 0
/dev/sdb1 /home ext4 rw,relatime,data=ordered 0 0
/dev/sdb1 /opt ext4 rw,relatime,data=ordered 0 0
答案1
绑定安装相当于原始安装。没有一张被标记为原件,也没有一张被标记为副本。在这方面,绑定安装就像硬链接,而不是符号链接。
从 GNU coreutils 8.21 开始(如果我正确地阅读了变更日志),df
努力只报告每个文件系统一次。旧版本包括每个非忽略安装点一个条目,因此绑定安装将导致多个条目。df
显示每个文件系统所能确定的最新安装点。在您的情况下,df
reports /opt
,而不是/data
,因为/opt
是最后添加的。
传递选项-a
以获取最新的 coreutils 来报告每个文件系统的所有条目。如果您不传递路径参数,这还会导致列出通常会被忽略的文件系统。如果您确实传递了路径参数,我认为df
除了最新的安装点之外,不会报告任何内容。
如果您不想使用df
其他别名,则要么必须替换df
为自定义实现,要么必须接受df
报告与您想要的不同的内容。如果您需要最早的安装点而不是最新的安装点,一个明智的解决方案是df -a
仅调用并保留您感兴趣的设备的第一个匹配项。