磁盘使用混乱:SSD上的Linux主分区上缺少10G


15

Linux Mint告诉我,我只有622 MB的可用磁盘空间,但应该还有几GB的空间。

看着分区,我被告知大约有10 GB未使用。我在问题上进行了搜索,但没有找到解决方案,但确实找到了应该使用来检查磁盘使用情况的提示df -h

sudo df -h /home
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p8  189G  178G  622M 100% /home

输出对我来说没有任何意义:Size和之间的区别Used是11GB,但仅显示622M为Available。

SSD并不老,所以我不希望出现这样的差异。

我该怎么办?


3
正如@Kusalananda所评论的那样,您不仅应该质疑为什么没有获得那10GB(我希望我在回答中正确解决了这些问题),而且还要为什么要使用/ home中的大部分空间。如果您知道原因(例如:存储大量媒体文件等),那还好,如果您不这样做,则应为此担心,因为潜在的清理工作可节省10GB以上的空间。那会是什么呢?
AB

“查看分区时,我得知大约有10 GB未使用。” —您是从哪里得知的?
ctrl-alt-delor

2
@ ctrl-alt-delor从df的输出–大小:189G,使用的:178G
billyjmc

@ ctrl-alt delor,我从gparted得到了10GB的数据,后来从df的输出中得到了11G的数据,因为billyjmc可以正确推断出。
tobiornottobi

Answers:


22

如果文件系统是ext4,则保留块,主要用于帮助处理并避免碎片,并且仅对root用户可用。对于此设置,可以使用tune2fs对其进行实时更改(安装文件系统时,并非所有设置都可以像这样处理):

-m保留块百分比

设置只能由特权进程分配的文件系统的百分比。保留一些文件系统块以供特权进程使用是为了避免文件系统碎片,并允许系统守护程序(例如syslogd(8))在防止非特权进程写入文件系统后继续正常运行。通常,保留块的默认百分比为5%。

因此,如果您要将预留空间降低到1%(〜2GB),从而可以访问〜8GB的剩余预留空间,则可以执行以下操作:

sudo tune2fs -m 1 /dev/nvme0n1p8

注意:该-m选项实际上接受一个十进制数字作为参数。您只能-m 0.1用来保留约200MB(并访问以前无法使用的大多数10GB)。您也可以使用该-r选项来直接按块保留。不建议保留0个保留块。


3
用户没有“找回” 8 GB。会增加8 GB的可用空间。最好跟踪使用了所有磁盘空间的东西,然后在适当时进行清理,或者将其移动到其他地方或扩大分区。
Kusalananda

1
@Kusalananda我将更改词汇表。至于用法,我需要OP的反馈。这个问题从未暗示没有未知的高使用率,仅丢失了10GB。
AB

1
一个非常好的和有用的答案,谢谢。5%似乎与丢失的10 GB非常清楚地匹配。我不担心总体上使用这么多的磁盘空间,并且仍然可以扩展分区。:)
tobiornottobi

4
您的答案当然是正确的,但是可能值得注意的是,在这种情况下,根保留空间的价值并不大。这是/home,并且为根保留空间并不像在文件系统的其他部分那样重要(例如,确保仍然可以写入系统日志)。另外,由于这是SSD,因此防止碎片可能没有像旋转金属磁盘那样优先。
marcelm19年

@marcelm对我来说有意义。但是它在SSD的/ home分区上仍然有用还是仅仅是浪费空间?您是否建议将根保留空间减少到1%?
tobiornottobi '19

8

删除的文件也可能导致“空间不足”

lsof | grep deleted | grep /home

为我返回此输出

chrome    11181           criggie   15u      REG              254,0   
4194304  50651663 /home/criggie/.config/google-chrome/BrowserMetrics/BrowserMetrics-5D0236AF-2BAD.pma (deleted)

这表明以PID 11181运行的Chrome浏览器打开了该BrowserMetrics文件,然后将其删除,并且文件句柄仍处于打开状态。这意味着该文件在目录列表中不可见,但仍占用磁盘空间。

为什么程序要这样做?当运行中的二进制文件终止时,操作系统将释放打开的文件句柄,并且磁盘上的文件将消失,而不会留下陈旧的临时文件。

我看不到该文件的磁盘使用量有多大。


2
大多数编写精良的程序都不应该这样做。这是一个错误,应该报告,这只是大多数隐晦的错误直到您进入优化阶段才会真正出现,如果不存在,可能甚至在测试期间根本无法检测到。请注意,他们这样做可能有一个特定的原因,可能是我不知道此处将手柄保持如此长时间打开的理由。
醉酒的代码猴子

4
@DrunkenCodeMonkey Dude-它的Chrome ...完全正确。
Criggie

4
@DrunkenCodeMonkey,很多编写出色的程序都可以做到这一点。在* nix上创建临时文件的打开-删除-关闭模式几乎是通用的,因为它保证了无论程序如何退出,该文件都会在程序退出时被删除:正常终止,崩溃,由于内存不足而终止,终止停电等原因
标记

3
@DrunkenCodeMonkey那么,如果程序从未完成过该怎么办?
大约

3
@DrunkenCodeMonkey:模式是打开-删除- 工作-关闭。如果程序仍在使用临时文件的内容(例如,将其用作磁盘缓存或将遥测数据记录到其中),则它必须保持打开状态。(当然,这实际上也确实是程序应该关闭但没有关闭的陈旧未关闭文件句柄。但是鉴于只有一个这样的文件,并且没有其他明显迹象表明存在资源泄漏,我先假设文件可能是故意打开的。)
Ilmari Karonen
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.