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微信公众号(公众号:Dell Service Decoding)的文章复制过来,目的只是为了让大家知道收集日志的重要性!当然,对于过保的机器,我们需要学会自己查看日志文件。
DSA日志是IBM机器保修时候,必要的日志,他可以收集所有的硬件健康状态日志,这里不多做介绍,只要一个文件在系统里执行完成后可以顺利收到日志
DSET日志是DELL机器保修时候,必要的日志,功能如同DSA日志,DSET日志可以收集所有硬件健康状态日志,还可以收集到硬件的部件号,售后可以根据部件号来确认故障配件是否属于本机原配,若不是原配配件,则需要另外提供采购的配件订单号。
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
Drives 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
Ports Linkspeed: 6.0Gb/s
Port-1 :
Port status: Active
Ports Linkspeed: Unknown
Drive has flagged a S.M.A.R.T alert : No
3.1.4 物理磁盘故障分析
这里为什么定位数字10呢,因为IBM的机器中,Media Error Count>10就当做是硬盘故障啦,可以直接收集DSA日志,找IBM售后处理了
这个Other Error Count就是真的没啥用处了,因为不论是DELL还是IBM都不认这个东东,数值再大,没其他的告警出现,都不会当回事的,但是在IBM的机器上,这个坑爹的东东有时候就会莫名其妙的突然暴涨,解决办法只有一个,就是自己升级阵列卡微码和硬盘微码后重启,至于怎么升级微码,这里就不多赘述咯
这个预告警就要重点关注了,因为不论是DELL还是IBM,只要出现这个告警,肯定是硬盘已经出现故障了,这个时候各自收集日志保修吧
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 : Disks 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
LDs IO profile supports MAX power savings with cached writes: No
Bad Blocks Exist: No
Is VD Cached: No
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 磁盘阵列故障分析
当您根据物理磁盘故障分析确认当前服务器存在硬盘故障时,还需要确认磁盘阵列以确认是否可以更换物理硬盘
并不是Optimal状态下,就说明该机器上就没有磁盘故障了,因为有的机器有热备盘,硬盘故障后,热备盘会直接进入rebulid状态(重建状态中,阵列等级是Degraded),rebulid完成后,阵列状态恢复正常,但是物理磁盘还会有故障提示,此时就要处理物理磁盘
当阵列进入降级状态时,可以直接处理硬盘吗?当然不是。我们还需要配合阵列层面。当阵列进入降级状态时,我们如何处理不同的阵列级别?
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机房需要工单才能正常进出),故障硬盘型号(大小、容量、速度等)问题。 )......
扫描二维码添加我的微信ID一起学习
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/dianqi/article-381647-1.html
上午10点半飞过广场后各自回场
感动