为什么 df -h 显示的信息与 fdisk -l 不同

为什么 df -h 显示的信息与 fdisk -l 不同

我试图理解fdisk -l和的输出之间的区别df -h。据我了解,fdisk显示分区大小,并df显示文件系统的大小。

我的问题是分区的大小和文件系统的大小不匹配。

从中fdisk -l我们可以看到挂载的分区大小/dev/sda5/为797.2GiB。

# fdisk -l
Disk /dev/sda: 894.3 GiB, 960197124096 bytes, 1875385008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xab99345d

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sda1  *          2048  197509119  197507072  94.2G 83 Linux
/dev/sda2        197511166 1875384319 1677873154 800.1G  5 Extended
/dev/sda5        197511168 1869383679 1671872512 797.2G 83 Linux
/dev/sda6       1869385728 1875384319    5998592   2.9G 82 Linux swap / Solaris

Partition 2 does not start on physical sector boundary.


Disk /dev/sdb: 894.3 GiB, 960197124096 bytes, 1875385008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

从中df我们可以看到文件系统的大小为784GiB。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             32G     0   32G   0% /dev
tmpfs           6.3G  808K  6.3G   1% /run
/dev/sda1        93G   12G   76G  14% /
tmpfs            32G     0   32G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            32G     0   32G   0% /sys/fs/cgroup
/dev/sda5       784G   70M  744G   1% /var/lib/test
tmpfs           6.3G     0  6.3G   0% /run/user/900

我总共有 744G 可用空间。这没问题,因为文件系统的 5%(784)被保留了。

总结一下:

fdisk -l:797.2G

df -h :784

丢失的 13GiB 在哪里?

编辑

我使用 pxe preseed 创建分区:

d-i partman/alignment select optimal
d-i partman-auto/disk string /dev/sda
d-i partman-auto/expert_recipe string                        \
     boot-root ::                                            \
             500 10000 1000000000 ext4                       \
                     $primary{ } $bootable{ }                \
                     method{ format } format{ }              \
                     use_filesystem{ } filesystem{ ext4 }    \
                     mountpoint{ / }                         \
             .                                               \
             856000 1000 856000 ext4                         \
                     method{ format } format{ }              \
                     use_filesystem{ } filesystem{ ext4 }    \
                     mountpoint{ /var/lib/test }             \
             .                                               \
             64 512 300% linux-swap                          \
                     method{ swap } format{ }                \
             .
d-i partman-auto/method string regular
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

我跑步lsblk。(

#lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 894.3G  0 disk
├─sda1   8:1    0  94.2G  0 part /
├─sda2   8:2    0     1K  0 part
├─sda5   8:5    0 797.2G  0 part /var/lib/test
└─sda6   8:6    0   2.9G  0 part [SWAP]
sdb      8:16   0 894.3G  0 disk

谢谢。

答案1

你的输出总是会有差异

~$ sudo fdisk -l
Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda6       378750976 625139711 246388736 117.5G 83 Linux

~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda6       116G   61M  110G   1% /media/datam

就我的情况而言,差异约为 1.5 GB,约占分区大小的 1.3%。

要确定实际文件系统大小,您可以使用

~$ sudo tune2fs -l /dev/sda6
Block count:              30798592
Block size:               4096

我们可以在这里看到文件系统和分区具有相同的大小:

Filesystem size is  30798592 × 4096 = 126151032832 > 117.487304688 GiB
Partition size is  246388736 x  512 = 126151032832

man df

df displays the amount of disk space available on the file system

因此df不显示文件系统的大小,它显示用户可用的大小。文件系统中的某些空间是为文件系统(例如日志)保留的,不供用户使用,因此不显示。

当我以 1.3% 计算时,800 GB 分区将有大约 10.4 GB 的差异,这非常接近您缺少的空间量,它不是在空间中丢失,而是文件系统开销。

注意:我将示例中的命令输出剥离为相关行以保持整洁。

预留空间

预留空间可用,但仅供用户使用.df显示已使用的空间量,令人困惑的是,无论您以何种方式df运行,都会显示相同的值df或以其他用户身份。在默认配置中,将保留 5% 的空间用于(原因见这里)。我认为可以减少这个空间量,这对于您相当大的分区来说是有意义的,因此其他用户将有更多空间可用。请随意减少为到百分之一或二

sudo tune2fs -m X /dev/sda5

用所需的保留块百分比替换X。无需卸载分区,可在线完成。如果要增加保留块百分比,应确保分区上有足够的可用空间。更改将立即生效。

相关内容