ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

CentOS Stream 10目录结构详解与运维实践

CentOS Stream 10目录结构详解与运维实践 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-113.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/myservice4.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 /webapp5.2 目录权限设置规范系统目录应保持root:root所有权共享目录建议使用setgid位$ chmod gs /shared $ chgrp devteam /shared临时目录应添加sticky位$ chmod t /tmp/upload6. 新旧版本目录结构对比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 兼容性注意事项脚本中避免硬编码路径改用which或command -v查找命令位置服务单元文件中使用RuntimeDirectory而非WorkingDirectory容器挂载点优先选择/var/lib/containers/而非传统/var/lib/docker/7. 目录监控与维护技巧7.1 空间占用分析# 快速定位大目录 $ du -h --max-depth1 / 2/dev/null | sort -h # 监控关键目录变化 $ inotifywait -m -r /etc /var/log7.2 自动化清理策略对于/var/log/journal/建议配置日志轮转# /etc/systemd/journald.conf [Journal] SystemMaxUse1G MaxFileSec1month临时文件清理可创建cron任务0 3 * * * find /tmp -type f -atime 7 -delete8. 疑难问题排查指南8.1 常见目录相关错误软件安装失败检查/var/lib/dnf/history.log和/var/log/dnf.log服务启动失败查看/run/ /目录是否存在权限拒绝使用getenforce检查SELinux状态8.2 修复损坏的符号链接# 查找所有损坏链接 $ find / -xtype l 2/dev/null # 重建基础链接示例 $ ln -sf /usr/bin/bash /bin/bash经过多年运维实践我发现理解目录结构是掌握Linux系统的基石。建议新人先在测试环境执行tree -L 2 /命令生成目录树对照本文逐个研究重要目录。当遇到问题时先思考这个文件应该放在哪个目录这种思维训练会让你快速成长为合格的系统管理员。
返回列表