我运行双引导系统,Linux 发行版是 Ubuntu 14.04。
我使用 GParted 扩大了一个名为 的逻辑分区,目录通常安装在该逻辑分区/dev/sda6
上。/home
根据 GParted 报告,该操作已成功完成。该分区大小为 85 GiB,其中已使用 83 GiB,空闲 2 GiB (d),符合预期。
然而,这有两个奇怪的地方:
登录后无法识别此增益。当我使用 检查磁盘使用情况时
df -h
,报告显示/dev/sda6
正确安装在 上的分区/home
大小为 85 GiB,其中 83 GiB 已使用,0可用。据称使用率为100%。另一个奇怪的是我可以通过图形用户界面定期登录我的用户个人资料。但是,在识别凭据后,系统将停止运行并且不会进入桌面环境。为了获取
df -h
信息,我需要在任何文本终端中使用我的常规身份登录,或者在图形用户界面中使用访客身份登录。顺便说一句,数据看起来并没有被损坏。
我该如何解决这种情况?目的是使分区大小的增加完全可供操作系统使用。谢谢你的协助。
答案1
您可能正在使用其中一种ext
文件系统(通常是默认的 Linux 文件系统ext4
)。大多数时候,在创建时,它将使用一个名为 的特定缓冲区来创建reserved blocks
。该保留空间只能由系统进程和 root 写入,从而保护操作系统免受用户磁盘填充的影响。
主要目的df
是显示总计中可用的磁盘空间量。虽然它还显示(用户)使用的空间,但它不会显示此保留空间。
默认情况下,此缓冲区占整个磁盘的 5%。您可以检查是否有这样的缓冲区sudo tune2fs -l /dev/sda6 | grep Reserved
。通过键入,sudo tune2fs -l /dev/sda6 | grep [bB]locks
还可以读取保留块的数量和块大小(以 B 为单位),从而确定该结构占用的分区空间。这可以解释系统看到 85GiB,但只有 83 个已使用,0 个空闲。
如果您确实需要,可以将缓冲区设置为较低的值sudo tune2fs -m 2 /dev/sda6
(2 是百分比示例值,默认情况下为 5)。
更好的选择是实际调整大小,以便有足够的可用磁盘空间以保证安全。 85GiB 中的 2GiB 仅占 2.35%,这并不是很多,而且在大多数情况下会相对较快地填满。如果你确定你的空间使用量会稳定在83GiB,那么你可以使用tune2fs保留0%的空间以确保安全,但是一旦你的磁盘填满(到85GiB),你将无法登录所有这些,机器可能会崩溃并且更难修复。
5%的安全边际是一个相对合理的安全边际。因此,在这种情况下,我会将分区设置为至少 90GiB,但可能甚至 100 或更多,只是为了有一些空间用于紧急情况。磁盘空间很便宜,修复因磁盘已满而引起的问题的时间可能会更昂贵。
的答案这个问题给出更多关于推理的见解。
答案2
为了更好地描述情况,应该消除一些语言上的混乱。格帕特,df和调2fs对于有关磁盘空间的略有不同的概念,请使用相同或相似的词语。
我用伪方程重写了我的理解并重载了这些运算符:
'=' means 'corresponds to'
'@' means 'according to'
我开始使用df -h
并进一步保留这一低调。请注意tune2fs -l
,根据适当的语法,通常会返回块计数以及块大小。通过将一个乘以另一个,就可以得到磁盘空间大小。确保磁盘空间度量以相同的基数(2 或 10)表示。
首先,从以下观点来看格帕特
size @ gparted = size @ df = block count * block size @ tune2fs
unused @ gparted = free blocks * block size @ tune2fs
used @ gparted = used @ df = (block count - free blocks) * block size @ tune2fs
到目前为止,它非常直观。
那么,以df
size @ df = size @ gparted = block count @ tune2fs
used @ df = used @ gparted = (block count - free blocks) *block size @ tune2fs
available @ df = max[(free blocks - reserved block count) * block size @ tune2fs, 0]
所以,可用的@df
表示不同于自由的@tune2fs
和没用过@ gparted
。
总之,可用空间df
衡量过量的的总空间(在 中表示为可用tune2fs
或未使用)gparted
超过由une2fs 保留的配额。当超出量为零时,表明为良好运行而保留的磁盘空间不足。