Linux之慢盘检测

2023-10-18 23:20
文章标签 linux 检测 之慢

本文主要是介绍Linux之慢盘检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

慢盘检测

  • 常见的慢盘检测工具
  • 判断方法
    • 判断磁盘为慢盘的阈值

前面介绍iostat的文章中提到过

  1. iostat工具没有任何一输出项表示的是硬盘设备平均每次IO的时间
  2. 也不能直接通过 /proc/diskstats 提供的统计值来准确地计算 I/O 在磁盘上的耗时

常见的慢盘检测工具

常见的慢盘检测工具例如,ARIES、华为IBMA都是通过周期性读取内核提供的统计信息(/proc/diskstats)来计算磁盘的平均 I/O 服务时间(svctm),并将服务时间划分为不同的3个等级level0/level1/level2,每个等级对应不同的加权值:

  • 轻微(level0): 0ms
  • 一般(level1):100ms
  • 严重(level2):200ms
  1. ARIES 慢盘判断方法:
  • 每1s中采集一次平均I/O服务时间,并判断 svctm 处在的权重区间,对应区间计数;
  • 每30分钟判断一次是否命中慢盘,判断方法:一般次数 * 1 + 严重次数 * 2 > 20% * 1800,则判定为慢盘;
  • 对于命中为慢盘,则标记为本周期内命中慢盘次数+1;
  • 一天24h内,命中慢盘次数超过80%,则直接调用坏盘逻辑。
  1. 华为提供的慢盘判断方法:
  • 每1s中采集一次平均I/O服务时间(svctm),并判断 svctm 处在的权重区间,对应区间计数;
  • 每5分钟判断一次是否命中慢盘,判断方法:一般次数 * 1 + 严重次数 * 2 > 20% * 300,则判定为慢盘;
    两种方法都依赖于计算的 svctm, 实际上这个值在新版本的 iostat 中被废弃,因为它并不能代表实际的 I/O服务时间。

判断方法

尽管如此,还是可以通过iostat中计算svctm的方法来预估每IO的平均服务时间。
(虽然blktrace能够追踪每次 I/O 将 request 提交给驱动到请求完成的耗时,但是 blktrace 会增加I/O 的耗时从而影响性能)

  • 理由如下:
    虽然 svctm 不能准确地表示I/O的服务时间,但是当出现慢盘时,无论传统的 sata hdd 盘还是 nvme ssd,svctm 都会因为单次 I/O 耗时增加而增加,svctm 会增加到几百毫秒,甚至几千毫秒。 所以继续使用 svctm 来判断慢盘。

判断磁盘为慢盘的阈值

磁盘类型level1(ms)level2(ms)
hdd3060
sata ssd2040
nvme ssd1020

说明: 值除了 hdd 的阈值有据可循, 其他两种磁盘都是推算值

  • 普通 sata ssd 读QPS 能达到 五百以上, 所以当 iops 下降到 50, 说明磁盘已经出现慢盘
  • nvme ssd iops 能达到一千到几十万, 当iops 下降到 100, 说明磁盘已经出现慢盘

每 1s 中采集一次 /sys/block/disk name/stat, 并计算svctm,并判断 svctm 处在的权重区间,对应区间计数;

  1. 当本次计算的平均 svctm 超过报警值就将慢盘次数加1,如果平均耗时超过危险值就将慢盘次数加2;
    慢盘次数 = 一般次数 * 1 + 严重次数 * 2
  2. 如果过去一段时间内(默认3分钟)慢盘次数超过统计次数的 20% 则报警慢盘(总数 = 3*60 - 没有请求的秒);
  3. 如果过去一长段时间内(默认30分钟)磁盘被报警慢盘周期(一个周期为3分钟)次数超过 20%(除去没有请求的周期),则报警慢盘
  4. 如果过去一长段时间内(默认180分钟)磁盘被报警慢盘周期次数超过 80%(除去没有请求的周期),磁盘则在保证数据安全的前提下不提供服务

这篇关于Linux之慢盘检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/235739

相关文章

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Linux grep 命令的使用指南

《Linuxgrep命令的使用指南》本文给大家介绍Linuxgrep命令的使用指南,包括基础搜索语法、实践指南,感兴趣的朋友跟随小编一起看看吧... 目录linux grep 命令全面使用指南一、基础搜索语法1. 基本文本搜索2. 多文件搜索二、常用选项详解1. 输出控制选项2. 上下文控制选项三、正则表达