RHCA05-文件系统调优
一、文件系统核心概念
-
文件与目录关系
- 识别差异:
- 系统通过
inode
识别文件 - 用户通过文件名识别文件
- 系统通过
- 映射存储:文件名与
inode
的映射关系存储在目录中
- 识别差异:
-
inode 结构
- 组成:文件 =
inode
(元数据) +block
(数据块) - 核心功能:
- 记录文件元数据(类型、权限、UID/GID、数据块指针)
- 每个文件有唯一
inode
编号(如75059
)
- 组成:文件 =
-
操作与 inode 关系
操作 行为 示例 cp
分配新 inode,新旧文件独立 inode 68170831 → 101339976
mv
(同分区)inode 不变,仅修改目录映射 inode 保持不变
mv
(跨分区)复制 + 删除,生成新 inode 等同于 cp
行为rm
回收 inode,数据块标记可用 新文件覆盖旧数据块 -
硬链接特性
- 多个文件名指向同一 inode(如
/etc/passwd
与/tmp/passwd.1
) - 限制:
- 不能跨文件系统
- 目录默认链接数 ≥ 2(含
.
和..
)
- 删除影响:
- 链接数减为 0 时才彻底删除文件
- 多个文件名指向同一 inode(如
二、文件系统结构
-
虚拟文件系统(VFS)
- 作用:为应用程序提供统一文件访问接口,屏蔽底层差异(如 ext4/NFS/SMB)
- 分层架构:
-
ext4 文件系统结构
- 组划分:文件系统分为多个
Block Group
- 组内结构:
组件 功能 Superblock 记录全局元信息 Group Descriptor 块组描述信息 Block Bitmap 标记数据块使用状态 Inode Bitmap 标记 inode 使用状态 Inode Table 存储文件元数据 Data Blocks 实际文件数据存储区
- 组划分:文件系统分为多个
-
超级块(Superblock)
- 作用:存储文件系统关键元数据(大小、类型、块大小等)
- 备份机制:
- 主超级块位于 Group 0
- 备份位置固定(如 Group 1 的
32768
块、Group 3 的98304
块)
三、文件系统操作与调优
-
分区与格式化
- 操作流程:
# 创建分区 fdisk /dev/vdb → n → p → 设置大小 → w # 格式化 mkfs.ext4 /dev/vdb1 # 挂载 echo "UUID=54b24660-... /data ext4 defaults 0 0" >> /etc/fstab mount -a
- 操作流程:
-
元数据查看命令
命令 功能 示例 tune2fs -l
显示 ext 文件系统参数 tune2fs -l /dev/sda1
xfs_info
查看 XFS 文件系统信息 xfs_info /
dumpe2fs
显示 ext 文件系统详细信息 dumpe2fs /dev/sdb1
-
超级块修复
- 损坏现象:
wrong fs type, bad option, bad superblock
- 修复步骤:
umount /dev/sdb1 # 先卸载 fsck -b 32768 /dev/sdb1 # 用备份超级块修复 mount /dev/sdb1 # 重新挂载
- 备份位置:
32768
,98304
,163840
等固定块
- 损坏现象:
四、日志型文件系统
-
核心机制
- 三区结构:日志区(Journal)→ 索引区(Inode)→ 数据块区(Block)
- 写入流程:
- 操作记录写入日志区
- 实际数据写入数据块
- 日志条目转移到索引区
- 清空日志区
-
调优方案
- 内部日志:默认配置,适合大文件场景
- 外部日志:提升小文件性能(如数据库)
# ext4 配置外部日志 tune2fs -O ^has_journal /dev/sdb1 # 移除内部日志 mke2fs -O journal_dev -b 4096 /dev/sdc1 # 格式化日志设备 tune2fs -j -J device=/dev/sdc1 /dev/sdb1 # 关联外部日志
五、知识小结
知识点 | 核心内容 | 重点提示 |
---|---|---|
文件系统结构 | inode + block 结构,VFS 统一接口 | 移动文件时同分区 inode 不变 |
超级块修复 | 用 fsck -b <备份块> 恢复损坏的超级块 | 备份位置固定(32768, 98304…) |
日志型文件系统 | 通过日志区保证崩溃一致性,外部日志提升小文件性能 | 外部日志设备需独立物理磁盘 |
inode 与 block | rm 仅释放 inode,新数据覆盖旧 block;硬链接共享 inode | 链接数为 0 时文件彻底删除 |
文件系统分组 | 默认每组 32768 块,提升文件连续性 | 超级块备份分散在各组 |
关键原则:
- 优先通过 日志机制 预防文件系统损坏
- 修复前务必 卸载文件系统
- 高并发小文件场景推荐 外部日志分离