‘df’ 命令不显示 ubuntu 14.04 中请求的文件系统

‘df’ 命令不显示 ubuntu 14.04 中请求的文件系统

这种奇怪的行为几天前就开始了。这是所有文件系统的 df

michele@OptiPlex-360:~$ df
File system    1K-blocchi    Usati Disponib. Uso% Montato su
udev              1974808        8   1974800   1% /dev
tmpfs              397120     1340    395780   1% /run
/dev/sda1        45225008 14448892  28455736  34% /
none                    4        0         4   0% /sys/fs/cgroup
none                 5120        4      5116   1% /run/lock
none              1985596       80   1985516   1% /run/shm
none               102400       68    102332   1% /run/user
/dev/sda6       190822060 65912468 115193268  37% /media/volume1

现在我请求 sda1,它给了我一个错误的答案

michele@OptiPlex-360:~$ df /dev/sda1
File system    1K-blocchi Usati Disponib. Uso% Montato su
udev              1974808     8   1974800   1% /dev

sda6 可以工作

michele@OptiPlex-360:~$ df /dev/sda6
File system    1K-blocchi    Usati Disponib. Uso% Montato su
/dev/sda6       190822060 65912468 115193268  37% /media/volume1

嗯,有什么问题吗?

啊,我在另一台安装了 Ubuntu 的电脑上也遇到了同样的问题。

muru 要求的额外输出:

michele@OptiPlex-360:~$ mount | grep /dev/sda1
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
michele@OptiPlex-360:~$ df /
File system                                            1K-blocchi    Usati Disponib. Uso% Montato su
/dev/disk/by-uuid/2438603c-1bfd-4e79-9f6c-ad6575988aee   45225008 14448908  28455720  34% /

答案1

我个人对此的解释如下:df读取/proc/self/mountinfo文件但未找到/dev/sda1

我知道它的含义,/proc/self/mountinfo因为当我这样做时strace df /dev/sda1,我在输出中得到了以下行

open("/proc/self/mountinfo", O_RDONLY)  = 3

现在,如果我们检查该文件,/dev/sda它不存在,但确实/dev/sdb在那里找到,这解释了这些分区的正确报告。

================
xieerqi:
$ grep 'sda' /proc/self/mountinfo                                              

================
xieerqi:
$ grep 'sdb' /proc/self/mountinfo                                              
43 22 8:18 / /media/WINDOWS rw,nosuid,nodev,noatime - fuseblk /dev/sdb2 rw,user_id=0,group_id=0,allow_other,blksize=4096
49 22 8:21 / /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625 rw,nosuid,nodev,relatime - ext4 /dev/sdb5 rw,data=ordered

为什么它不在那里?我不知道。我只能提供我发现的内容。

但为什么它会udev在输出中报告 ?df查看文件系统,并且/dev/sda1位于/dev文件夹下,这是udev虚拟文件系统的安装位置。如果我们调用df FILE,就像df /homedf /media/MYWINDOWSPARTITION/RANDOMFILE.txt

我建议将其报告为错误,或者至少向 GNU 开发人员询问此行为(从手册页复制)

REPORTING BUGS
       Report df bugs to [email protected]
       GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
       General help using GNU software: <http://www.gnu.org/gethelp/>
       Report df translation bugs to <http://translationproject.org/team/>

编辑

此外,具有以下条目的文件df /再次解释了该行为/proc/self/mountinfo

22 0 8:1 / / rw,noatime,nodiratime - ext4 /dev/disk/by-uuid/86df21bf-d95f-435c-9
292-273bdbcba056 rw,errors=remount-ro,data=ordered

根文件系统本身被挂载为/dev/dis/by-uuid/ACTUAL-UUID-NUMBER.

但我无法解释为什么df不使用参数报告/dev/sda1而不是通过 uuid 报告磁盘路径。原因可能是因为/dev/dis/by-uuid/ACTUAL-UUID-NUMBER 它本身是符号链接/dev/sda1,所以它完全解析它而不使用参数,但使用参数需要搜索/proc/self/mountinfo文件

答案2

这是正常的(对于第二个输出),因为分区是通过其 uuid 挂载的,而不是使用设备名称(这是较旧的样式)。一些 Linux 发行版使用旧样式,而一些使用新样式。这里有一个注释可以更好地解释这个问题通过 uuid 挂载分区

此机制可防止更改硬件内部交换磁盘的磁盘驱动器顺序。如果需要,您可以通过在 /etc/fstab 中指定设备名称来轻松更改此顺序。

相关内容