![文件系统上为 root 保留的空间 - 为什么?](https://linux22.com/image/16145/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%B8%8A%E4%B8%BA%20root%20%E4%BF%9D%E7%95%99%E7%9A%84%E7%A9%BA%E9%97%B4%20-%20%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
据我所知,默认情况下,新创建的文件系统将使用分配给 root 的空间的 5% 来创建。我还知道您可以通过以下方式更改定义的空间:
tune2fs -m 1 /dev/sdXY
但我很好奇的是,这个保留空间的实际用途是什么。它是否有任何实际用途,在某些情况下值得超过 5% 的空间?
我偶然发现这个问题的原因是我们最近构建了一个 1TB 文件存储,并且不太清楚为什么 df -h 让我们丢失了 5% 的容量。
答案1
为重要的根进程(以及可能的救援操作)节省空间是原因之一。
但还有另一个。 Ext3 非常擅长避免文件系统碎片,但一旦达到 95% 以上,这种行为就会急剧下降,文件系统性能突然变得一团糟。因此,保留 5% 可以为您提供缓冲。
Ext4 应该在这方面做得更好,因为Linux 文件系统开发者/大师 Theodore Ts'o 解释:
如果将保留块计数设置为零,则不会对性能产生太大影响,除非您长时间运行(创建和删除大量文件)而文件系统几乎已满(即超过 95%),此时您将遇到碎片问题。 Ext4 的多块分配器具有更强的抗碎片能力,因为它更努力地寻找连续的块,因此即使您不启用其他 ext4 功能,只需在文件系统之前使用 ext4 挂载 ext3 文件系统,您也会看到更好的结果完全满了。
如果您只是使用文件系统进行长期存档,其中文件不经常更改(即巨大的 mp3 或视频存储),那么显然这并不重要。
答案2
例如,如果您允许其他人通过 ssh 登录到您的系统,则保留这 5% 的块可确保外部用户无法填充磁盘。即使您不允许其他人登录您的系统,保留的块也可以防止非以 root 身份运行的程序填充您的磁盘。
答案3
默认值 5% 适用于系统分区。例如,如果您的磁盘空间已满,系统日志 ( /var/log
) 和根邮箱 ( /var/mail/root
) 仍然可以接收重要信息。对于/home
一般的数据存储分区来说,不需要给root留任何空间。如果有特殊需要,您可以更改获得紧急空间的用户(tune2fs -u 1234
)。
不允许 ext[234] 文件系统变满还有另一个原因,那就是碎片化。
答案4
使用保留的块,您的用户以及作为特定用户运行而不是作为 root 运行的服务无法填充文件系统,并可能破坏需要写入所述文件系统的其他内容 - 尽管作为 root 运行的服务仍然可以完全完成它当然满了。
当用户抱怨磁盘已满或服务因文件系统已满而开始失败时,它还为您提供了一些可用空间。例如,您可以在删除某些文件之前将它们存档到 zip/gz/7zip 存档中(尽管如果文件系统完全满,则您可能有其他可用的文件系统可以在其中创建存档文件)。
5% 已成为默认值长的从那时起,磁盘要小得多(几十兆字节而不是数百千兆字节),所以 5% 并不算多。幸运的是,如果您使用tune2fs
s-r
选项而不是 ,它可以轻松地调整到您所说的较小百分比,或者设置为特定数量的块-m
。在这两种情况下,您都可以给出参数 0 来完全关闭保留 - 我不会为 、 等执行此操作/
,/tmp
但/var
您可能希望对于仅充当用户存储的文件系统(例如全局文件)共享)或仅保存固定大小文件(如固定大小的虚拟机)的文件,这些文件仅在您创建新文件时才会增长。