Linux Filesystem Guide

2025/10/23 共 5154 字,约 15 分钟

Linux 文件系统目录结构详解

1. Linux 文件系统概述

Linux 文件系统采用树状目录结构,所有文件和目录都从根目录(/)开始。这种结构提供了统一的文件访问方式,无论底层存储设备如何。理解 Linux 文件系统目录结构对于有效管理和使用 Linux 系统至关重要。

文件系统特性

  • 层次结构:树形目录结构,从根目录开始分支
  • 路径表示:使用正斜杠(/)分隔目录
  • 无驱动器字母:不像 Windows,Linux 没有 C:、D: 等驱动器字母
  • 挂载点:物理存储设备通过挂载点集成到目录树中
  • 统一命名空间:所有文件和设备在同一个命名空间中

2. 根目录及其主要子目录

根目录(/)是 Linux 文件系统的起点,包含以下主要子目录:

/
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var

3. 目录功能详解

3.1 /bin - 基本用户命令

功能:包含所有用户都可以使用的基本命令,这些命令在单用户模式下也可用。

主要内容

  • 常用命令如 ls, cp, mv, rm, cat
  • Shell 解释器如 bash, sh
  • 文件操作工具

特点

  • 这些命令通常是编译好的二进制文件
  • 对所有用户都可用(权限设置为可执行)
  • 包含系统启动和单用户模式下必需的命令

3.2 /boot - 引导加载程序文件

功能:包含启动 Linux 系统所需的文件。

主要内容

  • Linux 内核文件(如 vmlinuz
  • 初始 RAM 磁盘镜像(initrdinitramfs
  • 引导加载程序配置文件(如 grub.cfg
  • 引导加载程序二进制文件

特点

  • 这个目录通常比较小但非常重要
  • 通常位于单独的分区上以提高安全性
  • 修改此目录中的文件可能会导致系统无法启动

3.3 /dev - 设备文件

功能:包含表示系统硬件设备的特殊文件。

主要内容

  • 字符设备文件(如 /dev/tty, /dev/null
  • 块设备文件(如 /dev/sda, /dev/hda
  • 伪终端设备(如 /dev/pts/0
  • 设备驱动接口

特点

  • 这些不是真正的文件,而是设备驱动的接口
  • udev 守护进程动态创建和管理
  • 可以通过读写这些文件来与硬件设备交互

3.4 /etc - 系统配置文件

功能:包含系统范围内的配置文件和服务启动脚本。

主要内容

  • 系统配置文件(如 /etc/passwd, /etc/group
  • 网络配置(如 /etc/network, /etc/resolv.conf
  • 服务配置(如 /etc/nginx, /etc/apache2
  • 启动脚本(如 /etc/init.d//etc/rc.d/
  • 定时任务配置(/etc/crontab

特点

  • 这是大多数系统管理工作发生的地方
  • 文件通常是文本格式,可以用文本编辑器修改
  • 重要的系统配置更改通常需要管理员权限

3.5 /home - 用户主目录

功能:包含所有普通用户的个人主目录。

主要内容

  • 用户个人文件和目录(如 /home/user1
  • 用户配置文件(如 .bashrc, .profile
  • 应用程序数据和设置

特点

  • 每个用户通常有自己的目录,通常命名为用户名
  • 用户对自己的主目录有完全访问权限
  • 存储用户的个人文件、文档和应用程序数据

3.6 /lib - 系统库文件

功能:包含系统程序运行所需的共享库文件和内核模块。

主要内容

  • 共享库文件(以 .so 结尾)
  • 内核模块(位于 /lib/modules/
  • 基本的系统库,供 /bin/sbin 中的程序使用

特点

  • 这些库文件被可执行程序动态加载
  • /lib64 目录通常用于 64 位系统中的 64 位库
  • 缺少关键库文件可能导致程序无法运行

3.7 /media - 可移动媒体挂载点

功能:用于挂载可移动媒体设备的挂载点。

主要内容

  • 自动挂载的 CD/DVD 驱动器(如 /media/cdrom
  • 自动挂载的 USB 驱动器
  • 其他可移动存储设备

特点

  • 通常由桌面环境自动管理
  • 当插入可移动设备时,会在该目录下创建挂载点
  • 挂载点名称通常基于设备标签或UUID

3.8 /mnt - 临时挂载点

功能:用于临时挂载文件系统的挂载点。

主要内容

  • 手动挂载的文件系统
  • 临时挂载的设备或远程文件系统
  • 网络共享挂载点

特点

  • 主要用于管理员临时挂载文件系统
  • 不像 /media,通常不会自动创建挂载点
  • 可用于测试和临时访问其他文件系统

3.9 /opt - 可选应用程序软件包

功能:包含可选的应用程序软件包。

主要内容

  • 第三方商业软件
  • 大型应用程序(如 Oracle、SAP 等)
  • 自包含的应用程序,通常在独立子目录中

特点

  • 应用程序通常安装在 /opt/<package>/opt/<vendor> 目录下
  • 这种安装方式不会覆盖系统文件
  • 允许软件包自行维护其目录结构

3.10 /proc - 进程和系统信息虚拟文件系统

功能:提供关于进程和系统内核的信息的虚拟文件系统。

主要内容

  • 进程信息(如 /proc/1 表示 PID 为 1 的进程)
  • 系统信息文件(如 /proc/cpuinfo, /proc/meminfo
  • 内核参数和配置
  • 硬件信息

特点

  • 这是一个虚拟文件系统,不占用实际磁盘空间
  • 文件内容是在访问时动态生成的
  • 提供了内核和用户空间之间的接口
  • 可以通过读写这些文件来与内核交互

3.11 /root - 根用户主目录

功能:超级用户(root)的主目录。

主要内容

  • 根用户的配置文件
  • 根用户的个人文件和脚本
  • 系统管理工具和备份

特点

  • 与普通用户不同,根用户的主目录不在 /home
  • 通常具有严格的访问权限设置
  • 包含系统管理相关的文件和工具

3.12 /run - 运行时数据

功能:包含系统启动以来的运行时数据。

主要内容

  • 进程 ID 文件(PID files)
  • 套接字文件
  • 锁文件
  • 临时运行时数据

特点

  • 在系统重启时会被清空并重新创建
  • 替代了旧版本中的 /var/run
  • 通常存储系统服务的运行状态信息

3.13 /sbin - 系统管理命令

功能:包含系统管理和维护所需的命令。

主要内容

  • 系统二进制文件
  • 引导系统所需的命令
  • 网络配置命令
  • 文件系统管理命令(如 fdisk, mkfs

特点

  • 这些命令通常需要管理员权限才能执行
  • 包含用于系统维护和恢复的工具
  • 类似于 /bin,但针对系统管理任务

3.14 /srv - 服务数据

功能:包含由系统提供的各种服务的数据。

主要内容

  • Web 服务器数据(如 /srv/www
  • FTP 服务器文件
  • 数据库服务数据
  • 其他网络服务数据

特点

  • 包含网络服务提供给用户的数据
  • 结构通常由服务本身定义
  • 例如,Web 服务器可能将网站文件存储在 /srv/www

3.15 /sys - 系统设备和驱动程序信息

功能:包含关于设备、内核模块和硬件特性的信息。

主要内容

  • 设备树信息
  • 内核设备和驱动程序信息
  • 系统总线信息
  • 硬件监控数据

特点

  • 这是一个虚拟文件系统,类似 /proc
  • 提供了比 /proc 更细粒度的硬件信息
  • 主要用于访问设备驱动和硬件信息

3.16 /tmp - 临时文件

功能:提供临时文件的存储位置。

主要内容

  • 应用程序创建的临时文件
  • 会话数据
  • 缓存文件

特点

  • 系统重启时通常会清空此目录
  • 对所有用户可写
  • 包含不需要长期保存的临时数据
  • 某些系统会定期清理旧文件

3.17 /usr - 用户程序和文件

功能:包含大多数不关键的用户程序和文件。

主要子目录

  • /usr/bin:非必要的用户命令
  • /usr/sbin:非必要的系统管理命令
  • /usr/lib:库文件
  • /usr/share:共享数据(文档、图标等)
  • /usr/include:头文件
  • /usr/local:本地安装的软件

特点

  • 可以看作是次要的根目录,包含操作系统的大部分组件
  • 通常比根目录大得多
  • /usr/local 用于安装不会被系统包管理器覆盖的软件

3.18 /var - 可变数据文件

功能:包含系统运行过程中经常变化的文件。

主要子目录

  • /var/log:日志文件
  • /var/spool:邮件、打印队列等
  • /var/tmp:需要在重启后保留的临时文件
  • /var/cache:应用程序缓存数据
  • /var/lib:状态信息和数据库文件
  • /var/run:到 /run 的符号链接(在较新的发行版中)

特点

  • 随着系统运行,此目录的大小通常会增长
  • 包含系统日志和应用程序数据
  • 备份和管理此目录对于系统维护非常重要

4. 文件系统层次标准 (FHS)

Linux 文件系统层次结构遵循文件系统层次标准 (FHS),该标准定义了 Linux 系统中目录和文件的组织方式。FHS 确保了不同 Linux 发行版之间的一致性,使得软件可以在不同发行版上一致地安装和运行。

FHS 主要目标

  • 定义系统中每个区域的用途
  • 描述文件和目录的最小集合
  • 列出每个区域中必须存在的文件和目录
  • 规定权限和所有权的要求

5. 特殊目录和文件

5.1 符号链接

符号链接(或软链接)是指向另一个文件或目录的特殊文件。符号链接类似于 Windows 中的快捷方式。

示例

ls -l /var/run
# 输出示例: /var/run -> /run

5.2 隐藏文件

在 Linux 中,以点(.)开头的文件和目录被视为隐藏文件。这些文件通常包含配置信息和设置。

示例

  • .bashrc:Bash shell 配置文件
  • .profile:用户环境配置文件
  • .ssh/:SSH 配置和密钥目录

5.3 重要的系统文件

  • /etc/passwd:用户账户信息
  • /etc/shadow:加密的用户密码
  • /etc/group:组信息
  • /etc/fstab:文件系统挂载配置
  • /etc/hostname:系统主机名
  • /etc/hosts:本地主机名解析表

6. 文件系统挂载

挂载概念

挂载是将存储设备或文件系统连接到 Linux 目录树的过程。挂载点是目录树中的一个目录,当挂载存储设备时,设备上的文件系统将在此目录下可见。

挂载命令

挂载文件系统

mount [设备] [挂载点]
mount /dev/sdb1 /mnt/usb  # 挂载 USB 驱动器

查看已挂载的文件系统

mount  # 显示所有已挂载的文件系统
cat /proc/mounts  # 显示挂载信息

卸载文件系统

umount [挂载点]
umount /mnt/usb  # 卸载 USB 驱动器

/etc/fstab 文件

/etc/fstab 文件包含系统启动时自动挂载的文件系统信息。每行代表一个文件系统,包含以下字段:

  1. 设备标识符
  2. 挂载点
  3. 文件系统类型
  4. 挂载选项
  5. 转储频率
  6. 文件系统检查顺序

示例 /etc/fstab 条目

/dev/sda1  /  ext4  defaults  0  1
/dev/sda2  /home  ext4  defaults  0  2
/dev/sdb1  /mnt/data  ext4  defaults  0  0
UUID=1234-5678  /boot/efi  vfat  defaults  0  1

7. 文件系统类型

Linux 支持多种文件系统类型,每种类型都有其特定的用途和特性:

常用文件系统

  • ext4:大多数 Linux 发行版的默认文件系统,ext3 的改进版
  • XFS:高性能 64 位文件系统,适合大文件和大容量存储
  • Btrfs:现代文件系统,支持快照、校验和等高级功能
  • ZFS:企业级文件系统,支持数据完整性验证和大容量存储
  • FAT32/exFAT:用于可移动媒体的文件系统,与 Windows 兼容
  • NTFS:Windows 文件系统,Linux 通过 ntfs-3g 驱动支持
  • tmpfs:临时文件系统,存储在 RAM 中
  • proc:虚拟文件系统,用于访问进程信息
  • sysfs:虚拟文件系统,用于访问系统设备和驱动信息

8. 目录导航和路径

绝对路径和相对路径

  • 绝对路径:从根目录(/)开始的完整路径,例如 /home/user/documents/file.txt
  • 相对路径:相对于当前工作目录的路径,例如 documents/file.txt../folder/file.txt

特殊路径表示

  • .:表示当前目录
  • ..:表示父目录
  • ~:表示用户的主目录
  • -:表示上一个工作目录

9. 文件系统管理最佳实践

9.1 目录和文件组织

  • 使用有意义的目录结构来组织文件
  • 遵循 FHS 标准放置系统文件
  • 为大型项目或数据创建单独的分区

9.2 磁盘空间管理

  • 定期检查磁盘使用情况:df -h
  • 识别大文件和目录:du -sh * | sort -hr
  • 清理临时文件:rm -rf /tmp/*(小心使用)
  • 管理日志文件:配置 logrotate 自动压缩和清理日志

9.3 性能优化

  • 将不同类型的数据放在不同的分区(如 /, /home, /var, /tmp
  • 考虑使用 SSD 存储常用和系统文件
  • 对于大数据存储,选择适当的文件系统(如 XFS 或 ZFS)

9.4 备份策略

  • 定期备份重要数据,特别是 /etc 和用户主目录
  • 备份整个系统分区,包括 boot 目录
  • 考虑使用增量备份策略以节省空间

10. 总结

Linux 文件系统目录结构是组织和管理系统资源的核心。理解各目录的功能和用途对于有效使用和管理 Linux 系统至关重要。遵循 FHS 标准可以确保系统的一致性和可维护性,同时也有助于在不同的 Linux 发行版之间保持兼容性。

通过正确理解和使用 Linux 文件系统,你可以更有效地组织数据,优化系统性能,简化系统管理任务,并确保数据的安全性和可靠性。

文档信息

Search

    Table of Contents