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


16

我有一个分区/ 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

为什么结果不同?丢失的31 GB在哪里?


3
请发布输出fdisk -l /dev/sda(以root身份运行)。
吉尔(Gilles)“所以,别再邪恶了”,

2
您正在使用什么文件系统?如果它是ext2 / 3/4,则可以使用tune2fs -l /dev/sda1它进行检查。查看块数和块大小,并将它们相乘以获得文件系统大小。另外,fdisk -s /dev/sda1要获得1k块的分区大小。将该值乘以1024得到字节大小。该数字应仅比文件系统稍大。在我的40GB ext4分区上,它大了3072个字节。如果文件系统异常小,则可以尝试调整其大小。对于ext2 / 3/4,请使用resize2fs /dev/sda1。您可以在正常使用计算机时执行此操作。
penguin359 2011年

@Gilles sudo fdisk -l / dev / sda显示(我仅发布sda1分区,因为其他人对我们不感兴趣)。设备引导启动结束块ID系统/ dev / sda1 1 18706 150253568 83 Linux
xralf 2011年

@ penguin359我有ext4文件系统。块数= 32668162,块大小= 4096,32668162 * 4096 = 133808791552,fdisk -s / dev / sda1 * 1024 =153859653632。它似乎更小。我可以调整大小而不会丢失数据吗?是什么导致它变小?
xralf 2011年

@xralf:调整大小应该是安全的,我从来没有丢失过这样做的数据。将其安装到未挂载的分区(例如活动cd)可能会稍微安全一些。但是,仍然要先备份自己。在进行主要的系统管理员工作之前,请务必获得备份。
Faheem Mitha

Answers:


25

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

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

因此df实际上显示的是文件系统的大小,通常是设备的大小,但这在您的情况下可能不正确。文件系统是否扩展到整个分区?

是否

resize2fs /dev/sda1

有什么不同吗?该命令尝试增加文件系统以覆盖整个分区。但是,如果尝试此操作,请确保有备份。


>>您的文件系统是否扩展到整个分区?我认同。它是ext4。<br>我应该备份什么?我没有任何辅助磁盘可以进行更大的备份。
xralf 2011年

@xralf :(好的,就这个问题而言,这是不合时宜的,但是...)如果没有备份,请立即进行设置。好的备份的唯一替代方法(不是很好的替代方法)是系统地使用分布式版本控制系统,并将其推送到某个远程位置。但是,当然,您不能将所有内容都置于版本控制之下。媒体。如果我忙的话请原谅。
Faheem Mitha

@xralf:我会将您的输出结果发布到问题本身中,更易于查看和阅读。
Faheem Mitha

resize2fs是非常安全的操作,无需为其备份(如果您具有稳定的电源并且使用稳定的软件)。顺便说一句,ext *文件系统的默认保留块计数为5%。
rvs

@rvs:不同意重新备份。您至少对Debian的5%感到正确。我记错了。但是我不知道这在所有发行版中是否都是标准的。
Faheem Mitha

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可以帮助您了解空间的去向。


磁盘实用程序精确显示的容量为154 GB(153,859,653,632字节)。
xralf 2011年

>> sudo tune2fs -l / dev / sda1 <<哪些参数告诉我空间的去向?
xralf 2011年

2

它们可能被inode使用。MBR可能会用完一些金额。


1
MBR不会像在柱面0中那样出现(甚至不在第一个分区中,该分区通常从扇区2048开始)。但是,有超级块的副本。仍然是inode。另请参见:unix.stackexchange.com/questions/13547/…以及命令“ lsblk / dev / sdX”和“ dumpe2fs -h / dev /
sdX

1

sda1不是您的整个磁盘,而是它的第一个主分区。您可能创建了其他未挂载的分区,这些分区未显示在df输出中,或者只是由于某种原因使sda1不能填充所有可用空间,或者文件系统未使用其分区中的所有可用空间。

fdisk -l 会告诉您分区表的外观。


当然。我们只在谈论/ dev / sda1分区,而不是整个磁盘。
xralf 2011年

从您的问题来看,这并不明显,因为您在不显示其输出的情况下引用了磁盘实用程序。您应该对其进行编辑以使其清楚。告诉您如何创建/文件系统也将很有用。
jlliagre 2011年

磁盘实用程序输出的相关部分是“ sda1分区的容量= 154 GB”。
xralf 2011年

请修改您的原始问题以使其清楚。
jlliagre 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.