
# ALM-12033 慢盘故障
#### 告警解释
**MRS 3.3.0及之后版本、MRS 3.1.0.0.10/3.1.5.0.3及之后补丁版本：**
- 对于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秒的周期均不满足以上条件时，告警自动清除。
**MRS 3.3.0之前版本：**
- 对于HDD盘，满足以下任意条件时触发告警：
  - 系统默认每3秒执行一次**iostat**命令，在30秒内至少7个采集周期的svctm值超过1000ms。
  
  - 系统默认每3秒执行一次**iostat**命令，在300秒内有超过50%的IO超过150ms。
   
- 对于SSD盘，满足以下任意条件时触发告警：
  - 系统默认每3秒执行一次**iostat**命令，在30秒内至少10周期svctm值超过1000ms。
  
  - 系统默认每3秒执行一次**iostat**命令，在300秒内有超过60%的IO超过20ms。
   
当系统连续15分钟不满足以上所有条件时，告警自动清除。
![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
svctm的获取方法请参见[参考信息]。
#### 告警属性
| 告警ID  | 告警级别                                                                                                                                                                                                                   | 是否自动清除 |
|:---|:---|:---|
| 12033 | - 次要：MRS 3.3.0及之后版本、MRS 3.1.0.0.10/3.1.5.0.3及之后补丁版本  - 重要：MRS 3.3.0之前版本   | 是      |
   
#### 告警参数
| 参数名称 | 参数含义          |
|:---|:---|
| 来源   | 产生告警的集群或系统名称。 |
| 服务名  | 产生告警的服务名称。    |
| 角色名  | 产生告警的角色名称。    |
| 主机名  | 产生告警的主机名。     |
| 磁盘名  | 产生告警的磁盘名。     |
   
#### 对系统的影响
- 系统性能下降，慢盘会导致系统I/O性能下降，从而影响系统的响应速度和吞吐量。这可能会导致客户的业务运行变慢（例如：作业提交运行变慢、页面响应迟钝、接口响应超时等），甚至出现崩溃或错误。
- 系统故障：慢盘故障可能会导致系统故障，从而导致客户的业务受到影响。如果慢盘上存储的数据包含关键信息，可能会导致系统崩溃或数据丢失。
 
#### 可能原因
磁盘老化或者磁盘坏道。
#### 处理步骤
**检查磁盘状态。**
1. 在FusionInsight Manager界面，选择"运维 \> 告警 \> 告警"。
2. 查看该告警的详细信息，查看定位信息中"主机名"字段和"磁盘名"字段的值，获取该告警产生的故障磁盘信息。
3. 确认上报告警的节点是否为虚拟化环境。 
   - 是，执行[步骤 4]。
   
   - 否，执行[步骤 7]。
   
   
   
   
4. 请检查虚拟化环境提供的存储性能是否满足硬件要求，检查完毕之后执行[步骤 5]。
5. 以**root** 用户登录告警节点，查看输出内容是否包含"磁盘名"字段的值。
   
   集群节点登录可参考[登录MRS集群节点](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0083.html)。
   ```
   df -h
   ```
   - 是，执行[步骤 7]。
   
   - 否，执行[步骤 6]。
   
   
   
   
6. 执行命令，确认是否可以查到"磁盘名"字段值与磁盘设备的映射关系。
   
   ```
   lsblk
   ```
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0263895818.jpg "点击放大")
   - 是，执行[步骤 7]。
   
   - 否，执行[步骤 22]。
    
   
   
7. 以**root** 用户登录上报告警的节点，执行命令查看磁盘的设备信息，判断磁盘是否建立了RAID，用户密码为安装前用户自定义，请咨询系统管理员。
   
   ```
   lsscsi | grep "/dev/sd[x]"
   ```
   ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
   其中**/dev/sd\[x\]** 为[步骤 2]中获取到的上报告警的磁盘名称。
   例如执行：
   ```
   lsscsi | grep "/dev/sda"
   ```
   如果命令执行结果第三列显示ATA、SATA或者SAS，说明磁盘没有建立RAID；显示其他信息，则该磁盘可能建立了RAID。
   - 是，执行[步骤 12]。
   
   - 否，执行[步骤 8]。
   
   
   
   
8. 执行**smartctl -i /dev/sd\[x\]** 命令检查硬件是否支持smart。
   
   例如执行：
   ```
   smartctl -i /dev/sda
   ```
   如果命令执行结果中包含"SMART support is: Enabled"，表示磁盘支持smart；执行结果中包含"Device does not support SMART"或者其他，表示磁盘不支持smart。
   - 是，执行[步骤 9]。
   
   - 否，执行[步骤 16]。
   
   
   
   
9. 执行**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，则认为磁盘故障，需要更换。
   - 是，执行[步骤 10]。
   
   - 否，执行[步骤 18]。
   
   
   
   
10. 执行**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自检。
    - 是，执行[步骤 11]。
    
    - 否，执行[步骤 18]。
    
    
    
    
11. 执行**smartctl -t long /dev/sd\[x\]** 命令触发磁盘smart自检。命令执行后，会提示自检完成的时间，在等待自检完成后，重新执行[步骤 9]和[步骤 10]，检查磁盘是否正常。
    
    例如执行：
    ```
    smartctl -t long /dev/sda
    ```
    - 是，执行[步骤 17]。
    
    - 否，执行[步骤 18]。
    
    
    
    
12. 执行**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。
    - 是，执行[步骤 13]。
    
    - 否，执行[步骤 16]。
    
    
    
    
13. 执行[步骤 12]中记录的**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，则认为磁盘故障，需要更换。
    - 是，执行[步骤 14]。
    
    - 否，执行[步骤 18]。
    
    
    
    
14. 执行**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自检。
    - 是，执行[步骤 15]。
    
    - 否，执行[步骤 18]。
    
    
    
    
15. 执行**smartctl -d \[sat\|scsi\]+megaraid,\[DID\] -t long /dev/sd\[x\]** 命令触发磁盘smart自检。命令执行后，会提示自检完成的时间，在等待自检完成后，重新执行[步骤 13]和[步骤 14]，检查磁盘是否正常。
    
    例如执行：
    ```
    smartctl -d sat+megaraid,2 -t long /dev/sda
    ```
    - 是，执行[步骤 17]。
    
    - 否，执行[步骤 18]。
    
    
    
    
16. 磁盘不支持smart，通常是因为配置的RAID卡不支持，此时需要使用对应RAID卡厂商的检查工具进行处理，然后执行[步骤 17]。
    
    例如LSI一般是MegaCLI工具。
    
    
17. 在FusionInsight Manager界面，选择"运维 \> 告警 \> 告警"，单击该告警操作列的"清除"，并继续观察该告警，查看同一块磁盘的告警是否会继续上报。
    
    如果当前磁盘出现三次以上该告警，建议用户更换磁盘。
    - 是，执行[步骤 18]。
    
    - 否，操作结束。
    
    
    
    
**更换磁盘。**
18. 在FusionInsight Manager界面，选择"运维 \> 告警 \> 告警"。
19. 查看该告警的详细信息，查看定位信息中对应的"主机名"字段和"磁盘名"字段的值，获取该告警上报的故障磁盘信息。
20. 更换硬盘。
21. 检查告警是否清除。 
    - 是，操作结束。
    
    - 否，执行[步骤 22]。
    
    
    
    
**收集故障信息。**
22. 在FusionInsight Manager界面，选择"运维 \> 日志 \> 下载"。
23. 在"服务"中勾选"OMS"，单击"确定"。
24. 单击右上角的![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0263895453.png)设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后10分钟，单击"下载"。
25. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
 #### 参考信息
**svctm的获取方法如下：**
- MRS 3.1.0版本： 在操作系统中执行**iostat -x -t**获取：
  ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001723187865.png "点击放大")
  
- MRS 3.1.0之后版本： svctm = (tot_ticks_new - tot_ticks_old) / (rd_ios_new + wr_ios_new - rd_ios_old - wr_ios_old)
  
- 针对MRS 3.3.0之前版本：如果rd_ios_new + wr_ios_new - rd_ios_old - wr_ios_old = 0，则svctm = 0
- 针对MRS 3.3.0及之后版本、MRS 3.1.0.0.10/3.1.5.0.3及之后补丁版本： 当检测周期粒度为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_0000001675308454.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
