许多年前,我有一个应用程序失控并填满了所有磁盘空间。这会导致维护某种数据库(广义上)的系统进程写入失败,从而导致这些数据库损坏。我想避免这种情况。
使用 ext2/3/4,可以为超级用户保留一定百分比的磁盘空间,使用恰好用于此目的-m
的选项mke2fs
(“允许 root 拥有的守护进程,例如 syslogd(8))在非- 阻止特权进程写入文件系统”)。
然而,我更喜欢 btrfs 而不是 ext2/3/4,因为它的快照功能,而 btrfs 没有这样的选项。它有磁盘配额,但这些往往会导致快照的性能问题,而且我还发现它们不可靠。
另一个想法是为用户可写空间设置单独的分区,但是为/home
,/tmp
和/var/tmp
(还有更多用户可写位置吗?)设置单独的分区感觉有点矫枉过正,并且每个分区都必须比单独的预测使用情况有一些安全余量,浪费磁盘空间。
还有其他选择吗?
答案1
您使用单独分区的想法是目前唯一可行的想法。然而,这确实并不过分。人们为此目的一直使用单独的分区几十年因为它有效。一些一般建议:
/home
当不使用 BTRFS 时,位于单独的分区上是许多发行版的标准配置,因此所有主要软件都已对其提供了良好的支持。这是最值得担心的地方,因为 95% 的用户会将 95% 的文件放置在此处。/tmp
实际上理想情况下不应是分区。您几乎肯定希望它成为tmpfs
具有自身尺寸限制的安装座。这通常会提高性能并避免浪费磁盘空间,因为/tmp
大多数时候几乎不会放入任何大于几 KB 的数据。/var/tmp
成为坐骑也可能会更好tmpfs
,特别是如果你有地段RAM 和相当数量的交换空间。- 除此之外,根据您的具体系统配置,用户可能将任意数量的数据(直接或间接)写入
/var/lib
、/var/cache
、/var/games
(如果没有/var/lib/games
)、/var/mail
、/var/spool
,以及可能用于网络服务(/var/www
或/var/ftp
用于网络服务)的任何存储目录。例子)。就我个人而言,我只是将/var/cache
、/var/spool
、 和/var/lib
放在它们自己的分区上,当它们开始变满时,只需将/var/cache
./var/mail
如果您实际使用它,则几乎应该始终是它自己的分区,尽管 BTRFS 可能不是最佳选择。 - 可能还有其他地方。官方FHS可能会引起一些兴趣,因为它列出了几乎所有 Linux 发行版使用的标准布局,并提到了什么放在哪里。