Debian 中缺少空格

Debian 中缺少空格

我遇到了一些奇怪的事情。通常,我会使用 df 显示硬盘上当前的可用空间,但我发现我的主分区空间不足。因此,我打开 gparted,发现实际空间比 df 显示的要多。差异为 5%,几乎是 2GB。我将尝试使用 testdisk 来查看是否有问题。

这是 fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 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
Disk identifier: 0x11a8ba38

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63    10233404     5116671    b  W95 FAT32
/dev/sda2        10233405   231239679   110503137+   7  HPFS/NTFS/exFAT
/dev/sda3       231241726   312580095    40669185    5  Extended
/dev/sda5       308385792   312580095     2097152   82  Linux swap / Solaris
/dev/sda6       243032064   308383743    32675840   83  Linux
/dev/sda7       231241728   243030015     5894144   83  Linux

Partition table entries are not in disk order

然后 parted -l:

Model: ATA TOSHIBA MK1652GS (scsi)
Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system     Flags
 1      32.3kB  5240MB  5239MB  primary   fat32
 2      5240MB  118GB   113GB   primary   ntfs
 3      118GB   160GB   41.6GB  extended
 7      118GB   124GB   6036MB  logical   ext4
 6      124GB   158GB   33.5GB  logical   ext4
 5      158GB   160GB   2147MB  logical   linux-swap(v1)

df -h 显示:

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             4.9G  4.1G  860M  83% /media/sda1
/dev/sda2             106G   86G   21G  81% /media/sda2
/dev/sda6              31G   29G  807M  98% /media/sda6
/dev/sda7             5.6G  3.8G  1.6G  71% /media/sda7

sda1 是笔记本电脑的恢复分区,sda2 是 Windows 分区,sda6 是 /home,sda7 是根分区。

正如您在下面的屏幕截图中看到的,sda1 和 sda2 都可以通过 df 正常显示,而 6 和 7(在扩展分区中)则不行。:/

gparted 显示: gparted 屏幕截图

cfdisk 抱怨:FATAL ERROR: Bad logical partition 6: enlarged logical partitions overlap这是它以前从未遇到过的。在我使用 liveUSB 来使用 gparted 调整分区大小和移动分区后,这种情况开始发生。它无法缩小我的 Windows 分区上的文件系统,然后当它刷新时,一切看起来都正常。

我打算在将 partedmagic liveUSB 装到闪存驱动器上后立即试用它,有其他人遇到过这个问题或知道解决办法吗?我还想修复我的表条目,使它们井然有序,但这可以改天再做。

编辑:所以我在 partedmagic 中,测试磁盘告诉我:

Disk /dev/sda - 160 GB / 149 GiB - CHS 19457 255 63
Current partition structure:
     Partition                  Start        End    Size in sectors

 1 P FAT32                    0   1  1   636 254 63   10233342 [PQSERVICE]
 2 P HPFS - NTFS            637   0  1 14394   1  7  221006275 [XP]
 3 E extended             14394  33 38 19457  53 52   81338370

Bad sector count.

因此我猜想这需要以某种方式进行修复,我会看看是否可以利用我所了解的 testdisk 来修复它。

不带人类可读命令的 df 显示以下内容:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1              5106660   4226416    880244  83% /media/sda1
/dev/sda2            110503132  89294228  21208904  81% /media/sda2
/dev/sda6             32164696  29691780    839128  98% /media/sda6
/dev/sda7              5801560   3902728   1604128  71% /media/sda7

32164696 - 29691780 != 839128,某个地方出了问题。

找到这里发生的事情的答案:https://askubuntu.com/a/48511来自 Google,由 Mike 提供的一些好主意。我确实觉得很傻。

答案1

我不知道如何解决您的问题,但我记得当我对硬盘进行分区时,其中一个选项是为 root 用户保留多少空间,默认值为 5%。我认为这个想法是,即使您(作为普通用户)空间不足,计算机也不会崩溃,因为所有重要的东西都以 root 身份运行,并拥有额外的 5% 空间。

答案2

虽然扇区错误可能是一个问题,但丢失的磁盘空间只是来自不同实用程序使用的不同单位。

gparted 正在使用吉比字节并且 df 正在使用千兆字节。

31.16Gib = 31.16 x 1024 x 1024 x 1024 字节,或 33457795235

1 GB 为 1000000000 字节,因此四舍五入后为 33457795235 / 1000000000 = 33.5GB。

答案3

我不知道或的实现细节df,但我可以告诉你,测量文件系统中的可用空间并不总是一成不变的。我可以想象在某些情况下,两个人(或程序)可能对某个假设的文件系统有多少可用空间存在分歧。ext{2|3|4}gparted

  1. 考虑一下文件系统分配空间的粒度比文件大小更粗。如果您的文件系统以大小为 的块进行分配x,而您的文件为x + 1字节,2x则将分配 ,留下x - 1浪费的空间。该空间是“空闲”的吗?除非您更改文件的长度,否则您的文件系统永远不会使用它,但一个简单的程序可能只计算文件大小,因此会少报空间使用量/多报空闲字节数。

  2. 想象一下,在某些情况下,您的内核文件系统驱动程序可能具有一些运行时功能,这些功能会造成可用空间减少的现象。例如,它可能为当前打开的正在写入的文件分配了过多的空间,以确保在您可能向文件附加内容时获得连续的分配。或者可能为日志或其他元数据留出了一些空间。我可以想象您的文件系统驱动程序对空间的概念与实际写入磁盘的内容不同。

  3. 一些元数据可能被缓存,其中一个正在读取缓存,另一个正在对磁盘进行更深入的检查。我不知道ext文件系统家族是做什么的,但我特别想到了 FAT,其中可用空间被缓存在一个 32 位整数中,以加快查询可用空间的速度。

  4. 可能有一些空间被标记为“正在使用”(以便将来不会分配该空间)但未被任何 inode 引用。这可能表示发生了一些奇怪的事情(I/O 故障?磁盘损坏?)。我认为fsck程序通常会检查这类事情。

这些都是假设的;我不知道真正的答案是什么。无论如何,从其他消息来看,可能存在一些问题。我会去fsck看看它说了什么。

答案4

正如 Mike 所说,ext4 分区中有一些空间仅供 root 用户使用,以防止非 root 用户填满硬盘。有关此内容的更多信息,请参阅 askubuntu 上此答案的评论:https://askubuntu.com/a/48511

如果您觉得不需要这个(作为这台计算机上的单个用户,我不需要),您可以使用 tune2fs 删除这些保留块:

tune2fs -m 0 /dev/XXX

其中 XXX 是您要从中删除保留块的分区。

相关内容