CentOS Stream 10目录结构详解与运维实践
2026/9/11 23:43:19 网站建设 项目流程

1. CentOS Stream 10目录结构全景解析

刚拿到一台新装的CentOS Stream 10服务器时,面对密密麻麻的目录是不是有点无从下手?作为RHEL上游版本的滚动发行版,其目录结构既继承了传统Linux的规范性,又融入了现代系统管理的新特性。今天我们就用运维老兵的视角,带大家走遍这个系统的每个角落。

记得我第一次接触CentOS时,花了整整两周才弄明白各个目录的用途。现在我把这些经验整理成结构化知识,帮你节省摸索时间。我们会从根目录开始逐层解剖,重点标注与CentOS 7/8的区别点,特别是那些Stream版本特有的目录变化。

2. 根目录核心结构解析

2.1 基础目录布局

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

与早期版本最大的不同在于/bin、/sbin等目录现在都是指向/usr目录下对应位置的符号链接。这是Fedora引入的"UsrMove"变更,旨在简化文件系统层次结构。实测这种设计让软件包管理更统一,但也需要注意:

在编写脚本时,建议直接使用/usr/bin路径而非/bin,避免符号链接可能带来的解析问题

2.2 关键系统目录详解

  • /boot:内核文件存放处。Stream 10采用GRUB2引导,目录内vmlinuz-5.xx.x-x.el10.x86_64文件命名格式与RHEL对齐
  • /etc:配置文件大本营。重点关注:
    • /etc/yum.repos.d/:软件源配置(Stream特有的centos-stream.repo)
    • /etc/sysconfig/:系统服务配置
    • /etc/systemd/:systemd单元配置
  • /var:动态数据目录。需要特别监控:
    • /var/log/:日志文件(journalctl日志存储在/var/log/journal/)
    • /var/lib/dnf/:DNF包管理器数据库
    • /var/lib/containers/:Podman容器存储位置

3. 用户空间与应用程序目录

3.1 /usr目录深度剖析

/usr ├── bin # 用户命令 ├── lib # 共享库 ├── lib64 # 64位共享库 ├── libexec # 辅助程序 ├── sbin # 管理命令 ├── share # 架构无关数据 └── local # 本地安装软件

Stream 10在/usr/share目录下新增了modulefiles目录,用于Environment Modules系统。这是与旧版的重要区别:

# 查看可用模块 $ module avail # 加载GCC 11 $ module load gcc-toolset-11

3.2 第三方软件目录规范

  • /opt:大型商业软件首选位置
    • /opt/rh/:Red Hat Software Collections安装目录
    • /opt/remi/:Remi仓库PHP版本安装位置
  • /etc/alternatives:命令多版本管理
    • 通过update-alternatives管理Python/PHP等多版本

4. 特殊文件系统与虚拟目录

4.1 运行时目录结构

/run ├── user/ # 用户级运行时文件 ├── systemd/ # systemd运行时数据 └── containers/ # 容器运行时数据

与CentOS 7不同,Stream 10将/var/run完全迁移到/run,这是tmpfs内存文件系统,重启后数据会丢失。编写服务时需要特别注意:

# 错误的传统写法(CentOS 7) RuntimeDirectory=/var/run/myservice # 正确的Stream 10写法 RuntimeDirectory=/run/myservice

4.2 系统信息接口

  • /proc:进程与内核信息
    • /proc/cpuinfo:处理器详情
    • /proc/meminfo:内存使用情况
  • /sys:设备与驱动接口
    • /sys/class/net/:网络接口信息
    • /sys/block/:块设备信息

5. 目录权限管理实践

5.1 SELinux上下文管理

Stream 10默认启用SELinux,关键目录上下文:

$ ls -Z /var/www/html system_u:object_r:httpd_sys_content_t:s0 index.html # 修改上下文 $ semanage fcontext -a -t httpd_sys_content_t "/webapp(/.*)?" $ restorecon -Rv /webapp

5.2 目录权限设置规范

  • 系统目录应保持root:root所有权
  • 共享目录建议使用setgid位:
    $ chmod g+s /shared $ chgrp devteam /shared
  • 临时目录应添加sticky位:
    $ chmod +t /tmp/upload

6. 新旧版本目录结构对比

6.1 CentOS 7 vs Stream 10主要差异

目录CentOS 7Stream 10
/bin独立目录/usr/bin符号链接
/sbin独立目录/usr/sbin符号链接
/usr/libexec较少使用核心组件位置
/var/run持久化存储/run符号链接(tmpfs)
/etc/os-release简单版本信息包含STREAM标识

6.2 兼容性注意事项

  1. 脚本中避免硬编码路径,改用which或command -v查找命令位置
  2. 服务单元文件中使用RuntimeDirectory而非WorkingDirectory
  3. 容器挂载点优先选择/var/lib/containers/而非传统/var/lib/docker/

7. 目录监控与维护技巧

7.1 空间占用分析

# 快速定位大目录 $ du -h --max-depth=1 / 2>/dev/null | sort -h # 监控关键目录变化 $ inotifywait -m -r /etc /var/log

7.2 自动化清理策略

对于/var/log/journal/建议配置日志轮转:

# /etc/systemd/journald.conf [Journal] SystemMaxUse=1G MaxFileSec=1month

临时文件清理可创建cron任务:

0 3 * * * find /tmp -type f -atime +7 -delete

8. 疑难问题排查指南

8.1 常见目录相关错误

  1. 软件安装失败:检查/var/lib/dnf/history.log和/var/log/dnf.log
  2. 服务启动失败:查看/run/ /目录是否存在
  3. 权限拒绝:使用getenforce检查SELinux状态

8.2 修复损坏的符号链接

# 查找所有损坏链接 $ find / -xtype l 2>/dev/null # 重建基础链接(示例) $ ln -sf /usr/bin/bash /bin/bash

经过多年运维实践,我发现理解目录结构是掌握Linux系统的基石。建议新人先在测试环境执行tree -L 2 /命令生成目录树,对照本文逐个研究重要目录。当遇到问题时,先思考"这个文件应该放在哪个目录",这种思维训练会让你快速成长为合格的系统管理员。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询