Ubuntu 系统目录结构详解(基于 FHS 标准)

Ubuntu 系统目录结构详解(基于 FHS 标准)

Ubuntu(以及几乎所有主流 Linux 发行版)严格遵循 Filesystem Hierarchy Standard (FHS),这是 Linux Foundation 维护的文件系统层次结构标准(最新正式版为 3.0,2015 年发布,后续由 freedesktop.org 等组织维护与小幅更新)。FHS 的核心设计目标是:

  • 统一不同发行版的文件布局,便于软件移植、文档编写和系统管理
  • 区分可共享 / 不可共享静态 / 可变 文件,支持网络文件系统(NFS)、只读挂载 /usr 等高级场景
  • 保持根文件系统(/)尽可能小且包含启动、恢复所需的一切

所有文件和目录都从单一的根目录 / 开始,没有 Windows 式的 C:、D: 盘符。以下按重要性与使用频率,从根目录开始逐一详解 Ubuntu 24.04 LTS / 26.04 LTS 中的典型目录结构(实际内容可能因安装的软件包略有差异)。

核心目录一览表(FHS 要求 + Ubuntu 常见实践)

目录是否必须在根分区主要内容类型可共享?可变?典型用途与注意事项
/整个文件系统根起点,不可删除或创建随意文件。空间尽量控制在 10–30 GB(云服务器常见)。
/bin基本用户命令二进制ls、cp、mv、cat、bash 等。即使单用户模式也能使用。Ubuntu 24.04+ 很多已移到 /usr/bin(符号链接)。
/boot是(强烈推荐)内核、initramfs、引导加载器部分vmlinuz、initrd.img、grub.cfg。EFI 系统还有 /boot/efi(FAT32 分区)。
/dev设备文件(动态生成)/dev/sda、/dev/null、/dev/zero。由 udev / devtmpfs 管理,通常是 tmpfs。
/etc系统配置文件最常修改的地方:/etc/passwd、/etc/fstab、/etc/nginx/、/etc/apt/sources.list 等。
/home可分离用户家目录部分/home/wu、/home/user/.ssh/ 等。建议单独分区,便于备份与重装系统。
/lib / /lib64核心共享库与内核模块libc.so、ld-linux.so 等。类似 /bin,部分内容符号链接到 /usr/lib。
/media自动挂载的可移动介质插入 U 盘、光盘时自动出现 /media/wu/USB 等(由 udisks 管理)。
/mnt管理员手动临时挂载点经典用法:mount /dev/sdb1 /mnt 测试新硬盘。
/opt可分离第三方独立软件包部分手工安装的软件如 /opt/google/chrome、/opt/idea。较少使用。
/proc进程与内核信息(虚拟)/proc/cpuinfo、/proc/meminfo、/proc/sys/ 等。tmpfs,不占磁盘。
/rootroot 用户的家目录root 的 .bashrc、.ssh 等。注意与 / 根目录区分。
/run运行时数据(自上次启动)/run/user/1000(用户运行时文件)、/run/docker.sock 等。tmpfs,重启清空。
/sbin系统管理命令fdisk、reboot、ifconfig(旧)、ip 等。普通用户也能执行但常需 sudo。
/srv可分离服务数据(如 www、ftp)/srv/www、/srv/ftp。现代用法较少,很多人仍放 /var/www。
/sys内核设备树与 sysfs(虚拟)/sys/class/net/eth0、/sys/block/sda 等。tmpfs。
/tmp可分离(推荐)临时文件重启可能清空(取决于 /etc/tmpfiles.d 配置)。很多程序写中间文件在这里。
/usr可分离(推荐只读)用户程序与数据最大目录:/usr/bin、/usr/lib、/usr/share、/usr/local(本地编译安装)。
/var可分离(强烈推荐)可变数据日志(/var/log)、缓存(/var/cache)、邮件(/var/mail)、数据库(/var/lib/mysql)。

三大主要层次的逻辑划分(FHS 核心思想)

  1. 根文件系统(/) 必须包含启动、单用户模式恢复所需的一切。设计目标:尽量小(现代云镜像根分区常 8–20 GB)。 强制包含:/bin、/boot、/dev、/etc、/lib、/sbin(或符号链接形式)。

  2. /usr 层次(可共享、静态) 存放绝大多数用户可见的程序、库、文档。 子目录示例:

    • /usr/bin → 普通命令(git、python3、docker 等)
    • /usr/sbin → 管理命令
    • /usr/lib → 共享库
    • /usr/share → 架构无关数据(文档、图标、时区文件)
    • /usr/local → 本地手工安装软件(优先级高于 /usr/bin)
    • /usr/src → 内核源码(可选)

    现代系统常把 /usr 设计为只读挂载,提高安全性与一致性。

  3. /var 层次(不可共享、可变) 存放会随系统运行而变化的数据。 常见子目录:

    • /var/log → journal、syslog、nginx、apache2 等日志(最常占空间)
    • /var/cache → apt 缓存、snap 缓存
    • /var/lib → 数据库(mysql、docker)、dpkg 状态
    • /var/spool → 打印队列、邮件队列
    • /var/tmp → 比 /tmp 更持久的临时文件

Ubuntu 特有或现代变化(24.04 / 26.04 时代)

  • /snap:Snap 包安装后出现在这里(/snap/core、/snap/postman 等)。
  • /var/log/journal:systemd-journald 的持久化日志(默认启用)。
  • /etc/systemd:systemd 单元文件、networkd 配置。
  • 很多发行版已将 /bin、/sbin、/lib 符号链接到 /usr 对应目录(merged-usr 方案),Ubuntu 24.04+ 也逐步推进。
  • /run 一定是 tmpfs(内存文件系统),重启丢失。

快速查看与管理技巧

Bash
# 查看整体目录占用(从大到小)
sudo du -sh /* | sort -hr | head -15

# 查看目录树(需安装 tree)
tree -L 2 /

# systemd-path 查看标准路径
systemd-path

理解这些目录的定位后,你就能快速判断“日志满了该清哪里”“配置文件改哪”“新软件装哪里”“重装系统时哪个分区要备份”。这是 Linux 系统管理最基础但也最核心的知识点之一。

Telegram
Telegram服务器销售@IDCSELL