Linux目录结构维护核心在于明确使用主体、变化规律与应急恢复能力;/var需单独分区并合理配比,/home应限制容量并启用配额,/opt与/usr/local宜隔离挂载,swap按固定大小配置,非LVM环境可通过bind mount或符号链接弹性扩容。

Linux 目录结构维护的核心,不是“怎么分”,而是“谁在用、怎么变、出事能否救”。大型环境(如百人以上开发集群、日志密集型SaaS平台、AI训练节点池)下,目录空间一旦规划失当,轻则频繁告警、服务抖动,重则因/var/log塞满导致SSH登录失败、/tmp爆满引发容器启动失败——这类问题往往在业务高峰期集中爆发,排查成本远高于前期设计成本。
/var:日志与服务数据的“压力容器”
这个目录存放动态生成内容:系统日志(/var/log)、邮件队列(/var/spool/mail)、Web根目录(/var/www)、数据库文件(如MySQL默认在/var/lib/mysql)、Docker镜像层(/var/lib/docker)。它不静态,而是随时间线性增长。
- 千万别把它和
/混在一起:根分区被/var/log/journal撑爆,会导致systemd无法写入日志,进而影响服务状态追踪。 - 建议单独分区,初始分配不低于总磁盘空间的25%,对日志密集型系统(如ELK采集节点、API网关)应直接划到40%以上。
- 配合
logrotate+journalctl --vacuum-size=500M做双保险,但不能替代合理分区。
/home:用户空间≠数据仓库
在大型环境中,/home本质是配置与临时工作区,不是数据主存位置。
- 每个开发者账号若默认存GB级模型缓存或编译中间产物,100个用户就轻松吃掉上百GB。
- 正确做法:将
/home控制在20–50GB/人(仅放.bashrc、.ssh、IDE配置等轻量内容),强制业务数据走统一挂载点(如/data/project-a或/mnt/nas/user-data)。 - 若必须保留大容量
/home,务必启用配额(setquota+edquota),防止单用户无限制占用。
/opt 与 /usr/local:第三方软件的“隔离区”
大型环境常批量部署JDK、Anaconda、CUDA Toolkit、自研Agent等大型套件。它们体积大、更新频、依赖独立。
-
/opt适合安装结构自包含的商业软件(如JetBrains全家桶、Tableau Server),每个产品建子目录(/opt/jetbrains/idea),便于整体迁移或卸载。 -
/usr/local更适合源码编译安装的定制工具(如内部CLI、监控探针),需确保/usr/local/bin在$PATH前端。 - 两者都建议单独挂载——哪怕只是逻辑卷,避免它们膨胀挤占
/usr或根分区。
swap与内存协同策略
物理内存≥32GB的服务器,swap不再是“救命稻草”,而是OOM Killer的缓冲垫和内核休眠支持者。
- 不再机械遵循“2倍内存”:现代CentOS/RHEL默认启用
vm.swappiness=10,倾向使用文件缓存而非swap;生产环境可设为1–5。 - swap分区大小建议:8–16GB固定值(非比例),足够覆盖内核dump和突发内存峰值,又不浪费SSD寿命。
- 更优选择:用
zram(压缩内存块)替代部分swap,尤其在内存充足但I/O敏感场景(如K8s master节点)。
非LVM环境下的弹性补救路径
现实中大量旧服务器仍用ext4/XFS直连分区,无法在线缩容。此时扩容≠重装:
- 优先用
bind mount转移压力目录:例如mkdir /data/var_log && rsync -av /var/log/ /data/var_log/ && mount --bind /data/var_log /var/log,再清空原目录并持久化到/etc/fstab。 - 对
/home类目录,可新增硬盘挂载后,用符号链接平滑迁移:ln -sf /mnt/bigdisk/home/username /home/username,用户无感。 - 所有操作必须配合
lsof + du -sh双重验证,确认旧路径无进程占用、新路径权限一致(尤其SELinux上下文需restorecon -Rv /var/log)。
不复杂但容易忽略。


















