zoukankan      html  css  js  c++  java
  • Raid操作与坏盘诊断

    Raid相关操作与注意事项

    Raid5

    SATA盘组成的Raid5,在保护数据的前提下达到高性能:

    1. RAID要有BBU

    2. Current Cache Policy采用WriteBack,No Write Cache if Bad BBU(没有BBU要改为WriteThrough),write policy分为两种:

      • WriteBack

        WriteBack有更好的性能,因为数据会写入controller Cache,不需要等待写入Hard driver,所以在没有BBU的情况下很容易引起数据丢失。

      • WriteThrough

        WriteThrough不使用Raid的Cache,性能要比WriteBack低很多

    3. Disk Cache Policy即SATA盘自己的Cache策略,与Raid无关, 最好要设为disable(因为异常掉电可能会很惨)

    UPS:不间断电源,保障计算机系统在停电之后继续工作一段时间

    BBU:在供电出现问题的情况下,为controller Cache提供一段时间的供电,在BBU电量耗尽之前恢复供电,可保证数据完整。

    BBU是由锂离子电池和电子控制电路组成,电池的寿命取决于其老化程度,无论是否充放电已经充放电的多少,锂离子电池的容量都会减少。为了记录电池的放电曲线,延长电池的寿命,默认会启用自动校准模式(AutoLearn Mode),在Learn Cycle 内,Raid卡控制器不会使用BBU,这个过程可能持续12小时,这个过程中会禁用Write back,直到其完成校准。

    这个Auto-Learn Mode,一般30天执行一次,我们的BBU 28天之星一次。一般不要关闭,因为这可以有效地延长寿命。 如果不做这个校准,寿命会从2年下降到8个月。

    创建Raid

    首先通过PDList查看需要组raid的盘Enclosure Device ID与Slot Number:

    /opt/MegaRAID/MegaCli/MegaCli64 PDList -A0
    

    然后组建raid

    /opt/MegaRAID/MegaCli/MegaCli64 CfgLDAdd -r5 [E:S1,E:S2,E:S3,E:S4] -strpsz128 -A0
    # r5 raid5
    # E:S Enclosure Device ID:Slot Number
    # strpsz128 raid条带
    

    删除Raid

    首先通过LDInfo看要删除Virtual Drive值:

    /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aAll
    

    然后删除逻辑盘

    /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdDel -Ln -A0
    # n 要删除的逻辑磁盘的值
    

    清除Raid下面的foreign key,不过不清除,后面无法建Raid:

    /opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -Scan -aALL 
    
    /opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -Clear -aALL
    

    Disk与BBU相关设置

    查看是否存在BBU

    /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -aAll
    

    设置raid Current Cache Policy

    # Write Cache OK if Bad BBU(除非特殊情况,否则丢数据可能性变大)
    /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp CachedBadBBU -Lall -aALL
    

    设置为No Write Cache if Bad BBU,即BBU损坏或learning时变为Write Through:

    /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -NoCachedBadBBU -Immediate -Lall -aAll
    

    BBU每个月会发起learning,也可以手动发起:

    /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -BbuLearn -aALL
    

    Disk Cache

    上面说了Disk Cache Policy最好关掉:

    关闭Disk Cache

    /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -DisDskCache -Immediate -Lall -aAll
    

    打开Disk Cache

    /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -EnDskCache -Immediate -Lall -aAll
    

    检查Raid上的磁盘

    先找出有明显错误的,看media error和other error:

    /opt/MegaRAID/MegaCli/MegaCli64 -pdlist -a0|grep -Ei "media error |other error"
    

    光凭media error和other error是无法确定盘是否高危的,还需要找到Device Id,使用smartctl工具进去看磁盘信息:

    smartctl -a -d megaraid, /dev/sdd
    # 后面跟megaraid,【Device Id】 /dev/sdd【在当前raid卡上的盘符】
    
    # 以下几条为高危盘的参考
    # 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
    # 187 Reported_Uncorrect
    # 188 Command_Timeout【这个有时候会特别大 有一个换算 一般没问题】
    # 197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
    # 198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
    

    如果以上指标一个或多个数值特别大,证明该盘为高危盘。

    快速找出危险盘:

    /opt/MegaRAID/MegaCli/MegaCli64 -LDPDinfo -A0 |grep "Device Id" |awk '{print $3}' |xargs -I {} smartctl -a -d megaraid,{} /dev/sdd |grep -Ei "Reallocated_Sector_Ct|^187|^188|^197"
    

    关机换Raid卡

    先查看BBU和集群信息:

    /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -A0 #总信息
    /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL
    /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuCapacityInfo -A0
    

    状态应该为Battery State: Optimal是正常

    然后更改raid卡策略为WriteThrough:

    /opt/MegaRAID/MegaCli/MegaCli64 LDSetProp WT -Lall -Aall(WriteThrough) 
    /opt/MegaRAID/MegaCli/MegaCli64 LDSetProp WB -Lall -Aall(WriteBack)
    

    先sync,目的是将操作系统文件系统的缓存刷到硬盘:

    sync
    

    再将raid卡缓存上的数据刷到硬盘:

    /opt/MegaRAID/MegaCli/MegaCli64 -AdpCacheFlush -Aall
    

    raid卡时间

    默认raid卡时间与我们系统时间相差八小时,即:raid卡时间+八小时=系统时间

    查看raid卡时间

    /opt/MegaRAID/MegaCli/MegaCli64 adpgettime -a0
    

    设置raid卡时间

    /opt/MegaRAID/MegaCli/MegaCli64 AdpSetTime 20200510 18:18:00 -a0
    

    其他

    换盘后查看盘的rebuild进度

    /opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -showprog -physDrv [E:S] -a0
    /opt/MegaRAID/MegaCli/MegaCli64 -pdrbld -progdsply -physdrv[E:S] -aALL
    

    修改raid盘的rebuild速度,默认为30

    /opt/MegaRAID/MegaCli/MegaCli64 -AdpSetProp RebuildRate -30 -a0
    

    获取raid卡日志

    /opt/MegaRAID/MegaCli/MegaCli64 -AdpEventLog -GetEvents -f raid.envent.log -a0
    

    查看逻辑盘信息

    /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aAll
    

    图上Disk Cache Policy是Disabled,如果是Disk's Default则默认如下:

    • For virtual disks containing SATA disks , Enabled
    • For virtual disks containing SAS disks , Disabled

    指定磁盘灯闪烁与关闭

    # 闪烁
    /opt/MegaRAID/MegaCli/MegaCli64 -PdLocate -start -physdrv [E:S]  -aALL
    # 取消闪烁
    /opt/MegaRAID/MegaCli/MegaCli64 -PdLocate -stop -physdrv [E:S]  -aALL
    

    raid卡恢复出厂设置

    /opt/MegaRAID/MegaCli/MegaCli64 -AdpFacDefSet -a0
    
  • 相关阅读:
    layui formSelects-v4复选框总结等table操作记
    C# 更改 WebBrowser UserAgent
    SQL Server 页撕裂
    c# 实现操作系统 “运行” 功能
    asp.net updatepanel 客户端事件
    javascript des 加密解密
    无日志文件还原数据库(只有mdf无ldf)
    关于 WebForm 在未来微软的替代方案
    C# 从32位程序启动64位程序
    SQL SERVER 数据库修复方法 (数据库变为 "可疑")
  • 原文地址:https://www.cnblogs.com/tongh/p/12115646.html
Copyright © 2011-2022 走看看