Linux系统下使用MegaCli软件对磁盘阵列进行操作

若管理的服务器比较多,服务器的硬盘经常会坏掉。可以使用megacli命令来查看磁盘阵列中的磁盘是否损坏。

1. CentOS6系统下安装MegaCli软件

在一些rpm网站中搜索megacli。然后下载megacli的rpm包进行安装:

# wget http://rpmfind.net/linux/openmandriva/3.0/repository/x86_64/non-free/release/megacli-8.02.21-4-omv2015.0.x86_64.rpm
# wget http://mirror.rosalab.ru/openmandriva/3.0/repository/x86_64/media/non-free/release/megacli-8.02.21-4-omv2015.0.x86_64.rpm # yum install megacli-8.02.21-4-omv2015.0.x86_64.rpm megacli的使用需要依赖libsysfs库文件 # yum install libsysfs # ln -s /usr/lib64/libsysfs.so.2.0.1 /usr/lib64/libsysfs.so.2.0.2

2. 使用megacli命令查看磁盘

# megacli -PDList -aALL 
此命令可以查看所有物理磁盘的信息。
若Media Error Count和Other Error Count的值大于0,则表示磁盘可能坏掉了。
megalci命令的参数后接其值,中间没有空格。-a参数表示使用的adapter编号。 # megacli -LDInfo -LALL -aAll 此命令查看所有逻辑磁盘的信息。

# megacli -LdPdInfo -a1
此命令列出第2个阵列卡上各逻辑磁盘及其所属的物理磁盘信息。 # megacli -AdpAllInfo -aALL 查看阵列卡信息 # megacli -AdpBbuCmd -aAll 查看阵列卡电池信息

3. 使用megalci命令删除或创建阵列

我有一台服务器,其第一个阵列卡上有3块硬盘发生了损坏,导致10块硬盘组RAID6的逻辑盘数据丢失。现在拔掉损坏的硬盘,将后面位置的2块硬盘拔下补入到前面的硬盘位上,再对剩下的硬盘重新组阵列。

首先,删除第一个阵列卡上的第二个逻辑盘。该逻辑盘由于物理硬盘损坏数据丢失,数据咱也不要了,直接删除它。
# megacli -CfgLdDel -L1 -a0
-L参数接逻辑磁盘的ID编号,-a参数接阵列卡编号。

当拔掉后面的硬盘插入前面损坏盘的槽位时,硬盘状态变为Unconfigured(bad),需要将其变为Unconfigured(good)。将第一阵列卡上的Enclosure Device ID: 3/Slot Number: 2硬盘变为Unconfigured(good)。
# megacli -PDMakeGood -PhysDrv[3:2] -a0
# megacli -PDMakeGood -PhysDrv[3:4] -a0

若插拔硬盘换位发生在删除逻辑分区之前,则移位的硬盘没有删除逻辑分区信息,变为Foreign配置,需要清除其Foreign信息。若不清楚Foreign信息,后续使用其硬盘组RAID会报错:Mix of configured and unconfigured drives are not possible.
# megacli -CfgForeign -Scan -a0
# megacli -CfgForeign -Clear -a0
将外源磁盘阵列导入到阵列卡中
# megacli -CfgForeign -Import -a0

对剩下的7块硬盘组RAID6,并使其中一个硬盘为热备盘。这些磁盘可能都比较脆弱了,可能容易坏,做非常安全的RAID策略。
# megacli -CfgLdAdd -r6[3:1,3:2,3:3,3:4,3:5,3:6] WB ADRA Direct CachedBadBBU -Hsp[3:7] -a0
设置WB ADRA Direct CachedBadBBU等缓存策略参数为该逻辑盘的默认策略。

对磁盘换成策略解释如下:

WT/WB: 设置磁盘写入策略。WT为Write Through,即直写,表示将数据写入硬盘时,不经过阵列卡缓存直接写入,是默认策略;WB为Write Back,即回写,表示数据写入硬盘时,先写入阵列卡缓存,当缓存写满时再写入硬盘。毫无疑问,缓存写入速度快,将数据写入缓存能提高读写速度,极大减少真实的磁盘写入时间。这样使用回写策略既能提高逻辑盘写入性能,也能增加磁盘寿命。使用回写策略,数据可能会留在缓存,在服务器断电且阵列卡没有电池时会导致数据丢失。
NORA/RA/ADRA:设置磁盘读取策略。NORA为NO Read Ahead,即不预读;RA为Read Ahead,即强制预读,在进行读取操作时,预先把后面顺序的数据载入阵列卡卡缓存,这样能在顺序读写环境提供很好的性能,但是在随机读的环境中反而降低读取性能,它适合文件系统,而不适合数据库系统;ADaptive Read Ahead,即自适应预读,在缓存和I/O空闲时进行预读,是默认策略。
Direct/Cached:Direct表示读取操作不缓存到阵列卡缓存,是默认策略;Cached表示读取操作先缓存到阵列卡,这有利于数据的再次快速读取。
CachedBadBBU/NoCachedBadBBU:CachedBadBBU为Write Cache OK if Bad BBU,即在电池损坏时依然采取回写缓存策略;后者表示当电池损坏时采取只写缓存策略。

在本台服务器上,第二个阵列卡由于电池容量低需要更换,导致该阵列卡上第一个逻辑磁盘的写入策略变为Write Through,通过megacli命令修改该阵列卡上第一个逻辑磁盘的缓存策略:

# megacli -LDSetProp CachedBadBBU -L0 -a1

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据