
# ALM-12033 慢盘故障（2.x及以前版本）
#### 告警解释
**MRS 2.x及以前版本：**
- 对于HDD盘，满足以下任意条件时触发告警：
  - 系统每3秒执行一次**iostat**命令，在30秒内连续10周期svctm值超过1000ms。
  
  - 系统每3秒执行一次**iostat**命令，在300秒内有超过60%的IO超过150ms。
   
- 对于SSD盘，满足以下任意条件时触发告警：
  - 系统每3秒执行一次**iostat**命令，在30秒内连续10周期svctm值超过1000ms。
  
  - 系统每3秒执行一次**iostat**命令，在300秒内有超过60%的IO超过20ms。
   
当系统连续15分钟不满足以上所有条件时，告警自动清除。
**MRS 1.9.3.10及之后的补丁的版本：**
- 对于HDD盘，满足以下任意条件时触发告警：
  - 系统默认每3秒采集一次数据，在30秒内至少7个采集周期的svctm时延达到1000ms。
  
  - 系统默认每3秒采集一次数据，在300秒内至少50%次采集到的svctm时延达到150ms。
   
- 对于SSD盘，满足以下任意条件时触发告警：
  - 系统默认每3秒采集一次数据，在30秒内至少7个周期的svctm时延达到1000ms。
  
  - 系统默认每3秒采集一次数据，在300秒内至少50%次检测到的svctm时延达到20ms。
   
系统采集周期为3秒，检测周期为30秒或300秒，当系统连续3个30秒、300秒的周期均不满足以上条件时，告警自动清除。
![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
相关参数获取方法请参考[参考信息]。
#### 告警属性
| 告警ID  | 告警级别                                                                                                                                                                                            | 是否自动清除 |
|:---|:---|:---|
| 12033 | - 次要：MRS 1.9.3.10及之后的补丁版本  - 重要：其他MRS 2.x及之前版本   | 是      |
   
#### 告警参数
| 参数名称 | 参数含义          |
|:---|:---|
| 来源   | 产生告警的集群或系统名称。 |
| 服务名  | 产生告警的服务名称。    |
| 角色名  | 产生告警的角色名称。    |
| 主机名  | 产生告警的主机名。     |
| 磁盘名  | 产生告警的磁盘名。     |
   
#### 对系统的影响
磁盘慢盘故障，导致业务性能下降，阻塞业务的处理能力，严重时可能会导致服务不可用。
#### 可能原因
磁盘老化或者磁盘坏道。
#### 处理步骤
**检查磁盘状态。**
1. 打开MRS集群详情页面，在实时告警列表中，单击此告警。在"告警详情"区域，获取告警所在主机信息和故障磁盘信息。
2. 确认上报告警的节点是否为虚拟化环境。 
   - 是，执行[步骤 3]。
   
   - 否，执行[步骤 6]。
   
   
   
   
3. 请检查虚拟化环境提供的存储性能是否满足硬件要求，检查完毕之后执行[步骤 4]。
4. 以**root** 用户登录告警节点，执行**df -h** 命令，查看输出内容是否包含"磁盘名"字段的值。
   
   - 是，执行[步骤 6]。
   
   - 否，执行[步骤 5]。
   
   
   
   
5. 执行**lsblk** 命令，是否可以查到"磁盘名"字段值与磁盘设备的映射关系。
   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001879581016.jpg "点击放大")
   - 是，执行[步骤 6]。
   
   - 否，执行[步骤 21]。
    
   
   
6. 以**root** 用户登录上报告警的节点，执行**lsscsi \| grep "/dev/sd\[x\]"** 命令查看磁盘的设备信息，判断磁盘是否建立了RAID。
   
   ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
   其中**/dev/sd\[x\]** 为[步骤 1]中获取到的上报告警的磁盘名称。
   例如执行：
   **lsscsi \| grep "/dev/sda"**
   如果命令执行结果第三列显示ATA、SATA或者SAS，说明磁盘没有建立RAID；显示其他信息，则该磁盘可能建立了RAID。
   - 是，执行[步骤 11]。
   
   - 否，执行[步骤 7]。
   
   
   
   
7. 执行**smartctl -i /dev/sd\[x\]** 命令检查硬件是否支持smart。
   
   例如执行：
   **smartctl -i /dev/sda**
   如果命令执行结果中包含"SMART support is: Enabled"，表示磁盘支持smart；执行结果中包含"Device does not support SMART"或者其他，表示磁盘不支持smart。
   - 是，执行[步骤 8]。
   
   - 否，执行[步骤 16]。
   
   
   
   
8. 执行**smartctl -H --all /dev/sd\[x\]** 命令查看smart的基本信息，判断磁盘是否正常。
   
   例如执行：
   **smartctl -H --all /dev/sda**
   查看命令执行结果的"SMART overall-health self-assessment test result"内容，如果是"FAILED"，表示磁盘故障，需要更换；如果为"PASSED"，需要进一步看"Reallocated_Sector_Ct"或者"Elements in grown defect list"项的计数，如果大于100，则认为磁盘故障，需要更换。
   - 是，执行[步骤 9]。
   
   - 否，执行[步骤 17]。
   
   
   
   
9. 执行**smartctl -l error -H /dev/sd\[x\]** 命令查看磁盘的GLIST列表，进一步继续判断磁盘是否正常。
   
   例如执行：
   **smartctl -l error -H /dev/sda**
   查看命令执行结果的"Command/Feature_name"列，如果出现"READ SECTOR(S)"或者"WRITE SECTOR(S)"表示磁盘有坏道；如果出现其他错误，表示磁盘电路板有问题。这两种错误均表示磁盘不正常，需要更换。
   如果显示"No Errors Logged"，则表示没有错误日志，则可以触发磁盘smart自检。
   - 是，执行[步骤 10]。
   
   - 否，执行[步骤 17]。
   
   
   
   
10. 执行**smartctl -t long /dev/sd\[x\]** 命令触发磁盘smart自检。命令执行后，会提示自检完成的时间，在等待自检完成后，重新执行[步骤 8]和[步骤 9]，检查磁盘是否正常。
    
    例如执行：
    **smartctl -t long /dev/sda**
    - 是，执行[步骤 16]。
    
    - 否，执行[步骤 17]。
    
    
    
    
11. 执行**smartctl -d \[sat\|scsi\]+megaraid,\[DID\] -H --all /dev/sd\[x\]** 命令检查硬件是否支持smart。
    
    ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
    - \[sat\|scsi\]表示磁盘类型，需要尝试以上两种类型。
    
    - \[DID\]表示槽位信息，需要尝试0～15。
     
    例如依次执行：
    **smartctl -d sat+megaraid,0 -H --all /dev/sda**
    **smartctl -d sat+megaraid,1 -H --all /dev/sda**
    **smartctl -d sat+megaraid,2 -H --all /dev/sda**
    ...
    依次尝试不同磁盘类型和槽位信息的命令组合，如果执行结果中显示"SMART support is: Enabled"，表示磁盘支持smart，记录命令执行成功时磁盘类型和槽位信息组合参数；如果尝试完以上所有的命令组合，执行结果都未显示"SMART support is: Enabled"，表示磁盘不支持smart。
    - 是，执行[步骤 12]。
    
    - 否，执行[步骤 15]。
    
    
    
    
12. 执行[步骤 11]中记录的**smartctl -d \[sat\|scsi\]+megaraid,\[DID\] -H --all /dev/sd\[x\]** 命令查看smart的基本信息，判断磁盘是否正常。
    
    例如执行：
    **smartctl -d sat+megaraid,2 -H --all /dev/sda**
    查看命令执行结果的"SMART overall-health self-assessment test result"内容，如果是"FAILED"，表示磁盘故障，需要更换；如果为"PASSED"，需要进一步看"Reallocated_Sector_Ct"或者"Elements in grown defect list"项的计数，如果大于100，则认为磁盘故障，需要更换。
    - 是，执行[步骤 13]。
    
    - 否，执行[步骤 17]。
    
    
    
    
13. 执行**smartctl -d \[sat\|scsi\]+megaraid,\[DID\] -l error -H /dev/sd\[x\]** 命令查看硬盘的GLIST列表，进一步判断硬盘是否正常。
    
    例如执行：
    **smartctl -d sat+megaraid,2 -l error -H /dev/sda**
    查看命令执行结果的"Command/Feature_name"列，如果出现"READ SECTOR(S)"或者"WRITE SECTOR(S)"表示磁盘有坏道；如果出现其他错误，表示磁盘电路板有问题。这两种错误均表示磁盘不正常，需要更换。
    如果显示"No Errors Logged"，则表示没有错误日志，则可以触发磁盘smart自检。
    - 是，执行[步骤 14]。
    
    - 否，执行[步骤 17]。
    
    
    
    
14. 执行**smartctl -d \[sat\|scsi\]+megaraid,\[DID\] -t long /dev/sd\[x\]** 命令触发磁盘smart自检。命令执行后，会提示自检完成的时间，在等待自检完成后，重新执行[步骤 12]和[步骤 13]，检查磁盘是否正常。
    
    例如执行：
    **smartctl -d sat+megaraid,2 -t long /dev/sda**
    - 是，执行[步骤 16]。
    
    - 否，执行[步骤 17]。
    
    
    
    
15. 磁盘不支持smart，通常是因为配置的RAID卡不支持，此时需要使用对应RAID卡厂商的检查工具进行处理，然后执行[步骤 16]。
    
    例如LSI一般是MegaCLI工具。
    
    
16. 在告警详情页面单击"清除告警"，并继续观察该告警，查看同一块磁盘的告警是否会继续上报。
    
    如果当前磁盘出现三次以上该告警，建议用户更换磁盘。
    - 是，执行[步骤 17]。
    
    - 否，操作结束。
    
    
    
    
**更换磁盘。**
17. 在MRS Manager界面，单击"告警管理"。
18. 查看该告警的详细信息，查看定位信息中对应的"主机名"字段和"磁盘名"字段的值，获取该告警上报的故障磁盘信息。
19. 更换硬盘。
20. 检查告警是否清除。 
    - 是，操作结束。
    
    - 否，执行[步骤 21]。
    
    
    
    
**收集故障信息**
21. 在MRS Manager界面，选择"系统设置 \> 日志导出"
22. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
 #### 参考信息
相关参数获取方法如下：
- MRS 2.x及以前版本： 当前慢盘故障告警的检查原理为：
  在Linux平台上判断IO是否存在问题，输入命令**iostat -x -t 1**，观察svctm的值（如图所示红色框中的部分）。
  svctm值表示该磁盘IO服务时间。
  ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001925500009.png "点击放大")
  
- MRS 1.9.3.10及之后的补丁版本： svctm的获取方法：
  svctm = (tot_ticks_new - tot_ticks_old) / (rd_ios_new + wr_ios_new - rd_ios_old - wr_ios_old)
  当检测周期粒度为30秒时，如果rd_ios_new + wr_ios_new - rd_ios_old - wr_ios_old = 0，则svctm = 0。
  当检测周期粒度为300秒时，在rd_ios_new + wr_ios_new - rd_ios_old - wr_ios_old = 0的情况下，如果tot_ticks_new - tot_ticks_old = 0则svctm = 0，否则svctm值为无穷大。
  
参数获取如下：
系统每3秒执行一次**cat /proc/diskstats**命令采集数据。例如：
![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001925500005.png "点击放大")
连续两次采集的数据中：
第一次采集的数据中，第4列的数字是"rd_ios_old"，第8列的数字是"wr_ios_old"，第13列的数字是"tot_ticks_old"。
第二次采集的数据中，第4列的数字是"rd_ios_new"，第8列的数字是"wr_ios_new"，第13列的数字是"tot_ticks_new"。
则上图中svctm值为：
(19571460 - 19569526) / (1101553 + 28747977 - 1101553 - 28744856) = 0.6197
