绑定安装和 df 输出

绑定安装和 df 输出

我有一个分区,/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显示每个文件系统所能确定的最新安装点。在您的情况下,dfreports /opt,而不是/data,因为/opt是最后添加的。

传递选项-a以获取最新的 coreutils 来报告每个文件系统的所有条目。如果您不传递路径参数,这还会导致列出通常会被忽略的文件系统。如果您确实传递了路径参数,我认为df除了最新的安装点之外,不会报告任何内容。

如果您不想使用df其他别名,则要么必须替换df为自定义实现,要么必须接受df报告与您想要的不同的内容。如果您需要最早的安装点而不是最新的安装点,一个明智的解决方案是df -a仅调用并保留您感兴趣的设备的第一个匹配项。

相关内容