![为什么 df -h 显示的信息与 fdisk -l 不同](https://linux22.com/image/915007/%E4%B8%BA%E4%BB%80%E4%B9%88%20df%20-h%20%E6%98%BE%E7%A4%BA%E7%9A%84%E4%BF%A1%E6%81%AF%E4%B8%8E%20fdisk%20-l%20%E4%B8%8D%E5%90%8C.png)
我试图理解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
。无需卸载分区,可在线完成。如果要增加保留块百分比,应确保分区上有足够的可用空间。更改将立即生效。