为什么 df 得到的结果与 lsblk 不一致?

为什么 df 得到的结果与 lsblk 不一致?

在此输入图像描述

df 产生的输出与 lsblk 一致

debian8@hwy:~$ df -h   /dev/sda1
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        47G   34G   14G  72% /media/xp_c
debian8@hwy:~$ df -h   /dev/sda3
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        92G   36G   52G  42% /

df 产生的输出与 lsblk 不一致

debian8@hwy:~$ df -h   /dev/sda4
Filesystem      Size  Used Avail Use% Mounted on
udev             10M     0   10M   0% /dev
debian8@hwy:~$ df -h   /dev/sda5
Filesystem      Size  Used Avail Use% Mounted on
udev             10M     0   10M   0% /dev
debian8@hwy:~$ df -h   /dev/sda6
Filesystem      Size  Used Avail Use% Mounted on
udev             10M     0   10M   0% /dev
debian8@hwy:~$ df -h   /dev/sda7
Filesystem      Size  Used Avail Use% Mounted on
udev             10M     0   10M   0% /dev

如何解释输出LSBLKdf-h
有时 df 无法获得有关磁盘的正确信息。

sudo fdisk -l 

Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3b2662b1

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *         2048  97851391  97849344 46.7G  7 HPFS/NTFS/exFAT
/dev/sda2        97851392 195508223  97656832 46.6G 83 Linux
/dev/sda3       195508224 390819839 195311616 93.1G 83 Linux
/dev/sda4       390821886 449411071  58589186   28G  5 Extended
/dev/sda5       390821888 400584703   9762816  4.7G 82 Linux swap / Solaris
/dev/sda6       400586752 439646207  39059456 18.6G  b W95 FAT32
/dev/sda7       439648256 449411071   9762816  4.7G  7 HPFS/NTFS/exFAT

答案1

其实有两个问题。第一个是其他人指出的明显的:lsblk 按设备列出磁盘,而 df 适用于已安装的文件系统。因此lsblk /dev/sda3大致相当于df -h /您的情况,因为 /dev/sda3 安装在 / 上。

但事实并非如此。因为lsblk列出了分区的大小,同时df列出了文件系统的大小。差异(示例中 sda3 的 93.1GB 与 92GB)是不可用空间(如果有)和文件系统开销的组合。需要一定量的空间来跟踪文件系统本身,而不是它存储的文件的内容。

答案2

/dev/sda4未安装分区等。由于它们未安装,df因此报告特殊文件等本身所在的文件系统的大小/dev/sda4;这是一个安装在/dev.使用sudo file -s /dev/sda4etc. 找出这些分区上存在哪些文件系统(如果有)。如果您想使用它们df来了解已使用或可用的空间量,请将它们安装在某处。

一个例子:

$ df /dev/sdb1            # /dev/sdb1 is not currently mounted
Filesystem     1K-blocks  Used Available Use% Mounted on
udev              234040     0    234040   0% /dev

$ sudo mount /dev/sdb1 /mnt
$ df /dev/sdb1             # Now it is mounted and df can show used and free space
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/sdb1       60787696 498464  60289232   1% /mnt

答案3

这是因为 df 仅显示已安装文件系统的信息。 sda1 和 sda3 已安装,因此它们显示正确的信息。

相关内容