我知道这个功能可以追溯到 20 年前,但我仍然想知道
ext2/3/4 文件系统中保留块的用途是什么?
答案1
的手册页tune2fs
给了你一个解释:
保留一定数量的文件系统块供特权进程使用是为了避免文件系统碎片,并允许系统守护进程(例如 syslogd(8))在阻止非特权进程写入文件系统后继续正常运行。
它还可以起到故障保护的作用;如果由于某种原因,普通用户及其程序将磁盘填满至 100%,您甚至可能无法在删除文件之前登录和/或同步文件。通过保留一些块root
,系统确保您始终可以纠正这种情况。
实际上,5% 是旧的默认值,如果您的硬盘驱动器足够大,则可能会太多。您可以使用前面提到的工具更改该值tune2fs
,但请务必先阅读其手册页!
答案2
保留少量块仅供 root 使用的目的是给 root 有机会登录,并给他们一点喘息空间,以便在磁盘完全满的情况下腾出空间。如果没有它,root 可能无法登录,因为当写入文件时出现意外错误(如utmp
和wtmp
、文件 in/dev/pts
等)时,登录过程会失败。人们可能希望登录过程是健壮的,即使在磁盘已满的情况下也能正常工作,但登录过程中的磁盘已满错误通常可能是一种测试较少的代码路径。
当然,如今,即使是一小部分块也代表了比此目的所需的更多的空间!
答案3
Reserve % 的部分目的是允许文件之间存在“空口袋”,以帮助防止碎片。稍后修改文件不一定会强制文件被分成碎片,因为最初写入时有些东西就停在文件的尾部。
还有紧急恢复方面,root 需要能够登录并清理内容,因为出现问题并填满了驱动器(无论是用户还是配置错误的程序)。
适当的保留百分比在很大程度上取决于分区的用例。如果分区是操作系统磁盘,则为根保留 5-10% 似乎完全合理,即使对于非常大的分区也是如此。对于用户数据分区,通常不需要任何保留,除非可能有助于防止碎片。