为什么分区大小和df输出不同?

xra*_*alf 21 partition disk-usage

我有一个分区/dev/sda1。
磁盘实用程序显示它具有 154 GB 的容量。
df -h显示

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             123G  104G   14G  89% /
devtmpfs             1006M  280K 1006M   1% /dev
none                 1007M  276K 1006M   1% /dev/shm
none                 1007M  216K 1006M   1% /var/run
none                 1007M     0 1007M   0% /var/lock
none                 1007M     0 1007M   0% /lib/init/rw
Run Code Online (Sandbox Code Playgroud)

为什么结果不同?缺少的 31 GB 在哪里?

Fah*_*tha 29

分区容量可能不同的原因之一是为 root 保留了一些空间,以防分区已满。如果没有为 root 保留的空间,并且分区已满,系统将无法运行。但是,这种差异通常约为 1%,因此这并不能解释您的情况的差异。从 df 的手册页

如果参数是包含已挂载文件系统的磁盘设备节点的绝对文件名,则 df 显示该文件系统上的可用空间,而不是包含设备节点的文件系统(始终是根文件系统)上的可用空间。

所以 df 确实显示了文件系统的大小,这通常是设备的大小,但在您的情况下可能并非如此。您的文件系统是否扩展到整个分区?

resize2fs /dev/sda1
Run Code Online (Sandbox Code Playgroud)

有什么区别吗?此命令尝试增加您的文件系统以覆盖整个分区。但是,如果您尝试这样做,请确保您有备份。


Mik*_*kel 5

主要区别是因为有些人说 1 KB 是 1000 字节,而其他人说 1 KB 是 1024 字节。

Gnome Disk Utility 使用 1 KB = 1000 字节显示容量,因为磁盘制造商以这种方式描述磁盘大小。这意味着您的磁盘容量接近154,000,000,000 字节

另一方面,大多数操作系统说 1 KB = 1024 字节。所有的工具都喜欢dffdisk使用这个约定。所以 154,000,000,000 字节 / 1024 / 1024 / 1024 = 143.4 GB

正如 jlliagre 正确指出的(Gilles 在要求您的fdisk输出时暗示),磁盘实用程序会告诉您整个硬盘的大小。但是/dev/sda1是硬盘上的单个分区。例如,您的硬盘上可能还有其他一些分区,例如用于交换的 4-8 GB 分区(也称为虚拟内存)和一个通常约为 100 MB 的引导分区。

您没有发布 的​​输出fdisk -l /dev/sda,所以让我们假设您的交换分区是 8 GB。现在我们减少到135 GB

然后,还有一些其他因素导致了这种差异。

例如,文件系统使用一些磁盘分区来存储元数据。元数据是文件名、文件权限、分区的哪些部分属于哪些文件以及分区的哪些部分是空闲的。在我的系统上,大约 2% 的分区用于此目的。假设您的类似,它会将可用空间降低到大约132 GB

文件系统还可以保留一些只能由 root 用户使用的空间。在我的系统上,它是分区的 5%,所以在你的情况下,这意味着总容量约为125 GB

确切数字取决于您是否使用 ext2、ext3、ext4、fat、ntfs、btrfs 等,以及格式化分区时使用的设置。

如果您使用的是 ext2 或 ext3,sudo tune2fs -l /dev/sda1可以帮助了解空间的去向。