新手配置Linux磁盘配额应优先限制/var和/home分区:/var写满致SSH/login失败,/home塞爆使用户登录退回界面;根分区不可设quota。四步操作为修改fstab、remount、quotacheck、quotaon,并为syslog等服务账户设硬限防崩溃。

新手配置Linux磁盘配额防服务崩溃,关键不是限制根分区,而是守住/var和/home——前者日志写满会卡住PAM认证导致SSH和login失败,后者塞爆会让用户无法创建临时文件,直接退回登录界面或黑屏。操作本身不复杂,但顺序和细节错不得。
先锁定两个高危分区
/var 和 /home 是服务崩溃的“导火索分区”,必须优先处理:
- /var:存放系统日志(/var/log)、SSH密钥缓存、journal日志等,一旦写满,sshd拒绝新连接,login报“Authentication failure”却实际是磁盘满
- /home:普通用户登录时要写 .bash_history、.Xauthority、.cache 等,空间不足会导致shell初始化静默失败
- 不要碰根分区(/):它默认不支持 usrquota 挂载选项,强行启用可能引发系统启动失败
四步启用配额(以 /var 为例)
假设你的 /var 是 ext4 格式(主流发行版默认):
- 编辑 /etc/fstab:在 /var 对应行挂载参数中加入 usrquota,grpquota,例如:
UUID=abc123 /var ext4 defaults,usrquota,grpquota 0 2 - 立即重挂载:
sudo mount -o remount /var,再用mount | grep var确认输出含 usrquota - 生成配额文件:
sudo quotacheck -cugm /var,成功后执行ls /var/aquota.*应看到两个非空文件 - 开启配额:
sudo quotaon /var,用sudo quotaon -p验证状态为 enabled
给服务账户设硬限(不是普通用户)
登录失败和崩溃多由 syslog、www-data、postgres 等服务账户日志疯长引起:
- 查 UID:
getent passwd syslog(通常 UID=101),然后运行sudo edquota -u syslog - 在编辑器中填入(单位 KB):
• blocks 行:soft 留空或 0,hard 填 512000(即 500MB)
• inodes 行:soft 留空,hard 填 50000(防小文件刷爆 inode) - 同样操作设置其他关键账户:
sudo edquota -u www-data、sudo edquota -u mysql - 保存退出即生效,无需重启;测试:
sudo -u syslog dd if=/dev/zero of=/var/log/test.bin bs=1M count=600应报 Disc quota exceeded
验证是否真能保服务
配额启用后别只看命令返回,要实测关键路径:
- 切换到被限账户:
sudo -u syslog bash,尝试向 /var/log 写入超限数据,确认被拦截 - 检查 PAM 认证是否仍通:另开终端,用普通用户 SSH 登录,验证不因 /var/log 满而失败
- 查看实时用量:
quota -u syslog或全局汇总:repquota -a | grep -E "(syslog|www-data)" - 若需宽限期提醒(仅软限有效):
sudo edquota -t修改 block grace period,如设为 7days











