DELL磁盘阵列控制卡(RAID)管理工具-MegaCli常用指令参考


一般情况下使用Megacli这个工具进行监控。也可以在不方便去现场维护的情况下对盘阵进行操作,这也对运维来说是一人举足轻重的磁盘工具。这里在对这个工具做个小结:获取信息(Gather information)、控制器管理(Controller management)、虚拟驱动器管理(Virtual drive management、物理驱动器管理(Physical drive management)、热备份盘管理(Hot spare management)、替换重建管理(Change/rebuild/replace a drive)等。
Raid 控制器不同策略对系统的影响
本文我们主要以 dell perc 系列的 raid 控制器介绍不同策略对系统性能以及数据一致性的影响,主要通过以下几方面介绍不同策略对系统性能的影响:
raid write policy
disk cache
read ahead policy
I/O policy
strip size
raid write policy (写策略)对性能的影响
raid 控制器中不同的写策略在写的性能上也有很大的差别, 目前主要有两种可用的模式 — WB(write back) 和 WT(write through)
write back
在该模式下, raid 控制器在数据加载到控制器的缓存后就会立即给 I/O 请求返回确认信息, 应用程序可以继续工作而不用等待数据被写到物理磁盘上. write back 模式在大多数情况下都能够提供更好的写性能. 当然写性能提高的情况下也会有不好的方面, 如果在该模式下突然断电, raid 缓存中的数据可能就有丢失的风险, 一般运营商机房中的 UPS(备用电源) 则能缓解数据丢失的风险, 基于这个原因重要业务的服务器都应该放在有 UPS 系统的机房中.
raid 卡的 BBU(backup battery status) 特性则提供了另一种保护措施, 在主机异常断电的情况下, 即便没有 UPS, 只要 BBU 电池及电量没有异常, raid 卡里缓存的数据也不会立即丢失. 另外 BBU 在以下情况下会使得 write back 模式切换到 write through 模式:
1. 没有充满电
2. 正在自动校准(auto learn)
raid 卡默认情况下会启用自动校准模式以记录 BBU 电池的放电曲线, 以便控制器了解电池的状态, 这个过程可能需要12小时左右, 期间会禁用 write back 模式来保证数据的完整性, 这也会造成系统性能的降低. 校准(learn cycle) 分为以下步骤:
1. 控制器给 BBU 电池充满电
2. 开始校准, 对 BBU 电池进行放电
3. 放电完成后, 完成校准, 并重新充电, 充到电池的最大电量.
如果第二或第三阶段被中断,重新校准的任务会停止,而不会重新执行,DELL机器默认 90 天校准一次。
write through
在该模式下, 不会使用 raid 控制器的缓存来加速写IO请求. 大多数情况下该模式都慢于 write back 模式, 因为应用程序需要等待数据被写到物理磁盘上. 不过该模式在 raid 级别为 raid 0 或 raid 10 的时候, 如果是顺序写则能提供最高的写带宽(write bandwidth).
disk cache
磁盘缓存策略决定了硬盘的写缓存是否开启. raid控制器设置为 write thru 模式的时候,磁盘缓存策略对系统的写性能影响很大,想想磁盘没有缓存的时候,每个写操作都要等待数据写到物理磁盘中, 如果是较多的随机写性能肯定会很差; 相反如果 raid 控制器为 write back 模式, 磁盘缓存是否开启对系统的写性能影响很小, 大多场景下都可以忽略影响.
另外磁盘缓存开启的时候, 如果突然断也会存在丢失数据的风险. 从这个角度看, UPS 备用电源真是至关重要, 重要数据的主机应该放到有 UPS 支持的机房中. raid 卡的 BBU 特性则不能保护磁盘缓存的数据.
read ahead policy
read ahead 策略决定 raid 控制器读取数据的时候是只读取一个块(block)的数据还是整个条带(strip)的数据, 该设置对 raid 卡读的性能影响很大.
No Read Ahead
在应用发出请求后 raid 控制器仅读取一个块的数据, 在业务随机读取较多的场景下可以选用该策略.
Always Read Ahead
应用发出请求后 raid 控制器会读取整个条带的数据放到 raid cache 中, 每个 read 操作会消耗较多的资源. 在这种模式下, 对主要是顺序读取的业务会有很好的性能提升.
Adaptive Read Ahead
该策略下由 RAID 控制器根据读请求的类型自行调整是否预取. 该模式结合了上述两种策略的有点. 所以如果不清楚读取的类型或者业务存在顺序读取和随机读取的请求, 则推荐使用自适应模式.
I/O Policy
RAID 控制器的 I/O 策略决定了是否保留 raid cache 中的数据, 如果应用的请求读的都是同一块数据, raid cache 则直接返回数据, 可以减少很多应用访问的时间. 目前该策略主要有两种方式:
Direct I/O
直接读取, 不使用 raid cache 功能. 大多数场景下可以使用该策略, 应为文件系统, 磁盘及应用等都有自己的缓存, 不太需要 raid cache 功能.
Cached I/O
在该种策略下, raid 控制器会把读和写请求先从 raid cache 中获取和更新. 如果有很多读操作都请求同一块数据, 则 raid cache 直接返回数据给读操作. 如果是写操作, 性能则根据 raid write policy 的不同而不同.
strip size
条带大小决定了数据怎么分布到硬盘中, 同样由于硬盘数量的原因, 条带大小也可能决定了一次 I/O 请求需要访问多少磁盘. 通常条带大小较大(512 KB 或 1MB )的话就特别适合顺序读取较多的业务, 因为单块读取的数据更多. 如果业务类型是随机访问, 系统性能则依赖于访问数据块的大小和分配的条带大小的值, 比如数据库系统中, 单个记录是 16KB(比如 MySQL 一个页的大小默认是 16KB), 条带大小是也是 16 KB 的情况下, raid 控制器就能很好的提高系统的性能.
Dell 主机 raid 信息查看
dell perc raid 型号详细信息参见: dell-raid-controllers
通过上述链接的列表来看, 在实际使用中, 我们更关注 interface support, cache memory size , write back cache 和 raid level 四列信息, 当然在实际采购 raid 卡的时候越高性能的 raid 卡对应价格肯定也越高, 不过对于大多数应用服务器而言, 比如数据库服务, 我们可能更关注以下信息:
interface support: 接口读取数据的速度是否够快, 业务服务器的 sas 盘使用可能更多;
cache memory size: raid 卡是否支持缓存, 缓存有多大;
write back cache: raid 卡是否支持 write back 模式的写策略;
raid level: raid 卡支持的级别, 即通常我们讨论的 raid 级别;
raid level 级别中, 大多数的 raid 卡都支持通用的 raid 级别, interface 的速度差别都不大. 所以如果要采购 raid 卡的话, 该 raid 型号至少要支持缓存以及支持 write back 写策略, 缓存多大按预算的价格决定.
通用参数介绍
适配器参数-aN
N代表适配器的ID,其从0开始计数,若要指定所有的适配器,使用ALL即可。在修改Raid配置时,最好指定ID。查看适配器个数可以使用命令MegaCli -PDList -aALL|grep Adapter。
物理设备参数-PhysDrv [E:S]
当需要操作一个或多个物理设备时,需使用-PhysDrv [E:S]这个参数,其中E表示enclosure device ID,S表示 slot number(从0开始计数)。
逻辑设备参数-Lx
-Lx用来指定逻辑设备参数。x代表逻辑设备ID,从0开始计数,若要指定所有的逻辑设备,使用ALL。
用MegaCli操作阵列,最重要是就是这三个系数:
Adapter #0
Enclosure Device ID: 32
Slot Number: 0
分别代表了 -PhysDrv[E0:S0,E1:S1,...] -aN #物理磁盘的enclosure号:slot号 -a是阵列卡号
Adapter parameter -aN
The parameter -aN (where N is a number starting with zero or the string ALL) specifies the adapter ID. If you have only one controller it’s safe to use ALL instead of a specific ID, but you’re encouraged to use the ID for everything that makes changes to your RAID configuration.
Physical drive parameter -PhysDrv [E:S]
For commands that operate on one or more pysical drives, the -PhysDrv [E:S] parameter is used, where E is the enclosure device ID in which the drive resides and S the slot number (starting with zero). You can get the enclosure device ID using MegaCli -EncInfo -aALL. The E:S syntax is also used for specifying the physical drives when creating a new RAID virtual drive (see 5).
Virtual drive parameter -Lx
The parameter -Lx is used for specifying the virtual drive (where x is a number starting with zero or the string all).
得到Raid中的Enclosure Device ID和Slot Number
# MegaCli64 -PDList -aALL | egrep 'Enclosure Device ID|Slot Number'
查raid级别
# MegaCli64 -LDInfo -Lall -aALL
安装MegaCli
增加如下源:
##add monitor dell perc 6/i raidcontroller's source
deb http://hwraid.le-vert.net/debian lenny main
root@:~# apt-get update
root@:~# apt-get install megacli
或通过官方提供的二进制包进行安装,默认安装在/opt/MegaRAID/MegaCli目录,对行的执行文件是:
32位: /opt/MegaRAID/MegaCli/MegaCli
64位: MegaCli
查看SAS 6/iR卡的信息
因为megacli不支持SAS 6/iR卡,使用一款叫做lsiutil的绿色免安装工具来查看SAS 6/iR卡的信息。
官网下载地址:ftp://ftp.lsil.com/HostAdapterDrivers/linux/lsiutil/lsiutil.tar.gz
获取基本信息
Controller
MegaCli -AdpAllInfo -aALL
Enclosure
MegaCli -EncInfo -aALL
Physical drive
MegaCli -PDList -aALL
MegaCli -PDInfo -PhysDrv [E:S] -aALL
Virtual drive
MegaCli -LDInfo -Lall -aALL
Battery backup
MegaCli -AdpBbuCmd -aALL
关于MegaCli中raid级别查看
# MegaCli64 -ldinfo -lall -a0
# MegaCli64 -LDInfo -Lall -aALL
Adapter 0 -- Virtual Drive Information:
Virtual Disk: 0
Name:
RAID Level: Primary-0, Secondary-0, RAID Level Qualifier-0
Number Of Drives:1
Span Depth:1
Number Of Drives per span:4 //表示每4个物理盘做成一个RAID1盘组
Span Depth : 2 //表示共2个RAID1盘组做成了RAID10
Number Of Drives per span:2 <<<< RAID组包含2块磁盘(但实际是4块500G的SSD做Raid10)。
Span Depth : 2 <<<< 深度若是1,说明实际只是RAID 1。2表示可以是RAID 10
RAID型号对应表信息如下:
RAID Level: Primary-1, Secondary-0, RAID Level Qualifier-0" #代表Raid 1
RAID Level: Primary-0, Secondary-0, RAID Level Qualifier-0" #代表Raid 0
RAID Level: Primary-5, Secondary-0, RAID Level Qualifier-3" #代表Raid 5
RAID Level: Primary-1, Secondary-3, RAID Level Qualifier-0" #代表Raid10
相关命令及其解析
查看机器型号
# dmidecode | grep "Product"
查看厂商
# dmidecode| grep "Manufacturer"
查看序列号
# dmidecode | grep "Serial Number"
查看CPU信息
# dmidecode | grep "CPU"
查看出厂日期
# dmidecode | grep "Date"
查看充电状态
# MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep "Charger Status"
显示BBU状态信息
# MegaCli -AdpBbuCmd -GetBbuStatus –aALL
显示BBU容量信息
# MegaCli -AdpBbuCmd -GetBbuCapacityInfo –aALL
显示BBU设计参数
# MegaCli -AdpBbuCmd -GetBbuDesignInfo –aALL
显示当前BBU属性
# MegaCli -AdpBbuCmd -GetBbuProperties –aALL
查看充电进度百分比
# MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep "Relative State of Charge"
查询Raid阵列数
# MegaCli -cfgdsply -aALL |grep "Number of DISK GROUPS:"
显示Raid卡型号,Raid设置,Disk相关信息
# MegaCli -cfgdsply –aALL
显示所有物理信息
# MegaCli -PDList -aALL
显示所有逻辑磁盘组信息
# MegaCli -LDInfo -LALL –aAll
查看物理磁盘重建进度(重要)
# MegaCli -PDRbld -ShowProg -PhysDrv [1:5] -a0
查看适配器个数
#MegaCli –adpCount
查看适配器时间
#MegaCli -AdpGetTime –aALL
显示所有适配器信息
#MegaCli -AdpAllInfo –aAll
查看Cache 策略设置
# MegaCli -cfgdsply -aALL |grep Polic
查raid级别
# MegaCli64 -LDInfo -Lall -aALL
查raid卡信息
# MegaCli64 -AdpAllInfo -aALL
显示适配器个数
# MegaCli64 -adpCount
显示适配器时间
# MegaCli64 -AdpGetTime
显示Raid卡型号,Raid设置,Disk相关信息
# MegaCli64 -cfgdsply -aALL
查看温度
# MegaCli64 -adpallinfo -aall|grep -i temp
磁盘管理
物理磁盘管理
设置状态为offline
MegaCli -PDOffline -PhysDrv [E:S] -aN
设置状态为online
MegaCli -PDOnline -PhysDrv [E:S] -aN
标记为missing状态
MegaCli -PDMarkMissing -PhysDrv [E:S] -aN
替换missing状态的设备
MegaCli -PdReplaceMissing -PhysDrv [E:S] -ArrayN -rowN -aN
说明:Array后面的N可通过MegaCli -CfgDsply -aALL返回信息的Span Reference字段获取,row后的N表示当前Array(由Span Reference判断)其是第几块物理磁盘(从0开始计数,注意不是Slot Number)。
rebuild 设置,此时设备的状态应为”Firmware state: Rebuild”
start rebuild:MegaCli -PDRbld -Start -PhysDrv [E:S] -aN
stop rebuild: MegaCli -PDRbld -Stop -PhysDrv [E:S] -aN
show : MegaCli -PDRbld -ShowProg -PhysDrv [E:S] -aN 和 MegaCli -PDRbld -ProgDsply -physdrv [E:S] -aN
Unconfigured(bad) 转变为 Unconfigured(good)
MegaCli -PDMakeGood -PhysDrv[E:S] -aN
MegaCli -PDList -aALL 检查物理磁盘状况
首先可以看磁盘是否在线:Firmware state,若为Failed或Unconfigured(bad)则说明磁盘出现问题。若Firmware state为Online,则看磁盘是否有损坏,Media Error Count不为0则代表扇区有问题,存在坏道等,其值越大危险系数越高。Other Error Count不为0则表示磁盘可以没插紧,需要重新插入。查看问题磁盘的槽位号(注:告警描述中的硬盘槽位号(a-l)与Slot Number的(0-11)一一对应。只需要记住,里面的编号与C语言类似,都是从0开始编号。
逻辑磁盘管理
创建Raid 0,1,5 …
MegaCli -CfgLdAdd -r(0|1|5) [E:S, E:S, ...] -aN
创建Raid10
MegaCli -CfgSpanAdd -r10 -Array0[E:S,E:S] -Array1[E:S,E:S] -aN
移除Raid
MegaCli -CfgLdDel -Lx -aN
Hot Spare(热备) 管理
设置全局Hot Spare
MegaCli -PDHSP -Set -PhysDrv [E:S] -aN
移除全局Hot Spare
MegaCli -PDHSP -Rmv -PhysDrv [E:S] -aN
磁盘重新插拔后,如何让它再入阵列
执行状态检测命令:
MegaCli -pdlist -aall |grep 'Firmware state'
Firmware state: Unconfigured(good), Spun Up
执行导入命令
MegaCli -CfgForeign -Import -aall
Foreign configuration is imported on controller 0.
再次执行状态检测命令:
MegaCli -pdlist -aall |grep 'Firmware state'
Firmware state: Rebuild
查询 Rebuild 进度:
MegaCli -pdrbld -showprog -physdrv[32:1] -a0
显示如下:
Rebuild Progress on Device at Enclosure 32, Slot 1 Completed 17% in 10 Minutes.
或者
MegaCli -pdrbld -ProgDsply -physdrv[32:0] -a0
显示如下:
Rebuild progress of physical drives...
Enclosure:Slot Percent Complete Time Elps
032 :00 ####################***40 %*********************** 00:56:40
Press <ESC> key to quit...
备注:
Enclosure Device ID: 32
Slot Number: 0
更换磁盘
更换磁盘后,需要再配置下才能让磁盘状态正确。对于新的磁盘,插入后状态即为Firmware state: Unconfigured(good);而对于拔出再插入的磁盘,其状态可能为:
Firmware state: Unconfigured(bad)
Foreign State: Foreign
1、Foreign状态的磁盘恢复
Foreign状态表示该磁盘已有Raid信息,对于这样的磁盘,还需要如下操作才能让其看起来如新磁盘一样。
1)将Firmware状态修改为Unconfigured(bad)
输入命令:MegaCli -PDMakeGood -PhysDrv [E:S] -aALL。此时PdInfo信息变为:
Firmware state: Unconfigured(good)
2)清除Foreign状态
通过命令MegaCli -CfgForeign -Scan -aALL可查看Foreign相关的信息,然后可以清除状态为Foreign的磁盘上已有的Raid信息,使用命令MegaCli -CfgForeign -Clear -aALL。此时PdInfo信息变为:
Foreign State: None
此时该盘如同新磁盘一样。接下来恢复数据过程同非Foreign状态的磁盘一样。对于做过Raid1/10/01/5等的阵列来说,将该盘的状态设为HotSpare后控制器会自动rebuild数据。但对于只做Raid0的磁盘来说,直接做Raid0并设置读写策略即可。
2、非Foreign状态的磁盘恢复
针对不同Raid恢复方法不同,如下
1)Raid1/10/01
将磁盘设置为Hot Spare 状态
输入命令MegaCli -PDHSP -Set -PhysDrv [E:S] -aALL,此时磁盘状态为热备状态,控制器会自动rebuild数据。
查看rebuild进度
MegaCli -PDRbld -ShowProg -PhysDrv [E:S] -aALL
当然,对于部分厂商的机器,不会自动恢复,还需手动恢复,此时将热备状态去掉(MegaCli -PDHSP -Rmv -PhysDrv [E:S] -aN)。查找哪个Slow Number是丢失的(应是状态为Unconfigurated(good)的磁盘)。根据Span Reference将其加到对应array中。此处Slot Number为1的磁盘丢失,在该数组中,其偏移为1。
将磁盘加到对应Raid的array中
MegaCli -PdReplaceMissing -PhysDrv [32:1] -array1 -row1 -a0
上述命令中,S为1,array组为1,array内部偏移为1(row)
开始rebuild
MegaCli -PDRbld -Start -PhysDrv [32:1] -a0
2)Raid0磁盘
对于只做了Raid0的机器而言,只需新加磁盘重做Raid0即可。
需要先清理数据,先查看哪些磁盘有cache数据:MegaCli -GetPreservedCacheList -aALL,然后清理之:MegaCli -DiscardPreservedCache -Lx -aALL。(此处x为有cachel磁盘的target id)。而如果MegaCli -DiscardPreservedCache -Lx -aALL报Segmentation fault错误的话,需重启机器进Raid管理界面清除该盘的cache即可。
带热备盘的阵列中替换即将损坏的硬盘
下面是R720的机器上第4块硬盘发现亮黄灯,即将损坏前将它替换下来,第8块盘为热备盘。
用换下来的盘替换了第四块
[root@nameNode ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL|grep Firmware
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Unconfigured(good), Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Rebuild
由于其上做过热备,所以会像上面的阵列信息。
[root@nameNode ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -a0
Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name :
RAID Level : Primary-5, Secondary-0, RAID Level Qualifier-3
Size : 3.271 TB
State : Degraded
Strip Size : 64 KB
Number Of Drives : 7
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
Access Policy : Read/Write
Disk Cache Policy : Disk's Default
Encryption Type : None
Default Power Savings Policy: Controller Defined
Current Power Savings Policy:
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
当重建完成后,就会开始回写
[root@nameNode ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL|grep Firmware
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Copyback
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
回写完成后,会变成原来
[root@nameNode ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL|grep Firmware
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Hotspare, Spun Up
3、硬盘更换后阵列卡中有缓存信息不能入阵的问题
Hdfs服务器换一块坏了的raid0硬盘,该盘位于机器的机身编号为3号盘位的位置(0,1号盘做一个安装系统的raid1,后面的6块硬盘做成了单盘的6个raid0)。
Enclosure Device ID: 32
Slot Number: 3
Enclosure position: 0
Device Id: 3
...
PD Type: SAS
Raw Size: 3.638 TB [0x1d1c0beb0 Sectors]
Non Coerced Size: 3.637 TB [0x1d1b0beb0 Sectors]
Coerced Size: 3.637 TB [0x1d1b00000 Sectors]
Firmware state: Unconfigured(good), Spun Up
现想办法让其正常归位。
[root@freeoa MegaCli]# ./MegaCli64 -CfgLdAdd -r0 [32:3] -a0
Adapter 0: Configure Adapter Failed
FW error description:
The current operation is not allowed because the controller has data in cache for offline or missing virtual drives.
Exit Code: 0x54
这样也行:
[root@freeoa MegaCli]# ./MegaCli64 -CfgLdAdd -r0 [32:3] WB Direct -a0
Adapter 0: Configure Adapter Failed
FW error description:
The current operation is not allowed because the controller has data in cache for offline or missing virtual drives.
Exit Code: 0x54
看来要将该盘在raid卡中的缓存信息清除,先查看一下保留的缓存列表。
[root@freeoa MegaCli]# ./MegaCli64 -GetPreservedCacheList -a0
Adapter #0
Virtual Drive(Target ID 02): Missing.
Exit Code: 0x00
开始清除(实为丢弃):
[root@freeoa MegaCli]# ./MegaCli64 -DiscardPreservedCache -L2 -a0
Adapter #0
Virtual Drive(Target ID 02): Preserved Cache Data Cleared.
Exit Code: 0x00
现在开始创建这块单盘的raid0
[root@freeoa MegaCli]# ./MegaCli64 -CfgLdAdd -r0 [32:3] -a0
Adapter 0: Created VD 2
Adapter 0: Configured the Adapter!!
Exit Code: 0x00
完成,在进行格式化后加入使用吧。
4、使用megacli定位硬盘的位置
让指定位置的盘闪烁的功能,用这种方式来帮助运维人员定位磁盘位置:
MegaCli -PdLocate -start -physdrv [E:S] -aALL
其中 E表示 Enclosure Device ID,S表示Slot Number。对于我们的例子,坏盘的位置信息如下:
Enclosure Device ID: 1
Slot Number: 0
可执行如下指令让其闪烁:
/opt/MegaRAID/MegaCli# ./MegaCli64 -PdLocate -start -physdrv[1:0] -a0
Adapter: 0: Device at EnclId-1 SlotId-0 -- PD Locate Start Command was successfully sent to Firmware
Exit Code: 0x00
这样就定快速定位到损坏的盘的位置了,在更换完盘之后,关闭闪烁的命令如下:
MegaCli -PdLocate -stop -physdrv [E:S] -aALL
5、查看重建的进度
很多RAID卡换盘之后,不需要做什么配置,但是RAID1也好,RAID5也好,新盘进来之后会rebuild,从拔盘到插入新盘,变化遵循如下轨迹:
Device
Normal ->Damage ->Rebuild ->Normal
Virtual Drive
Optimal ->Degraded ->Degraded ->Optimal
Physical Drive
Online ->Failed Unconfigured ->Rebuild ->Online
换盘之后,VD处于Degraded状态:
MegaCli64 -LDInfo -Lall -Aall
State: Degraded
更换磁盘以后,PD处于Rebuild状态:
Firmware state: Rebuild
可以通过如下指令查看rebuild的进度:
MegaCli64 -PDRbld -showprog -physDrv [1:0] -a0
输出如下:
Rebuild Progress on Device at Enclosure 1, Slot 0 Completed 19% in 10 Minutes.
Exit Code: 0x00
硬盘方面:
1、查看所有物理磁盘信息
MegaCli -PDList -aALL
2、查看磁盘缓存策略
MegaCli -LDGetProp -Cache -L0 -a0
MegaCli -cfgdsply -aALL |grep Polic
Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct
or
MegaCli -LDGetProp -Cache -L1 -a0
Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct
or
MegaCli -LDGetProp -Cache -LALL -a0
Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct
Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct
or
MegaCli -LDGetProp -Cache -LALL -aALL
Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct
Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct
or
MegaCli -LDGetProp -DskCache -LALL -aALL
Adapter 0-VD 0: Disk Write Cache : Disk's Default
Adapter 0-VD 1: Disk Write Cache : Disk's Default
3、设置磁盘缓存策略
缓存策略解释:
WT (Write through
WB (Write back)
NORA (No read ahead)
RA (Read ahead)
ADRA (Adaptive read ahead)
Cached
Direct
-RW|RO|Blocked|RemoveBlocked | WT|WB|ForcedWB [-Immediate] |RA|NORA | DsblP | Cached|Direct | -EnDskCache|DisDskCache | CachedBadBBU|NoCachedBadBBU
-Lx|-L0,1,2|-Lall -aN|-a0,1,2|-aALL
设定直接回写
megacli -LDSetProp WT -L0 -a0
Set Write Policy to WriteThrough on Adapter 0, VD 0 (target id: 0) success
关闭缓存
MegaCli -LDSetProp -DisDskCache -L0 -a0
Set Disk Cache Policy to Disabled on Adapter 0, VD 0 (target id: 0) success
例子:
MegaCli -LDSetProp WT|WB|NORA|RA|ADRA -L0 -a0
or
MegaCli -LDSetProp -Cached|-Direct -L0 -a0
or
enable / disable disk cache
MegaCli -LDSetProp -EnDskCache|-DisDskCache -L0 -a0
4、创建/删除阵列
4.1 创建一个 raid5 阵列,由物理盘 2,3,4 构成,该阵列的热备盘是物理盘 5
MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] –a0
4.2 创建阵列,不指定热备
MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct –a0
4.3 删除阵列
MegaCli -CfgLdDel -L1 –a0
4.4 在线添加磁盘
MegaCli -LDRecon -Start -r5 -Add -PhysDrv[1:4] -L1 -a0
意思是,重建逻辑磁盘组1,raid级别是5,添加物理磁盘号:1:4。重建完后,新添加的物理磁盘会自动处于重建(同步)状态,有些情况下只有在系统重启后才能看见大小变化。
5、查看阵列初始化信息
5.1 阵列创建完后,会有一个初始化同步块的过程,可以看看其进度。
MegaCli -LDInit -ShowProg -LALL -aALL
或者以动态可视化文字界面显示
MegaCli -LDInit -ProgDsply -LALL –aALL
5.2 查看阵列后台初始化进度
MegaCli -LDBI -ShowProg -LALL -aALL
或者以动态可视化文字界面显示
MegaCli -LDBI -ProgDsply -LALL -aALL
6、创建全局热备
指定第 5 块盘作为全局热备
MegaCli -PDHSP -Set [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0
也可以指定为某个阵列的专用热备
MegaCli -PDHSP -Set [-Dedicated [-Array1]] [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0
7、删除全局热备
MegaCli -PDHSP -Rmv -PhysDrv[1:5] -a0
8、将某块物理盘下线/上线
MegaCli -PDOffline -PhysDrv [1:4] -a0
MegaCli -PDOnline -PhysDrv [1:4] -a0
9、查看物理磁盘重建进度
MegaCli -PDRbld -ShowProg -PhysDrv [1:5] -a0
-------------------------------
更多常见的维护指令
查看故障硬盘,如果有热备会有hotspace
MegaCli64 -PDList -aAll |grep Firmware
检测硬盘坏掉的磁盘数
MegaCli64 -AdpAllInfo -aALL |grep "Failed Disks"
手工执行充电
MegaCli64 -AdpBbuCmd -BbuLearn -aall
查看raid卡日志
MegaCli64 -fwtermlog dsply -aall
查看硬盘信息
通过上述命令,我们可以查看到很多关于硬盘的信息
MegaCli64 -LDinfo -Lall -aALL
查看RAID信息(看做的是什么RAID)
通过这个命令,我们可以看出很多东西,例如做的什么raid,有几个分区,块大小为多少以及用了几块硬盘,一目了然
MegaCli64 -ShowSummary -aALL
查看RAID卡信息(看RAID卡是什么型号的)
这条命令除了可以看出raid卡型号,也还可以看到有几块硬盘,每块硬盘的大小等,是一条十分全面的命令,有三部分:
第一部分:raid卡信息
第二部分:硬盘信息
第三部分:做的什么raid,有几个分区
将某块物理盘下线/上线
megacli -PDOffline -PhysDrv [1:4] -a0
megacli -PDOnline -PhysDrv [1:4] -a0
这两条命令是使物理磁盘联机/脱机,[]中的1和4分别指的是设备id和所在槽位
查看时候有掉盘的硬盘
megacli -PDlist -aALL | grep "Foreign State“
通过这条命令可查看硬盘对应位置
megacli -PDlist -aALL | grep "Slot”
把第一块raid卡上Drivce ID为1,位置(slot)为2的物理硬盘状态改为unconfigrue good
megacli -PDMakeGood -PhysDrv[1:2] -a0
扫描第一个raid卡上的硬盘是否有掉盘的硬盘
megacli -CfgForeign -Scan -a0
清除第一块raid卡上的foreign信息
megacli -CfgForeign -Clear [a0]
给第一块raid卡上的Drivce ID为1,位置(slot)为2做raid0
megacli -CfgLdAdd -r0 [1:2] WT Direct -a0
给第一块raid卡上的Drivce ID为1,位置(slot)为2和Drivce ID为1,位置(slot)为3做一个raid1
megacli -CfgLdAdd -r1 [1:2,1:3] WT Direct -a0
查看掉线的物理硬盘信息
megacli -Pdgetmissing -a0
替代掉线硬盘
megacli -PdReplaceMissing -physdrv [1:2] -array4, -row0 -a0
打开硬盘缓存
megacli -LDSetProp -EnDskCache -Lall -aall
关闭硬盘缓存
megacli -LDSetProp -DisDskCache -Lall -aall
在第一块raid卡上给Drivce ID为1,位置(slot)为1,2,3槽位的硬盘制作raid5,并且为4槽位的硬盘做热备盘
megacli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] -a0
在第一块raid卡上给Drivce ID为1,位置(slot)为1,2,3槽位的硬盘制作raid5(无热备)
megacli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -a0
删除第一个raid卡中id为1位置为4的热备盘
megacli -PDHSP -Rmv -PhysDrv[1:5] -a0
在第一块raid卡上删除第二个虚拟硬盘
megacli -CfgLdDel -L1 -a0
在第一块raid卡上的第二个虚拟硬盘上(此虚拟硬盘为raid5)多添加一个Drivce ID为1,位置(slot)为2的物理硬盘
megacli -LDRecon -Start -r5 -Add -PhysDrv[1:2] -L1 -a0
创建一个 raid5 阵列,由物理盘 2,3,4 构成,该阵列的热备盘是物理盘 5
#MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] -a0
创建阵列,不指定热备
#MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -a0
删除阵列
#MegaCli -CfgLdDel -L1 -a0
在线添加磁盘
#MegaCli -LDRecon -Start -r5 -Add -PhysDrv[1:4] -L1 -a0
阵列创建完后,会有一个初始化同步块的过程,可以看看其进度。
#MegaCli -LDInit -ShowProg -LALL -aALL
或者以动态可视化文字界面显示
#MegaCli -LDInit -ProgDsply -LALL -aALL
查看阵列后台初始化进度
#MegaCli -LDBI -ShowProg -LALL -aALL
或者以动态可视化文字界面显示
#MegaCli -LDBI -ProgDsply -LALL -aALL
指定第 5 块盘作为全局热备
#MegaCli -PDHSP -Set [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0
指定为某个阵列的专用热备
#MegaCli -PDHSP -Set [-Dedicated [-Array1]] [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0
删除全局热备
#MegaCli -PDHSP -Rmv -PhysDrv[1:5] -a0
查看E S
MegaCli -PDList -aAll -NoLog | grep -Ei "(enclosure|slot)"
查看所有硬盘的状态
MegaCli -PDList -aAll -NoLog
查看所有Virtual Disk的状态
MegaCli -LdPdInfo -aAll -NoLog
在线做Raid
MegaCli -CfgLdAdd -r0[0:11] WB NORA Direct CachedBadBBU -strpsz64 -a0 -NoLog
MegaCli -CfgLdAdd -r5 [12:2,12:3,12:4,12:5,12:6,12:7] WB Direct -a0
点亮指定硬盘(定位)
MegaCli -PdLocate -start -physdrv[252:2] -a0
清除Foreign状态
MegaCli -CfgForeign -Clear -a0
查看RAID阵列中掉线的盘
MegaCli -pdgetmissing -a0
替换坏掉的模块
MegaCli -pdreplacemissing -physdrv[12:10] -Array5 -row0 -a0
手动开启rebuid
MegaCli -pdrbld -start -physdrv[12:10] -a0
查看Megacli的log
MegaCli -FwTermLog dsply -a0 > adp2.log
设置HotSpare
MegaCli-pdhsp -set[-Dedicated[-Array2]][-EnclAffinity][-nonRevertible]-PhysDrv[4:11]-a0
MegaCli-pdhsp -set[-EnclAffinity][-nonRevertible]-PhysDrv[32:1}]-a0
MegaCli -PDHSP -Set -Dedicated -Array0 -physdrv[E:S] -a0 添加局部热备盘,其中array0表示第0个raid
MegaCli -pdhsp -set -physdrv[E:S] -a0 添加全局热备盘
MegaCli -pdhsp -rmv -physdrv[E:S] -a0 移除全局和热备局部热备
关闭Rebuild
MegaCli -AdpAutoRbld -Dsbl -a0
设置rebuild的速率
MegaCli -AdpSetProp RebuildRate -30 -a0
查看所有物理硬盘状态
MegaCli -PDList -a0
# MegaCli help |grep -i pdinfo
MegaCli -pdInfo -PhysDrv[E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL
MegaCli -LdPdInfo -aN|-a0,1,2|-aALL
查看逻辑盘详细信息
# MegaCli -LdPdInfo-aALL
查看单个盘的详细信息
# MegaCli -pdInfo -PhysDrv[32:3] -aALL
Adapter 0: Device at Enclosure - 32, Slot - 3 is notfound.
MegaCli操作1---创建与删除raid0
这里我的硬盘被标记为“Foreign”外来配置,要清除一下,不然会报下面这个错误:
The specified physical disk does not have the appropriateattributes to complete
the requested command.
Exit Code: 0x26
扫描外来配置的个数:
# MegaCli -cfgforeign -scan -a0
There are 1 foreign configuration(s) on controller 0.
清除外来配置:
# MegaCli -cfgforeign -clear -a0
Foreign configuration 0 is cleared on controller 0.
Exit Code: 0x00
再次扫描外来配置的个数:
# MegaCli -cfgforeign -scan-a0
There is no foreign configuration on controller 0.
Exit Code: 0x00
创建Raid0
# MegaCli -CfgLdAdd -r0[32:2] WBDirect -a0
Adapter 0: Created VD 2
Adapter 0: Configured the Adapter!!
删除阵列:
# MegaCli -cfgclr -a0 清除所有的raid组的配置
# MegaCli -cfglddel -L0 -a0 删除指定的raid组(Target Id:0)的raid组,可以通过上面的“查看逻辑盘详细信息”得到。
查看硬盘的重建情况:
# MegaCli -PDRbld -ProgDsply -PhysDrv[12:7] -aALL
Device(Encl-12 Slot-7) is not in rebuild process
-------------------------------
不常见的操作问题
如果软硬件都是正常安装,但在执行MegaCli64指令时无法正常输出哪怕是最基本的信息,就要考虑是否为操作系统环境问题了,可在指令运行前指定:
root@hst:~# setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL | egrep 'Enclosure Device ID|Slot Number'
Enclosure Device ID: N/A
Slot Number: 0
Enclosure Device ID: N/A
Slot Number: 1
Enclosure Device ID: N/A
Slot Number: 2
Enclosure Device ID: N/A
Slot Number: 3
同上,在指令的输出时未能给出Enclosure Device ID,可在访问其上的信息时将对应的编号留空,如下:
root@hst:~# setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ShowProg -PhysDrv [:3] -aALL
Rebuild Progress on Device at Enclosure N/A, Slot 3 Completed 20% in 97 Minutes.
Exit Code: 0x00
参考链接
MegaCli命令总结
Hardware Raid Setup using MegaCli
MegaCli Common Commands and Procedures
MegaRaid References
LSI MegaRAID SAS
LSI MegaRAID - megacli
megacli-8.00.46-2
Raid 控制器不同策略对系统的影响
本文我们主要以 dell perc 系列的 raid 控制器介绍不同策略对系统性能以及数据一致性的影响,主要通过以下几方面介绍不同策略对系统性能的影响:
raid write policy
disk cache
read ahead policy
I/O policy
strip size
raid write policy (写策略)对性能的影响
raid 控制器中不同的写策略在写的性能上也有很大的差别, 目前主要有两种可用的模式 — WB(write back) 和 WT(write through)
write back
在该模式下, raid 控制器在数据加载到控制器的缓存后就会立即给 I/O 请求返回确认信息, 应用程序可以继续工作而不用等待数据被写到物理磁盘上. write back 模式在大多数情况下都能够提供更好的写性能. 当然写性能提高的情况下也会有不好的方面, 如果在该模式下突然断电, raid 缓存中的数据可能就有丢失的风险, 一般运营商机房中的 UPS(备用电源) 则能缓解数据丢失的风险, 基于这个原因重要业务的服务器都应该放在有 UPS 系统的机房中.
raid 卡的 BBU(backup battery status) 特性则提供了另一种保护措施, 在主机异常断电的情况下, 即便没有 UPS, 只要 BBU 电池及电量没有异常, raid 卡里缓存的数据也不会立即丢失. 另外 BBU 在以下情况下会使得 write back 模式切换到 write through 模式:
1. 没有充满电
2. 正在自动校准(auto learn)
raid 卡默认情况下会启用自动校准模式以记录 BBU 电池的放电曲线, 以便控制器了解电池的状态, 这个过程可能需要12小时左右, 期间会禁用 write back 模式来保证数据的完整性, 这也会造成系统性能的降低. 校准(learn cycle) 分为以下步骤:
1. 控制器给 BBU 电池充满电
2. 开始校准, 对 BBU 电池进行放电
3. 放电完成后, 完成校准, 并重新充电, 充到电池的最大电量.
如果第二或第三阶段被中断,重新校准的任务会停止,而不会重新执行,DELL机器默认 90 天校准一次。
write through
在该模式下, 不会使用 raid 控制器的缓存来加速写IO请求. 大多数情况下该模式都慢于 write back 模式, 因为应用程序需要等待数据被写到物理磁盘上. 不过该模式在 raid 级别为 raid 0 或 raid 10 的时候, 如果是顺序写则能提供最高的写带宽(write bandwidth).
disk cache
磁盘缓存策略决定了硬盘的写缓存是否开启. raid控制器设置为 write thru 模式的时候,磁盘缓存策略对系统的写性能影响很大,想想磁盘没有缓存的时候,每个写操作都要等待数据写到物理磁盘中, 如果是较多的随机写性能肯定会很差; 相反如果 raid 控制器为 write back 模式, 磁盘缓存是否开启对系统的写性能影响很小, 大多场景下都可以忽略影响.
另外磁盘缓存开启的时候, 如果突然断也会存在丢失数据的风险. 从这个角度看, UPS 备用电源真是至关重要, 重要数据的主机应该放到有 UPS 支持的机房中. raid 卡的 BBU 特性则不能保护磁盘缓存的数据.
read ahead policy
read ahead 策略决定 raid 控制器读取数据的时候是只读取一个块(block)的数据还是整个条带(strip)的数据, 该设置对 raid 卡读的性能影响很大.
No Read Ahead
在应用发出请求后 raid 控制器仅读取一个块的数据, 在业务随机读取较多的场景下可以选用该策略.
Always Read Ahead
应用发出请求后 raid 控制器会读取整个条带的数据放到 raid cache 中, 每个 read 操作会消耗较多的资源. 在这种模式下, 对主要是顺序读取的业务会有很好的性能提升.
Adaptive Read Ahead
该策略下由 RAID 控制器根据读请求的类型自行调整是否预取. 该模式结合了上述两种策略的有点. 所以如果不清楚读取的类型或者业务存在顺序读取和随机读取的请求, 则推荐使用自适应模式.
I/O Policy
RAID 控制器的 I/O 策略决定了是否保留 raid cache 中的数据, 如果应用的请求读的都是同一块数据, raid cache 则直接返回数据, 可以减少很多应用访问的时间. 目前该策略主要有两种方式:
Direct I/O
直接读取, 不使用 raid cache 功能. 大多数场景下可以使用该策略, 应为文件系统, 磁盘及应用等都有自己的缓存, 不太需要 raid cache 功能.
Cached I/O
在该种策略下, raid 控制器会把读和写请求先从 raid cache 中获取和更新. 如果有很多读操作都请求同一块数据, 则 raid cache 直接返回数据给读操作. 如果是写操作, 性能则根据 raid write policy 的不同而不同.
strip size
条带大小决定了数据怎么分布到硬盘中, 同样由于硬盘数量的原因, 条带大小也可能决定了一次 I/O 请求需要访问多少磁盘. 通常条带大小较大(512 KB 或 1MB )的话就特别适合顺序读取较多的业务, 因为单块读取的数据更多. 如果业务类型是随机访问, 系统性能则依赖于访问数据块的大小和分配的条带大小的值, 比如数据库系统中, 单个记录是 16KB(比如 MySQL 一个页的大小默认是 16KB), 条带大小是也是 16 KB 的情况下, raid 控制器就能很好的提高系统的性能.
Dell 主机 raid 信息查看
dell perc raid 型号详细信息参见: dell-raid-controllers
通过上述链接的列表来看, 在实际使用中, 我们更关注 interface support, cache memory size , write back cache 和 raid level 四列信息, 当然在实际采购 raid 卡的时候越高性能的 raid 卡对应价格肯定也越高, 不过对于大多数应用服务器而言, 比如数据库服务, 我们可能更关注以下信息:
interface support: 接口读取数据的速度是否够快, 业务服务器的 sas 盘使用可能更多;
cache memory size: raid 卡是否支持缓存, 缓存有多大;
write back cache: raid 卡是否支持 write back 模式的写策略;
raid level: raid 卡支持的级别, 即通常我们讨论的 raid 级别;
raid level 级别中, 大多数的 raid 卡都支持通用的 raid 级别, interface 的速度差别都不大. 所以如果要采购 raid 卡的话, 该 raid 型号至少要支持缓存以及支持 write back 写策略, 缓存多大按预算的价格决定.
通用参数介绍
适配器参数-aN
N代表适配器的ID,其从0开始计数,若要指定所有的适配器,使用ALL即可。在修改Raid配置时,最好指定ID。查看适配器个数可以使用命令MegaCli -PDList -aALL|grep Adapter。
物理设备参数-PhysDrv [E:S]
当需要操作一个或多个物理设备时,需使用-PhysDrv [E:S]这个参数,其中E表示enclosure device ID,S表示 slot number(从0开始计数)。
逻辑设备参数-Lx
-Lx用来指定逻辑设备参数。x代表逻辑设备ID,从0开始计数,若要指定所有的逻辑设备,使用ALL。
用MegaCli操作阵列,最重要是就是这三个系数:
Adapter #0
Enclosure Device ID: 32
Slot Number: 0
分别代表了 -PhysDrv[E0:S0,E1:S1,...] -aN #物理磁盘的enclosure号:slot号 -a是阵列卡号
Adapter parameter -aN
The parameter -aN (where N is a number starting with zero or the string ALL) specifies the adapter ID. If you have only one controller it’s safe to use ALL instead of a specific ID, but you’re encouraged to use the ID for everything that makes changes to your RAID configuration.
Physical drive parameter -PhysDrv [E:S]
For commands that operate on one or more pysical drives, the -PhysDrv [E:S] parameter is used, where E is the enclosure device ID in which the drive resides and S the slot number (starting with zero). You can get the enclosure device ID using MegaCli -EncInfo -aALL. The E:S syntax is also used for specifying the physical drives when creating a new RAID virtual drive (see 5).
Virtual drive parameter -Lx
The parameter -Lx is used for specifying the virtual drive (where x is a number starting with zero or the string all).
得到Raid中的Enclosure Device ID和Slot Number
# MegaCli64 -PDList -aALL | egrep 'Enclosure Device ID|Slot Number'
查raid级别
# MegaCli64 -LDInfo -Lall -aALL
安装MegaCli
增加如下源:
##add monitor dell perc 6/i raidcontroller's source
deb http://hwraid.le-vert.net/debian lenny main
root@:~# apt-get update
root@:~# apt-get install megacli
或通过官方提供的二进制包进行安装,默认安装在/opt/MegaRAID/MegaCli目录,对行的执行文件是:
32位: /opt/MegaRAID/MegaCli/MegaCli
64位: MegaCli
查看SAS 6/iR卡的信息
因为megacli不支持SAS 6/iR卡,使用一款叫做lsiutil的绿色免安装工具来查看SAS 6/iR卡的信息。
官网下载地址:ftp://ftp.lsil.com/HostAdapterDrivers/linux/lsiutil/lsiutil.tar.gz
获取基本信息
Controller
MegaCli -AdpAllInfo -aALL
Enclosure
MegaCli -EncInfo -aALL
Physical drive
MegaCli -PDList -aALL
MegaCli -PDInfo -PhysDrv [E:S] -aALL
Virtual drive
MegaCli -LDInfo -Lall -aALL
Battery backup
MegaCli -AdpBbuCmd -aALL
关于MegaCli中raid级别查看
# MegaCli64 -ldinfo -lall -a0
# MegaCli64 -LDInfo -Lall -aALL
Adapter 0 -- Virtual Drive Information:
Virtual Disk: 0
Name:
RAID Level: Primary-0, Secondary-0, RAID Level Qualifier-0
Number Of Drives:1
Span Depth:1
Number Of Drives per span:4 //表示每4个物理盘做成一个RAID1盘组
Span Depth : 2 //表示共2个RAID1盘组做成了RAID10
Number Of Drives per span:2 <<<< RAID组包含2块磁盘(但实际是4块500G的SSD做Raid10)。
Span Depth : 2 <<<< 深度若是1,说明实际只是RAID 1。2表示可以是RAID 10
RAID型号对应表信息如下:
RAID Level: Primary-1, Secondary-0, RAID Level Qualifier-0" #代表Raid 1
RAID Level: Primary-0, Secondary-0, RAID Level Qualifier-0" #代表Raid 0
RAID Level: Primary-5, Secondary-0, RAID Level Qualifier-3" #代表Raid 5
RAID Level: Primary-1, Secondary-3, RAID Level Qualifier-0" #代表Raid10
相关命令及其解析
查看机器型号
# dmidecode | grep "Product"
查看厂商
# dmidecode| grep "Manufacturer"
查看序列号
# dmidecode | grep "Serial Number"
查看CPU信息
# dmidecode | grep "CPU"
查看出厂日期
# dmidecode | grep "Date"
查看充电状态
# MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep "Charger Status"
显示BBU状态信息
# MegaCli -AdpBbuCmd -GetBbuStatus –aALL
显示BBU容量信息
# MegaCli -AdpBbuCmd -GetBbuCapacityInfo –aALL
显示BBU设计参数
# MegaCli -AdpBbuCmd -GetBbuDesignInfo –aALL
显示当前BBU属性
# MegaCli -AdpBbuCmd -GetBbuProperties –aALL
查看充电进度百分比
# MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep "Relative State of Charge"
查询Raid阵列数
# MegaCli -cfgdsply -aALL |grep "Number of DISK GROUPS:"
显示Raid卡型号,Raid设置,Disk相关信息
# MegaCli -cfgdsply –aALL
显示所有物理信息
# MegaCli -PDList -aALL
显示所有逻辑磁盘组信息
# MegaCli -LDInfo -LALL –aAll
查看物理磁盘重建进度(重要)
# MegaCli -PDRbld -ShowProg -PhysDrv [1:5] -a0
查看适配器个数
#MegaCli –adpCount
查看适配器时间
#MegaCli -AdpGetTime –aALL
显示所有适配器信息
#MegaCli -AdpAllInfo –aAll
查看Cache 策略设置
# MegaCli -cfgdsply -aALL |grep Polic
查raid级别
# MegaCli64 -LDInfo -Lall -aALL
查raid卡信息
# MegaCli64 -AdpAllInfo -aALL
显示适配器个数
# MegaCli64 -adpCount
显示适配器时间
# MegaCli64 -AdpGetTime
显示Raid卡型号,Raid设置,Disk相关信息
# MegaCli64 -cfgdsply -aALL
查看温度
# MegaCli64 -adpallinfo -aall|grep -i temp
磁盘管理
物理磁盘管理
设置状态为offline
MegaCli -PDOffline -PhysDrv [E:S] -aN
设置状态为online
MegaCli -PDOnline -PhysDrv [E:S] -aN
标记为missing状态
MegaCli -PDMarkMissing -PhysDrv [E:S] -aN
替换missing状态的设备
MegaCli -PdReplaceMissing -PhysDrv [E:S] -ArrayN -rowN -aN
说明:Array后面的N可通过MegaCli -CfgDsply -aALL返回信息的Span Reference字段获取,row后的N表示当前Array(由Span Reference判断)其是第几块物理磁盘(从0开始计数,注意不是Slot Number)。
rebuild 设置,此时设备的状态应为”Firmware state: Rebuild”
start rebuild:MegaCli -PDRbld -Start -PhysDrv [E:S] -aN
stop rebuild: MegaCli -PDRbld -Stop -PhysDrv [E:S] -aN
show : MegaCli -PDRbld -ShowProg -PhysDrv [E:S] -aN 和 MegaCli -PDRbld -ProgDsply -physdrv [E:S] -aN
Unconfigured(bad) 转变为 Unconfigured(good)
MegaCli -PDMakeGood -PhysDrv[E:S] -aN
MegaCli -PDList -aALL 检查物理磁盘状况
首先可以看磁盘是否在线:Firmware state,若为Failed或Unconfigured(bad)则说明磁盘出现问题。若Firmware state为Online,则看磁盘是否有损坏,Media Error Count不为0则代表扇区有问题,存在坏道等,其值越大危险系数越高。Other Error Count不为0则表示磁盘可以没插紧,需要重新插入。查看问题磁盘的槽位号(注:告警描述中的硬盘槽位号(a-l)与Slot Number的(0-11)一一对应。只需要记住,里面的编号与C语言类似,都是从0开始编号。
逻辑磁盘管理
创建Raid 0,1,5 …
MegaCli -CfgLdAdd -r(0|1|5) [E:S, E:S, ...] -aN
创建Raid10
MegaCli -CfgSpanAdd -r10 -Array0[E:S,E:S] -Array1[E:S,E:S] -aN
移除Raid
MegaCli -CfgLdDel -Lx -aN
Hot Spare(热备) 管理
设置全局Hot Spare
MegaCli -PDHSP -Set -PhysDrv [E:S] -aN
移除全局Hot Spare
MegaCli -PDHSP -Rmv -PhysDrv [E:S] -aN
磁盘重新插拔后,如何让它再入阵列
执行状态检测命令:
MegaCli -pdlist -aall |grep 'Firmware state'
Firmware state: Unconfigured(good), Spun Up
执行导入命令
MegaCli -CfgForeign -Import -aall
Foreign configuration is imported on controller 0.
再次执行状态检测命令:
MegaCli -pdlist -aall |grep 'Firmware state'
Firmware state: Rebuild
查询 Rebuild 进度:
MegaCli -pdrbld -showprog -physdrv[32:1] -a0
显示如下:
Rebuild Progress on Device at Enclosure 32, Slot 1 Completed 17% in 10 Minutes.
或者
MegaCli -pdrbld -ProgDsply -physdrv[32:0] -a0
显示如下:
Rebuild progress of physical drives...
Enclosure:Slot Percent Complete Time Elps
032 :00 ####################***40 %*********************** 00:56:40
Press <ESC> key to quit...
备注:
Enclosure Device ID: 32
Slot Number: 0
更换磁盘
更换磁盘后,需要再配置下才能让磁盘状态正确。对于新的磁盘,插入后状态即为Firmware state: Unconfigured(good);而对于拔出再插入的磁盘,其状态可能为:
Firmware state: Unconfigured(bad)
Foreign State: Foreign
1、Foreign状态的磁盘恢复
Foreign状态表示该磁盘已有Raid信息,对于这样的磁盘,还需要如下操作才能让其看起来如新磁盘一样。
1)将Firmware状态修改为Unconfigured(bad)
输入命令:MegaCli -PDMakeGood -PhysDrv [E:S] -aALL。此时PdInfo信息变为:
Firmware state: Unconfigured(good)
2)清除Foreign状态
通过命令MegaCli -CfgForeign -Scan -aALL可查看Foreign相关的信息,然后可以清除状态为Foreign的磁盘上已有的Raid信息,使用命令MegaCli -CfgForeign -Clear -aALL。此时PdInfo信息变为:
Foreign State: None
此时该盘如同新磁盘一样。接下来恢复数据过程同非Foreign状态的磁盘一样。对于做过Raid1/10/01/5等的阵列来说,将该盘的状态设为HotSpare后控制器会自动rebuild数据。但对于只做Raid0的磁盘来说,直接做Raid0并设置读写策略即可。
2、非Foreign状态的磁盘恢复
针对不同Raid恢复方法不同,如下
1)Raid1/10/01
将磁盘设置为Hot Spare 状态
输入命令MegaCli -PDHSP -Set -PhysDrv [E:S] -aALL,此时磁盘状态为热备状态,控制器会自动rebuild数据。
查看rebuild进度
MegaCli -PDRbld -ShowProg -PhysDrv [E:S] -aALL
当然,对于部分厂商的机器,不会自动恢复,还需手动恢复,此时将热备状态去掉(MegaCli -PDHSP -Rmv -PhysDrv [E:S] -aN)。查找哪个Slow Number是丢失的(应是状态为Unconfigurated(good)的磁盘)。根据Span Reference将其加到对应array中。此处Slot Number为1的磁盘丢失,在该数组中,其偏移为1。
将磁盘加到对应Raid的array中
MegaCli -PdReplaceMissing -PhysDrv [32:1] -array1 -row1 -a0
上述命令中,S为1,array组为1,array内部偏移为1(row)
开始rebuild
MegaCli -PDRbld -Start -PhysDrv [32:1] -a0
2)Raid0磁盘
对于只做了Raid0的机器而言,只需新加磁盘重做Raid0即可。
需要先清理数据,先查看哪些磁盘有cache数据:MegaCli -GetPreservedCacheList -aALL,然后清理之:MegaCli -DiscardPreservedCache -Lx -aALL。(此处x为有cachel磁盘的target id)。而如果MegaCli -DiscardPreservedCache -Lx -aALL报Segmentation fault错误的话,需重启机器进Raid管理界面清除该盘的cache即可。
带热备盘的阵列中替换即将损坏的硬盘
下面是R720的机器上第4块硬盘发现亮黄灯,即将损坏前将它替换下来,第8块盘为热备盘。
用换下来的盘替换了第四块
[root@nameNode ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL|grep Firmware
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Unconfigured(good), Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Rebuild
由于其上做过热备,所以会像上面的阵列信息。
[root@nameNode ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -a0
Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name :
RAID Level : Primary-5, Secondary-0, RAID Level Qualifier-3
Size : 3.271 TB
State : Degraded
Strip Size : 64 KB
Number Of Drives : 7
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
Access Policy : Read/Write
Disk Cache Policy : Disk's Default
Encryption Type : None
Default Power Savings Policy: Controller Defined
Current Power Savings Policy:
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
当重建完成后,就会开始回写
[root@nameNode ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL|grep Firmware
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Copyback
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
回写完成后,会变成原来
[root@nameNode ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL|grep Firmware
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Hotspare, Spun Up
3、硬盘更换后阵列卡中有缓存信息不能入阵的问题
Hdfs服务器换一块坏了的raid0硬盘,该盘位于机器的机身编号为3号盘位的位置(0,1号盘做一个安装系统的raid1,后面的6块硬盘做成了单盘的6个raid0)。
Enclosure Device ID: 32
Slot Number: 3
Enclosure position: 0
Device Id: 3
...
PD Type: SAS
Raw Size: 3.638 TB [0x1d1c0beb0 Sectors]
Non Coerced Size: 3.637 TB [0x1d1b0beb0 Sectors]
Coerced Size: 3.637 TB [0x1d1b00000 Sectors]
Firmware state: Unconfigured(good), Spun Up
现想办法让其正常归位。
[root@freeoa MegaCli]# ./MegaCli64 -CfgLdAdd -r0 [32:3] -a0
Adapter 0: Configure Adapter Failed
FW error description:
The current operation is not allowed because the controller has data in cache for offline or missing virtual drives.
Exit Code: 0x54
这样也行:
[root@freeoa MegaCli]# ./MegaCli64 -CfgLdAdd -r0 [32:3] WB Direct -a0
Adapter 0: Configure Adapter Failed
FW error description:
The current operation is not allowed because the controller has data in cache for offline or missing virtual drives.
Exit Code: 0x54
看来要将该盘在raid卡中的缓存信息清除,先查看一下保留的缓存列表。
[root@freeoa MegaCli]# ./MegaCli64 -GetPreservedCacheList -a0
Adapter #0
Virtual Drive(Target ID 02): Missing.
Exit Code: 0x00
开始清除(实为丢弃):
[root@freeoa MegaCli]# ./MegaCli64 -DiscardPreservedCache -L2 -a0
Adapter #0
Virtual Drive(Target ID 02): Preserved Cache Data Cleared.
Exit Code: 0x00
现在开始创建这块单盘的raid0
[root@freeoa MegaCli]# ./MegaCli64 -CfgLdAdd -r0 [32:3] -a0
Adapter 0: Created VD 2
Adapter 0: Configured the Adapter!!
Exit Code: 0x00
完成,在进行格式化后加入使用吧。
4、使用megacli定位硬盘的位置
让指定位置的盘闪烁的功能,用这种方式来帮助运维人员定位磁盘位置:
MegaCli -PdLocate -start -physdrv [E:S] -aALL
其中 E表示 Enclosure Device ID,S表示Slot Number。对于我们的例子,坏盘的位置信息如下:
Enclosure Device ID: 1
Slot Number: 0
可执行如下指令让其闪烁:
/opt/MegaRAID/MegaCli# ./MegaCli64 -PdLocate -start -physdrv[1:0] -a0
Adapter: 0: Device at EnclId-1 SlotId-0 -- PD Locate Start Command was successfully sent to Firmware
Exit Code: 0x00
这样就定快速定位到损坏的盘的位置了,在更换完盘之后,关闭闪烁的命令如下:
MegaCli -PdLocate -stop -physdrv [E:S] -aALL
5、查看重建的进度
很多RAID卡换盘之后,不需要做什么配置,但是RAID1也好,RAID5也好,新盘进来之后会rebuild,从拔盘到插入新盘,变化遵循如下轨迹:
Device
Normal ->Damage ->Rebuild ->Normal
Virtual Drive
Optimal ->Degraded ->Degraded ->Optimal
Physical Drive
Online ->Failed Unconfigured ->Rebuild ->Online
换盘之后,VD处于Degraded状态:
MegaCli64 -LDInfo -Lall -Aall
State: Degraded
更换磁盘以后,PD处于Rebuild状态:
Firmware state: Rebuild
可以通过如下指令查看rebuild的进度:
MegaCli64 -PDRbld -showprog -physDrv [1:0] -a0
输出如下:
Rebuild Progress on Device at Enclosure 1, Slot 0 Completed 19% in 10 Minutes.
Exit Code: 0x00
硬盘方面:
1、查看所有物理磁盘信息
MegaCli -PDList -aALL
2、查看磁盘缓存策略
MegaCli -LDGetProp -Cache -L0 -a0
MegaCli -cfgdsply -aALL |grep Polic
Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct
or
MegaCli -LDGetProp -Cache -L1 -a0
Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct
or
MegaCli -LDGetProp -Cache -LALL -a0
Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct
Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct
or
MegaCli -LDGetProp -Cache -LALL -aALL
Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct
Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct
or
MegaCli -LDGetProp -DskCache -LALL -aALL
Adapter 0-VD 0: Disk Write Cache : Disk's Default
Adapter 0-VD 1: Disk Write Cache : Disk's Default
3、设置磁盘缓存策略
缓存策略解释:
WT (Write through
WB (Write back)
NORA (No read ahead)
RA (Read ahead)
ADRA (Adaptive read ahead)
Cached
Direct
-RW|RO|Blocked|RemoveBlocked | WT|WB|ForcedWB [-Immediate] |RA|NORA | DsblP | Cached|Direct | -EnDskCache|DisDskCache | CachedBadBBU|NoCachedBadBBU
-Lx|-L0,1,2|-Lall -aN|-a0,1,2|-aALL
设定直接回写
megacli -LDSetProp WT -L0 -a0
Set Write Policy to WriteThrough on Adapter 0, VD 0 (target id: 0) success
关闭缓存
MegaCli -LDSetProp -DisDskCache -L0 -a0
Set Disk Cache Policy to Disabled on Adapter 0, VD 0 (target id: 0) success
例子:
MegaCli -LDSetProp WT|WB|NORA|RA|ADRA -L0 -a0
or
MegaCli -LDSetProp -Cached|-Direct -L0 -a0
or
enable / disable disk cache
MegaCli -LDSetProp -EnDskCache|-DisDskCache -L0 -a0
4、创建/删除阵列
4.1 创建一个 raid5 阵列,由物理盘 2,3,4 构成,该阵列的热备盘是物理盘 5
MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] –a0
4.2 创建阵列,不指定热备
MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct –a0
4.3 删除阵列
MegaCli -CfgLdDel -L1 –a0
4.4 在线添加磁盘
MegaCli -LDRecon -Start -r5 -Add -PhysDrv[1:4] -L1 -a0
意思是,重建逻辑磁盘组1,raid级别是5,添加物理磁盘号:1:4。重建完后,新添加的物理磁盘会自动处于重建(同步)状态,有些情况下只有在系统重启后才能看见大小变化。
5、查看阵列初始化信息
5.1 阵列创建完后,会有一个初始化同步块的过程,可以看看其进度。
MegaCli -LDInit -ShowProg -LALL -aALL
或者以动态可视化文字界面显示
MegaCli -LDInit -ProgDsply -LALL –aALL
5.2 查看阵列后台初始化进度
MegaCli -LDBI -ShowProg -LALL -aALL
或者以动态可视化文字界面显示
MegaCli -LDBI -ProgDsply -LALL -aALL
6、创建全局热备
指定第 5 块盘作为全局热备
MegaCli -PDHSP -Set [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0
也可以指定为某个阵列的专用热备
MegaCli -PDHSP -Set [-Dedicated [-Array1]] [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0
7、删除全局热备
MegaCli -PDHSP -Rmv -PhysDrv[1:5] -a0
8、将某块物理盘下线/上线
MegaCli -PDOffline -PhysDrv [1:4] -a0
MegaCli -PDOnline -PhysDrv [1:4] -a0
9、查看物理磁盘重建进度
MegaCli -PDRbld -ShowProg -PhysDrv [1:5] -a0
-------------------------------
更多常见的维护指令
查看故障硬盘,如果有热备会有hotspace
MegaCli64 -PDList -aAll |grep Firmware
检测硬盘坏掉的磁盘数
MegaCli64 -AdpAllInfo -aALL |grep "Failed Disks"
手工执行充电
MegaCli64 -AdpBbuCmd -BbuLearn -aall
查看raid卡日志
MegaCli64 -fwtermlog dsply -aall
查看硬盘信息
通过上述命令,我们可以查看到很多关于硬盘的信息
MegaCli64 -LDinfo -Lall -aALL
查看RAID信息(看做的是什么RAID)
通过这个命令,我们可以看出很多东西,例如做的什么raid,有几个分区,块大小为多少以及用了几块硬盘,一目了然
MegaCli64 -ShowSummary -aALL
查看RAID卡信息(看RAID卡是什么型号的)
这条命令除了可以看出raid卡型号,也还可以看到有几块硬盘,每块硬盘的大小等,是一条十分全面的命令,有三部分:
第一部分:raid卡信息
第二部分:硬盘信息
第三部分:做的什么raid,有几个分区
将某块物理盘下线/上线
megacli -PDOffline -PhysDrv [1:4] -a0
megacli -PDOnline -PhysDrv [1:4] -a0
这两条命令是使物理磁盘联机/脱机,[]中的1和4分别指的是设备id和所在槽位
查看时候有掉盘的硬盘
megacli -PDlist -aALL | grep "Foreign State“
通过这条命令可查看硬盘对应位置
megacli -PDlist -aALL | grep "Slot”
把第一块raid卡上Drivce ID为1,位置(slot)为2的物理硬盘状态改为unconfigrue good
megacli -PDMakeGood -PhysDrv[1:2] -a0
扫描第一个raid卡上的硬盘是否有掉盘的硬盘
megacli -CfgForeign -Scan -a0
清除第一块raid卡上的foreign信息
megacli -CfgForeign -Clear [a0]
给第一块raid卡上的Drivce ID为1,位置(slot)为2做raid0
megacli -CfgLdAdd -r0 [1:2] WT Direct -a0
给第一块raid卡上的Drivce ID为1,位置(slot)为2和Drivce ID为1,位置(slot)为3做一个raid1
megacli -CfgLdAdd -r1 [1:2,1:3] WT Direct -a0
查看掉线的物理硬盘信息
megacli -Pdgetmissing -a0
替代掉线硬盘
megacli -PdReplaceMissing -physdrv [1:2] -array4, -row0 -a0
打开硬盘缓存
megacli -LDSetProp -EnDskCache -Lall -aall
关闭硬盘缓存
megacli -LDSetProp -DisDskCache -Lall -aall
在第一块raid卡上给Drivce ID为1,位置(slot)为1,2,3槽位的硬盘制作raid5,并且为4槽位的硬盘做热备盘
megacli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] -a0
在第一块raid卡上给Drivce ID为1,位置(slot)为1,2,3槽位的硬盘制作raid5(无热备)
megacli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -a0
删除第一个raid卡中id为1位置为4的热备盘
megacli -PDHSP -Rmv -PhysDrv[1:5] -a0
在第一块raid卡上删除第二个虚拟硬盘
megacli -CfgLdDel -L1 -a0
在第一块raid卡上的第二个虚拟硬盘上(此虚拟硬盘为raid5)多添加一个Drivce ID为1,位置(slot)为2的物理硬盘
megacli -LDRecon -Start -r5 -Add -PhysDrv[1:2] -L1 -a0
创建一个 raid5 阵列,由物理盘 2,3,4 构成,该阵列的热备盘是物理盘 5
#MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] -a0
创建阵列,不指定热备
#MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -a0
删除阵列
#MegaCli -CfgLdDel -L1 -a0
在线添加磁盘
#MegaCli -LDRecon -Start -r5 -Add -PhysDrv[1:4] -L1 -a0
阵列创建完后,会有一个初始化同步块的过程,可以看看其进度。
#MegaCli -LDInit -ShowProg -LALL -aALL
或者以动态可视化文字界面显示
#MegaCli -LDInit -ProgDsply -LALL -aALL
查看阵列后台初始化进度
#MegaCli -LDBI -ShowProg -LALL -aALL
或者以动态可视化文字界面显示
#MegaCli -LDBI -ProgDsply -LALL -aALL
指定第 5 块盘作为全局热备
#MegaCli -PDHSP -Set [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0
指定为某个阵列的专用热备
#MegaCli -PDHSP -Set [-Dedicated [-Array1]] [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0
删除全局热备
#MegaCli -PDHSP -Rmv -PhysDrv[1:5] -a0
查看E S
MegaCli -PDList -aAll -NoLog | grep -Ei "(enclosure|slot)"
查看所有硬盘的状态
MegaCli -PDList -aAll -NoLog
查看所有Virtual Disk的状态
MegaCli -LdPdInfo -aAll -NoLog
在线做Raid
MegaCli -CfgLdAdd -r0[0:11] WB NORA Direct CachedBadBBU -strpsz64 -a0 -NoLog
MegaCli -CfgLdAdd -r5 [12:2,12:3,12:4,12:5,12:6,12:7] WB Direct -a0
点亮指定硬盘(定位)
MegaCli -PdLocate -start -physdrv[252:2] -a0
清除Foreign状态
MegaCli -CfgForeign -Clear -a0
查看RAID阵列中掉线的盘
MegaCli -pdgetmissing -a0
替换坏掉的模块
MegaCli -pdreplacemissing -physdrv[12:10] -Array5 -row0 -a0
手动开启rebuid
MegaCli -pdrbld -start -physdrv[12:10] -a0
查看Megacli的log
MegaCli -FwTermLog dsply -a0 > adp2.log
设置HotSpare
MegaCli-pdhsp -set[-Dedicated[-Array2]][-EnclAffinity][-nonRevertible]-PhysDrv[4:11]-a0
MegaCli-pdhsp -set[-EnclAffinity][-nonRevertible]-PhysDrv[32:1}]-a0
MegaCli -PDHSP -Set -Dedicated -Array0 -physdrv[E:S] -a0 添加局部热备盘,其中array0表示第0个raid
MegaCli -pdhsp -set -physdrv[E:S] -a0 添加全局热备盘
MegaCli -pdhsp -rmv -physdrv[E:S] -a0 移除全局和热备局部热备
关闭Rebuild
MegaCli -AdpAutoRbld -Dsbl -a0
设置rebuild的速率
MegaCli -AdpSetProp RebuildRate -30 -a0
查看所有物理硬盘状态
MegaCli -PDList -a0
# MegaCli help |grep -i pdinfo
MegaCli -pdInfo -PhysDrv[E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL
MegaCli -LdPdInfo -aN|-a0,1,2|-aALL
查看逻辑盘详细信息
# MegaCli -LdPdInfo-aALL
查看单个盘的详细信息
# MegaCli -pdInfo -PhysDrv[32:3] -aALL
Adapter 0: Device at Enclosure - 32, Slot - 3 is notfound.
MegaCli操作1---创建与删除raid0
这里我的硬盘被标记为“Foreign”外来配置,要清除一下,不然会报下面这个错误:
The specified physical disk does not have the appropriateattributes to complete
the requested command.
Exit Code: 0x26
扫描外来配置的个数:
# MegaCli -cfgforeign -scan -a0
There are 1 foreign configuration(s) on controller 0.
清除外来配置:
# MegaCli -cfgforeign -clear -a0
Foreign configuration 0 is cleared on controller 0.
Exit Code: 0x00
再次扫描外来配置的个数:
# MegaCli -cfgforeign -scan-a0
There is no foreign configuration on controller 0.
Exit Code: 0x00
创建Raid0
# MegaCli -CfgLdAdd -r0[32:2] WBDirect -a0
Adapter 0: Created VD 2
Adapter 0: Configured the Adapter!!
删除阵列:
# MegaCli -cfgclr -a0 清除所有的raid组的配置
# MegaCli -cfglddel -L0 -a0 删除指定的raid组(Target Id:0)的raid组,可以通过上面的“查看逻辑盘详细信息”得到。
查看硬盘的重建情况:
# MegaCli -PDRbld -ProgDsply -PhysDrv[12:7] -aALL
Device(Encl-12 Slot-7) is not in rebuild process
-------------------------------
不常见的操作问题
如果软硬件都是正常安装,但在执行MegaCli64指令时无法正常输出哪怕是最基本的信息,就要考虑是否为操作系统环境问题了,可在指令运行前指定:
root@hst:~# setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL | egrep 'Enclosure Device ID|Slot Number'
Enclosure Device ID: N/A
Slot Number: 0
Enclosure Device ID: N/A
Slot Number: 1
Enclosure Device ID: N/A
Slot Number: 2
Enclosure Device ID: N/A
Slot Number: 3
同上,在指令的输出时未能给出Enclosure Device ID,可在访问其上的信息时将对应的编号留空,如下:
root@hst:~# setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ShowProg -PhysDrv [:3] -aALL
Rebuild Progress on Device at Enclosure N/A, Slot 3 Completed 20% in 97 Minutes.
Exit Code: 0x00
参考链接
MegaCli命令总结
Hardware Raid Setup using MegaCli
MegaCli Common Commands and Procedures
MegaRaid References
LSI MegaRAID SAS
LSI MegaRAID - megacli
megacli-8.00.46-2
该文章最后由 阿炯 于 2018-08-19 22:31:46 更新,目前是第 2 版。