引用地址:https://mp.weixin.qq.com/s/W1wgFKU3FFcdTR6d3Wl96A
1. 写在前头
一直以来都想写一些关于服务器硬盘维护的文档,但是由于各种原因,就一直搁置了。而且还有一个原因,我这语文不及格呢,语言该怎么组织?还想着找度娘学习借鉴一下高人写的文档,可惜都没找到我想要的,好吧不多扯,进入正题吧
2. 简介
大数据时代,如何保证数据安全性,显得更加重要。从简单的定期备份,到备份系统、到灾备解决方案等等,都是为了确保数据安全。而不论何种方案,都必须将数据存放在底层的物理设备(硬盘、磁带等),今天我们主要讲服务器硬盘故障时该如何维护。
3. 硬盘故障处理流程
一直以来都在一线处理各类设备故障,我把硬盘的故障流程整理成如下五个步骤,四个都缺一不可。
- 故障定位及分析
- 业务定位
- 设备定位
- 故障处理
3.1 故障定位及分析
3.1.1 名词解释
- DSA :IBM日志收集工具
- DSET :DELL日志收集工具
- TTY :硬盘日志收集工具
- Slot Number :服务器硬盘槽位号,dell/IBM服务器槽位号从O开始
- Media Error Count:硬盘物理错误数
- Other Error Count:硬盘逻辑错误数
- Predictive Failure Count:预告警数
- Raw Size:磁盘容量
- PD Type: 磁盘类型(SAS,STAT)
- Firmware state:硬盘状态
- RAID Level :阵列等级
- State :阵列状态
3.1.2 收集日志及阵列穿孔
不仅仅是硬盘故障的时候需要收集日志,在服务器诊断中,线索往往是扑所迷离的,凭借经验或者猜测,无法正确地判断设备故障原因,排除故障,收集日志提交给售后工程师,可以快速和有效的缩小问题范围,精准定位故障点。
服务器出现故障后,必须一步步检测解决,走捷径可能会付出巨大的代价!收集日志可以大大减少数据丢失风险,避免多次上门维修,反复沟通造成的时间和精力浪费。
好吧估计名眼人一看就知道,上面的这两段文字不是我自己写的,因为我语文不及格嘛,其实是从DELL的微信公众号(公众号:戴尔服务解码)文章中抄来的,目的仅仅是为了让大家知道收集日志的重要性!当然过保的机器,就需要我们自己学会查看日志文件了。
- DSA日志
DSA日志是IBM机器保修时候,必要的日志,他可以收集所有的硬件健康状态日志,这里不多做介绍,只要一个文件在系统里执行完成后可以顺利收到日志
- DSET日志
DSET日志是DELL机器保修时候,必要的日志,功能如同DSA日志,DSET日志可以收集所有硬件健康状态日志,还可以收集到硬件的部件号,售后可以根据部件号来确认故障配件是否属于本机原配,若不是原配配件,则需要另外提供采购的配件订单号。
- TTY日志
TTY日志是硬盘故障时,硬盘故障最怕的就是出现阵列穿孔,收集TTY日志,可以直观的看出阵列是否出现了穿孔(关键字:Puncturing bad block),自己可以收集TTY日志并查看。
#unzip MegaCli8.02.21forLinux.zip
#ll
-rw-r--r-- 1 root root 1588725 May 17 2011 Lib_Utils-1.00-09.noarch.rpm
-rw-r--r-- 1 root root 1272097 Oct 24 2011 MegaCli-8.02.21-1.noarch.rpm
-rw-r--r-- 1 root root 2848229 Sep 8 17:12 MegaCli8.02.21forLinux.zip
-r--r--r-- 1 root root 2683 Oct 24 2011 readme.txt
-rw-r--r-- 1 root root 7404 Apr 13 2012 Run-Linux-PERC6-v1.0.sh
#chmod +x Run-Linux-PERC6-v1.0.sh
#./Run-Linux-PERC6-v1.0.sh
日志存放在当前目录下,名称为PERCLINUX.tgz
接到服务器硬盘告警后要怎么做呢?(至于,如何做硬盘监控,以后有机会再讲),当然是直接上服务器确认故障啦,使用MegaCli64工具就可以了(SAS 5/i,SAS 6/i阵列卡使用lsiutil工具,这里不做介绍咯)
3.1.3 查看物理磁盘信息
MegaCli64工具安装
#rpm -i Lib_Utils-1.00-09.noarch.rpm
#rpm -i MegaCli-8.02.21-1.noarch.rpm
如下为MegaCli64工具查看物理磁盘信息的输出结果
#/opt/MegaRAID/MegaCli/MegaCli64 -Pdlist -a0
Enclosure Device ID: 32
Slot Number: 2
Drive's position: DiskGroup: 0, Span: 0, Arm: 2
Enclosure position: 1
Device Id: 2
WWN: 5000C5007F56B880
Sequence Number: 3
Media Error Count: 0
Other Error Count: 3
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SAS
Raw Size: 279.396 GB [0x22ecb25c Sectors]
Non Coerced Size: 278.896 GB [0x22dcb25c Sectors]
Coerced Size: 278.875 GB [0x22dc0000 Sectors]
Sector Size: 0
Firmware state: Failed #就是这,固件状态提示硬盘Failed,就是说硬盘挂啦
Device Firmware Level: LS0A
Shield Counter: 0
Successful diagnostics completion on : N/A
SAS Address(0): 0x5000c5007f56b881
SAS Address(1): 0x0
Connected Port Number: 2(path0)
Inquiry Data: SEAGATE ST300MM0006 LS0AS0K3R7K1
FDE Capable: Not Capable
FDE Enable: Disable
Secured: Unsecured
Locked: Unlocked
Needs EKM Attention: No
Foreign State: None
Device Speed: 6.0Gb/s
Link Speed: 6.0Gb/s
Media Type: Hard Disk Device
Drive Temperature :27C (80.60 F)
PI Eligibility: No
Drive is formatted for PI information: No
PI: No PI
Port-0 :
Port status: Active
Port's Linkspeed: 6.0Gb/s
Port-1 :
Port status: Active
Port's Linkspeed: Unknown
Drive has flagged a S.M.A.R.T alert : No
3.1.4 物理磁盘故障分析
- Media Error Count>10
这里为什么定位数字10呢,因为IBM的机器中,Media Error Count>10就当做是硬盘故障啦,可以直接收集DSA日志,找IBM售后处理了
- Other Error Count>0
这个Other Error Count就是真的没啥用处了,因为不论是DELL还是IBM都不认这个东东,数值再大,没其他的告警出现,都不会当回事的,但是在IBM的机器上,这个坑爹的东东有时候就会莫名其妙的突然暴涨,解决办法只有一个,就是自己升级阵列卡微码和硬盘微码后重启,至于怎么升级微码,这里就不多赘述咯
- Predictive Failure Count>0
这个预告警就要重点关注了,因为不论是DELL还是IBM,只要出现这个告警,肯定是硬盘已经出现故障了,这个时候各自收集日志保修吧
- Firmware state
固件状态,这里讲几种固件状态,需要特别关注Failed, Unconfigured(bad)
Failed #硬盘故障了 Unconfigured(bad), Spun Up #硬盘还未配置,但是故障了
Unconfigured(good), Spun Up #硬盘还未配置,可以使用
JBOD, Spun Up #硬盘使用non-Raid模式
Hotspare , Spun Up #硬盘做热备使用 CopyBack #硬盘回写状态,这个在有热备盘的情况下才会出现,当有热备盘的阵列中,出现有一块硬盘出现故障,则热备盘会直接进入rebuiled状态,重建完成后,阵列状态就会恢复正常,这个时候,我们如果把故障硬盘替换掉,在有开启copyback模式的服务器上,这块刚刚替换上的新盘就会被标记为copyback状态,会将原来的热备盘的数据,全部回写到新盘上,而原来的热备盘,会重新变为热备
3.1.5 查看磁盘阵列信息
使用MegaCli64工具查看磁盘阵列信息
#/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL
Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name :
RAID Level : Primary-1, Secondary-0, RAID Level Qualifier-0
Size : 278.875 GB
Sector Size : 512
Mirror Data : 278.875 GB
State : Optimal
Strip Size : 64 KB
Number Of Drives : 2
Span Depth : 1
Default Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy : Disk's Default
Encryption Type : None
Default Power Savings Policy: Controller Defined
Current Power Savings Policy: None
Can spin up in 1 minute: Yes
LD has drives that support T10 power conditions: Yes
LD's IO profile supports MAX power savings with cached writes: No
Bad Blocks Exist: No
Is VD Cached: No
- 常见的RAID Level
Primary-1, Secondary-0, RAID Level Qualifier-0 : RAID 10
Primary-5, Secondary-0, RAID Level Qualifier-3 :RAID 5
Primary-0, Secondary-0, RAID Level Qualifier-0 :RAID 0
- 阵列状态
State: Optimal :阵列正常
State: Degraded :阵列降级
3.1.6 磁盘阵列故障分析
当你根据物理磁盘故障分析,确认当前服务器上已经存在硬盘故障了,那还需要确认磁盘阵列才能够确认是否能够进行物理硬盘的更换
- State: Optimal状态下
并不是Optimal状态下,就说明该机器上就没有磁盘故障了,因为有的机器有热备盘,硬盘故障后,热备盘会直接进入rebulid状态(重建状态中,阵列等级是Degraded),rebulid完成后,阵列状态恢复正常,但是物理磁盘还会有故障提示,此时就要处理物理磁盘
- State: Degraded
阵列进入降级状态,就能直接处理硬盘了吗?当然不是咯,还需要配合阵列等级的哦,当阵列进入降级状态,不同的阵列等级下我们都改如何处置
RAID 10: 在raid10中,最多允许N/2块硬盘故障,但是前提是这N/2块故障盘必须是分布在不同的raid1上的
RAID 5 : 在raid5中,最多允许1块硬盘故障,当然如果你的机器中有热备盘的话,最多可以允许热背叛数量+1块盘故障
RAID 0 : 在raid0中,你的硬盘挂了,那就死翘翘咯,换盘就以为这这块硬盘里的数据会丢失,祈祷你有做数据备份吧(当然也有冒险的办法,这里不讲咯)
3.2 业务定位
根据故障定位分析,你还是不能直接更换故障硬盘,因为换硬盘都会存在风险的,所以,在做所有的故障硬盘更换之前,都必须确认好业务,特别是在RAID0的时候!RAID0的硬盘出现故障,只要数据有备份,业务确认可以更换,那就可以直接处理
3.3 设备定位
设备定位,其实就是确认设备的物理位置,机房、机柜、机架位、故障硬盘槽位
3.4 故障处理
当经过上述的故障分析、定位,业务定位,设备定位后,就可以直接现场更换故障硬盘了,当然可能还有其他的细节问题,比如IDC机房人员进出权限问题(IDC机房需要工单才能正常进出),故障硬盘型号问题(尺寸、容量、转速等)……