这种奇怪的行为几天前就开始了。这是所有文件系统的 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 /home
或df /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 中指定设备名称来轻松更改此顺序。