Linux(包括 Ubuntu)的目录结构遵循 Filesystem Hierarchy Standard (FHS),是一种约定俗成的层级布局。理解它能帮助你快速定位配置文件、日志、程序、用户数据等,避免“到处找文件”的低效操作。
下面是 Ubuntu Server(以及大多数现代 Linux 发行版)中最核心、最常用的目录,按重要程度和使用频率排序,附带实际生产场景说明。
核心目录速览表
| 目录 | 英文全称 / 含义 | 是否必须挂载单独分区 | 生产环境常见大小建议 | 核心用途与典型场景 |
|---|---|---|---|---|
| / | 根目录(一切起点) | 是 | 20–50GB(视业务) | 所有目录的父目录 |
| /bin | binaries(基本命令) | 通常与 / 一起 | 小 | ls、cp、mv、cat、mkdir 等核心命令 |
| /sbin | system binaries | 同上 | 小 | fdisk、reboot、ifconfig 等系统管理命令(root专用) |
| /usr | user programs(用户程序) | 可选单独 | 10–30GB | 大部分软件安装在这里(/usr/bin、/usr/lib、/usr/share) |
| /etc | etcetera(配置文件) | 推荐单独 | 1–5GB | 几乎所有服务的配置文件(nginx.conf、sshd_config、netplan等) |
| /var | variable data(可变数据) | 强烈推荐单独 | 10–100GB+ | 日志、缓存、数据库、邮件队列、临时文件 |
| /home | 用户家目录 | 强烈推荐单独 | 按需(几十GB到TB) | 用户文件、.ssh、.bashrc、项目代码 |
| /tmp | temporary files | 可 tmpfs(内存) | 1–8GB | 临时文件、编译中间文件(可 noexec、nosuid 挂载) |
| /boot | 启动相关 | 推荐单独(尤其加密) | 1–2GB | 内核、initramfs、grub 配置 |
| /dev | devices(设备文件) | 自动生成 | 很小 | /dev/sda、/dev/null 等(udev 动态生成) |
| /proc | process information | 虚拟文件系统 | 几乎不占 | 运行时内核与进程信息(cat /proc/cpuinfo) |
| /sys | system information | 虚拟文件系统 | 几乎不占 | 硬件、内核参数、电源管理等(sysfs) |
| /run | runtime data | tmpfs | 小 | 锁文件、pid 文件、systemd 运行时数据 |
| /mnt | mount temporary | 手动挂载点 | 按需 | 临时挂载外部磁盘、光盘等 |
| /media | removable media | 自动挂载点 | 按需 | U盘、移动硬盘自动挂载位置(桌面版常用) |
| /opt | optional software | 可选 | 按需 | 第三方非 apt 安装的软件(例如 Google Chrome、某些商业软件) |
| /root | root 用户家目录 | 与 / 一起 | 小 | root 的 .bashrc、历史命令、临时脚本 |
| /lost+found | 文件系统修复恢复目录 | 自动生成 | 极小 | fsck 修复后丢失文件恢复处 |
生产环境最值得单独挂载的分区(强烈推荐)
- /var(日志、缓存、数据库增长最快的地方)
- 场景:Nginx/Apache 日志、MySQL/PostgreSQL 数据、Docker 容器数据、mail queue
- 建议:xfs 或 ext4,预留 50GB+,监控增长
- /home(用户代码、密钥、项目文件)
- 场景:开发人员上传代码、.ssh/authorized_keys、个人脚本
- 建议:加密挂载(LUKS)或 quota 限制单个用户
- /boot(尤其 root 分区加密时)
- 场景:GRUB 无法读取加密分区,需要 /boot 明文
- /tmp(可选 tmpfs)
- 挂载为内存文件系统:tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
- 好处:速度快、断电自动清空、防止磁盘占满
常见误区与注意事项
- 不要把 /var/log 单独分区 大部分情况下不推荐,因为 /var/log 只是 /var 的子目录,单独分区管理复杂且收益不大。
- /usr/local vs /opt
- /usr/local:自己编译安装的软件(make install 默认路径)
- /opt:第三方打包好的独立软件(例如 /opt/google/chrome)
- /snap(Ubuntu 特色) Snap 包全部安装在 /snap 和 /var/lib/snapd,体积可能较大,生产环境可考虑禁用 snapd(如果不使用 snap 软件)。
- 符号链接常见用法 生产中常把大目录软链到大分区:text
mv /var/lib/docker /data/docker ln -s /data/docker /var/lib/docker
快速定位文件的“黄金口诀”
记住这几句,能解决 90% 的“文件在哪”问题:
- 服务配置文件 → /etc/(几乎全部)
- 日志 → /var/log/
- 运行中的进程信息 → /proc/进程号/
- 已安装软件放哪 → dpkg -L 包名 或 apt show 包名
- 自己编译的程序 → /usr/local/bin / /usr/local/lib
- 用户自己的东西 → ~/ 或 /home/用户名/
- 系统启动报错看 → /var/log/boot.log 或 journalctl -b
生产环境推荐的 fstab 片段示例(简化)
text
# /etc/fstab
UUID=xxx / ext4 defaults,noatime 0 1
UUID=yyy /boot ext4 defaults 0 2
UUID=zzz /var xfs defaults,noatime 0 2
UUID=aaa /home ext4 defaults,noatime,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv1 0 2
tmpfs /tmp tmpfs defaults,noatime,mode=1777,size=4G 0 0掌握 Ubuntu 的目录结构后,你会发现“找东西”从几分钟变成几秒钟,运维效率大幅提升。建议在新服务器上实际走一遍每个目录,敲 ls -l 或 du -sh * 看内容分布,建立直观印象。