实战篇-典型故障排查与性能问题诊断与优化

目录

1 概述

2 文件系统损坏修复全流程(xfs_repair)

2.1 需要修复的场景

2.2 检查文件系统

2.3 修复过程

2.4 xfs常用命令

2.5 具体应用

2.6 最后方法

3 inode耗尽问题的预防与处理

3.1 inode的定义

3.2 inode的组成

3.3 inode的作用

3.4 inode 耗尽的原因分析

3.5 检测与诊断 inode 耗尽的方法

3.6 预防与解决 inode 耗尽的策略

3.7 实际案例分析

4 处理僵尸IO请求的实战步骤

4.1 僵尸进程

4.2 分析

4.3 汇总

5 识别IOwait的十八种姿势

5.1 什么是 iowait 以及它如何影响 Linux 性能

5.2 减少 I/O 等待相关问题

5.3 top命令显示iowait (wa)非常高时怎么排查

5.4 总结

6 使用SystemTap分析锁竞争

6.1 SystemTap简介

6.2 理解文件系统锁

6.3 编写 SystemTap 脚本

6.4 运行 SystemTap 脚本

6.5 分析输出

6.6 深入分析

7 文件系统性能优化

7.1 Disk相关参数

7.2 EXT3文件系统参数

7.3 mount参数


1 概述

浪潮信息KOS是浪潮信息基于Linux Kernel、OpenAnolis等开源技术自主研发的一款服务器操作系统,支持x86、ARM等主流架构处理器,性能和稳定性居于行业领先地位,具备成熟的 CentOS 迁移和替换能力,可满足云计算、大数据、分布式存储、人工智能、边缘计算等应用场景需求。详细介绍见官网链接https://www.ieisystem.com/kos/product-kos-xq.thtml?id=12126

2 文件系统损坏修复全流程(xfs_repair)

目前网上出现大量的主机输入输出错误,原因是由于主机文件系统损坏。一线人员大部分采用的是umont 和 mount的方式恢复,这种恢复方式不能真正修复已经损坏的文件系统,在后续使用过程中,仍然会再次出现主机端输入输出错误。

2.1 需要修复的场景

1 主机侧发现存在文件系统不可读写的情况,也可以通过查看主机端日志来确认是否有文件系统异常发生: xfs_force_shutdown 、I/O error
2 出现异常停电,供电恢复正常,主机和阵列系统重起之后
3 存储介质故障:出现LUN失效、RAID失效、以及IO超时或者出现慢盘,对慢盘进行更换,系统恢复正常之后
4 传输介质故障:如光纤、网线等损坏等,数据传输链路断开后又恢复正常之后

2.2 检查文件系统

注:检查文件系统必须保证将文件系统umount成功。

在根目录下输入“xfs_ncheck /dev/sdd(盘符);echo $?”(注意:在执行 此命令之前,必须将文件系统umount,否则会出现警告信 “xfs_ncheck: /dev/sdd contains a mounted and writable filesystem ”)敲回车键,查看命令执行返回值:0表示正常,其他为不正常,说明文件系统 损坏,需要修复。

例如:xfs_ncheck /dev/vdc3; echo $?

2.3 修复过程

注:修复时需要暂停主机侧的业务,umount 和 mount 无法修复文件系统 。

先umount要修复的文件系统的分区

然后输入 “xfs_repair /dev/sdd(盘符)”执行修复命令。

xfs_ncheck /dev/sdd; echo $?

如果为0===》成功修复。

如果不为0===》没有成功:请执行xfs_repair –L /dev/sdd命令,再执 行xfs_repair(反复多修复几次)

2.4 xfs常用命令

xfs_admin 调整 xfs 文件系统的各种参数
xfs_copy 拷贝 xfs 文件系统的内容到一个或多个目标系统(并行方式)
xfs_db 调试或检测 xfs 文件系统(查看文件系统碎片等)
xfs_check 检测 xfs 文件系统的完整性
xfs_bmap 查看一个文件的块映射
xfs_repair 尝试修复受损的 xfs 文件系统
xfs_fsr 碎片整理
xfs_quota 管理 xfs 文件系统的磁盘配额
xfs_metadump 将 xfs 文件系统的元数据 (metadata) 拷贝到一个文件中
xfs_mdrestore 从一个文件中将元数据 (metadata) 恢复到 xfs 文件系统
xfs_growfs 调整一个 xfs 文件系统大小(只能扩展)
xfs_logprint print the log of an XFS filesystem
xfs_mkfile create an XFS file
xfs_info expand an XFS filesystem
xfs_ncheck generate pathnames from i-numbers for XFS
xfs_rtcp XFS realtime copy command
xfs_freeze suspend access to an XFS filesystem
xfs_io debug the I/O path of an XFS filesystem

2.5 具体应用

查看文件块状况: xfs_bmap -v sarubackup.tar.bz2

查看磁盘碎片状况: xfs_db -c frag -r /dev/vdc3

文件碎片整理: xfs_fsr sarubackup.tar.bz2

磁盘碎片整理: xfs_fsr /dev/vdc3

2.6 最后方法

损失部分数据的修复方法

根据打印消息,修复失败时:
先执行xfs_repair -L /dev/sdd(清空日志,会丢失文件),再执行xfs_repair /dev/sdd,再执行xfs_check /dev/sdd 检查文件系统是否修复成功。

说明:-L是修复xfs文件系统的最后手段,慎重选择,它会清空日志,会丢失用户数据和文件。

备注:

在执行xfs_repair操作前,最好使用xfs_metadump工具保存元数据,一旦修复失败,最起码可以恢复到修复之前的状态。

3 inode耗尽问题的预防与处理

在 Linux 操作系统中,inode 是文件系统中的一个重要概念,它用于唯一标识文件系统中的每个文件或目录。inode 的耗尽通常会导致系统无法创建新的文件或目录,这对于系统的正常运行是至关重要的。本章节将探讨导致 inode 耗尽的原因,并提出一些可能的解决策略,以及预防方案,以帮助系统管理员更好地管理和维护文件系统。

3.1 inode的定义

Linux系统下文件数据储存在"块"中,文件的元信息,例如文件的创建者、文件的创建日期、文件的大小等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

inode也占用硬盘空间,硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

3.2 inode的组成

inode 通常包含以下信息:

inode号 文件在文件系统中的唯一标识符。
文件类型 指出是文件还是目录。
权限 文件或目录的访问权限,如读、写、执行。
链接数 指向该 inode 的硬链接数量。
所有者ID 文件所有者的用户 ID。
组ID 文件所有者的组 ID。
大小 文件大小,以字节为单位。
块大小 文件系统分配给文件的数据块的大小。
时间戳 文件的创建时间、最后访问时间和最后修改时间。
数据块指针 指向文件数据实际存储位置的数据块指针。

3.3 inode的作用

inode 是文件系统高效管理文件的关键。当用户访问文件时,系统通过 inode 号快速定位到文件的数据块,而不需要遍历整个文件系统。这样可以显著提高文件访问速度,尤其是在大型文件系统中。此外,inode 还允许实现文件的硬链接,因为硬链接实际上是指向相同 inode 的多个文件名。

3.4 inode 耗尽的原因分析

inode 耗尽通常是由于文件系统的设计和管理不当导致的。以下是一些常见的导致 inode 耗尽的原因:

文件数量过多 在文件系统中,每个文件或目录都需要一个 inode。如果一个文件系统中有大量的文件或目录,那么 inode 的数量可能会迅速耗尽。特别是在一些用于存储大量小文件的系统中,如邮件服务器或版本控制系统,这个问题尤为突出。
硬链接的使用 硬链接是指向同一 inode 的多个文件名。每个硬链接都会增加 inode 的链接数。如果一个文件被频繁地创建硬链接,而没有相应的删除,那么即使文件被删除,其 inode 仍然被占用,导致 inode 无法被回收。
文件系统类型 不同的文件系统类型对 inode 的分配和管理策略不同。例如,ext4 文件系统在格式化时会预先分配一定数量的 inode。如果分配的 inode 数量不足,那么在文件系统使用过程中可能会出现 inode 耗尽的情况。
系统漏洞或错误配置 系统漏洞或错误配置也可能导致 inode 的异常使用。例如,某些应用程序可能会因为编程错误而创建大量临时文件,或者配置错误导致文件系统参数设置不当,从而加速 inode 的消耗。
文件系统损坏 文件系统损坏可能会破坏 inode 的分配记录,导致无法正确释放已删除文件的 inode,或者错误地分配 inode,从而引起 inode 耗尽的问题。

3.5 检测与诊断 inode 耗尽的方法

为了有效管理和维护 Linux 文件系统,系统管理员需要能够及时检测和诊断 inode 耗尽的问题。以下是一些常用的方法和命令,用于检测和诊断 inode 的使用情况。

查看磁盘空间使用情况,使用 df 命令

查看inodess使用情况,使用df -i命令

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值