MegaCli使用小记

MegaCli使用小记用MegaCli做阵列,需要注意的参数Adapter#0阵列卡号,适配器编号EnclosureDeviceID:32raid卡的ID号SlotNumber:0物理磁盘的slot号,磁盘位置我们在做raid时,必须要使用上方的参数指定硬盘的位置时,[EnclosureDe

大家好,欢迎来到IT知识分享网。

目录
  • MegaCli的安装
  • 创建raid0,1,5
      • 创建raid0
    • 分区
      • fdisk 创建分区
      • parted 创建分区
      • 格式化分区
    • 挂载
      • 临时挂载
      • 开机自动挂载(永久挂载)
    • 删除分区
    • 下线磁盘
    • 上线磁盘
    • 删除raid
    • 刷新磁盘信息
    • raid0 添加硬盘
    • 常见问题处理
    • Raid 1
      • 添加热备
    • Raid5
      • Raid5 级别迁移
  • 检查
    • RAID卡策略的更改
    • 其他命令

用MegaCli做阵列,需要注意的参数
Adapter #0 阵列卡号,适配器编号
Enclosure Device ID: 32 raid卡的ID号
Slot Number: 0 物理磁盘的slot号,磁盘位置
我们在做raid时,必须要使用上方的参数
指定硬盘的位置时,[Enclosure Device ID: Slot Number]
例如:指定0号盘,[32:0]
指定raid使用的适配器的编号,-aN
例如:指定0号适配器,-a0

MegaCli的安装

下载rpm包

wget http://mirror.cogentco.com/pub/misc/MegaCli-8.07.14-1.noarch.rpm

image

安装

rpm -ivh MegaCli-8.07.14-1.noarch.rpm

image

安装完,就会在/opt/下创建个MegaRAID目录,文件都在里面
image

添加软连接

ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/MegaCli64

image

查看帮助手册

MegaCli64 –h

显示所有适配器信息 通常注意Adapter即可

MegaCli64 -AdpAllInfo -aAll|grep "Adapter"

image

查看所有物理硬盘的Enclosure Device ID及Slot Number

MegaCli64 -PDList -aALL | egrep 'Enclosure Device ID|Slot Number'

image
查看所有物理硬盘状态

MegaCli64 -PDList -aALL|egrep 'Firmware state'

image

查看所有物理硬盘的Foreign信息

MegaCli64 -PDList -aALL|egrep 'Foreign State'

image

若Foreign State不是None ,则需要清除外来配置,操作如下

#扫描外来配置的个数
MegaCli64 -cfgforeign -scan -a0
#清除外来配置
MegaCli64 -cfgforeign -clear -a0
#再次扫描外来配置的个数
MegaCli64 -cfgforeign -scan -a0

查看指定的盘的详细信息(本文示例,查看1号盘)

MegaCli64 -pdInfo -PhysDrv[32:1] –aALL

image

查看逻辑盘详细信息

MegaCli64 -LdPdInfo –aALL

查看raid级别及查看raid是由哪些硬盘组成的

MegaCli64 -LdPdInfo -aALL|more

显示适配器个数

MegaCli64 –adpCount

image

创建raid0,1,5

MegaCli64 -CfgLdAdd -rX [Enclosure Device ID  : Slot Number, Enclosure Device ID  : Slot Number] –aN
#  -r :指定raid类型、  X 是 RAID级别 、N 是 adapter ID
创建raid0
MegaCli64 -CfgLdAdd –r0[32:1,32:2] -a0

若清除外来配置之后创建raid仍报错
image

执行该命令调整磁盘状态为Unconfigured(good), Spun Up

MegaCli64 -PDMakeGood -Physdrv [32:1,32:2] -force -a0

image

创建成功
image

会有一个初始化同步块的过程,可以看看其进度:

MegaCli64 -LDInit -ShowProg -LALL –aALL

image

查看当前的raid配置信息,可以看到Target Id: 0,RAID Level: Primary-0
image

分区

创建raid之后进行分区操作
查看此时所有可用块设备的信息
image

fdisk 创建分区

fdisk /dev/sdb ,n->p->回车->回车-> +100M(要划的分区大小,回车即为默认使用全部大小) ->t->回车->fd->wq
image

parted 创建分区

由于创建raid0后磁盘大于2T,无法使用fdisk划分大于2T的分区,这里使用parted命令进行分区
Parted命令选择操作磁盘
parted命令后跟上欲操作磁盘的名字即可选择此设备进行操作

parted /dev/sdb

image

新建磁盘标签类型为GPT
因为parted命令只能针对gpt格式的磁盘进行操作,所以这里必须将新建的磁盘标签格式设为gpt

mklabe gpt
(parted -s /dev/sdb mklabel  gpt)

image

分区
命令格式

mkpart PART-TYPE [FS-TYPE] START END
PART-TYPE(分区类型)
o	primary
主分区
o	logical
逻辑分区
o	extended
扩展分区
•	FS-TYPE(文件系统类型)
o	ext4
o	ext3
o	ext2
o	xfs
o	其他......
•	START
设定磁盘分区起始点;可以为0,numberMiB/GiB/TiB;
o	0
设定当前分区的起始点为磁盘的第一个扇区;
o	1G
设定当前分区的起始点为磁盘的1G处开始;
•	END
设定磁盘分区结束点;
o	-1
设定当前分区的结束点为磁盘的最后一个扇区;
o	10G
设定当前分区的结束点为磁盘的10G处;

将/dev/sdb整个空间分给同一个分区

parted -s /dev/sdb mkpart primary "0 -1"

image

格式化分区

因为整个/dev/sdb只分了一个区,则这个分区名默认会分配为/dev/sdb1;使用mkfs命令将/dev/sdb1分区格式化为ext4
image

然后创建挂载目录进行挂载

挂载
临时挂载

创建挂载目录

mkdir /gfsdata01

临时挂载分区

mount /dev/sdb1 /gfsdata01

df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/root_vg-lv_root   89G  2.6G   82G   4% /
devtmpfs                     126G     0  126G   0% /dev
tmpfs                        126G     0  126G   0% /dev/shm
tmpfs                        126G  2.0M  126G   1% /run
tmpfs                        126G     0  126G   0% /sys/fs/cgroup
/dev/sda1                    976M  216M  694M  24% /boot
/dev/sda7                     99G   61M   94G   1% /home
/dev/sda8                     62G   53M   59G   1% /tmp
/dev/sda6                     99G   61M   94G   1% /app
tmpfs                         26G     0   26G   0% /run/user/1014
tmpfs                         26G     0   26G   0% /run/user/0
/dev/sdb1                     17T   20K   16T   1% /gfsdata01
开机自动挂载(永久挂载)

即修改/etc/fstab文件。

echo '/dev/sdb1 /gfsdata01    ext4    defaults    0 0' >>/etc/fstab
删除分区

image

rm NUMBER:NUMBER即为parted子命令p回显的Number对应的数字
image

下线磁盘

下线前查看raid状态
查看raid状态 Optimal(最优的)

MegaCli64 ldinfo lall a0

image

下线

MegaCli64 -PDOffline -PhysDrv [32:2] -a0

image

查看此时磁盘状态

MegaCli64 -PDList –aALL|egrep 'Firmware state'

image

查看raid0状态 Offline (离线的)

MegaCli64 ldinfo lall a0

image

上线磁盘

再将该磁盘上线

MegaCli64 -PDOnline -PhysDrv [32:2] -a0

image

查看重建进度

MegaCli64 -PDRbld -ShowProg -PhysDrv [32:2] -a0

image

以动态可视化文字界面显示
image

查看是否已上线

MegaCli64 -PDList –aALL|egrep 'Firmware state'

image

查看raid状态 Optimal(最优的)

MegaCli64 ldinfo lall a0

image

删除raid
MegaCli64 -cfglddel -L0 -a0

image

注意:执行删除操作之前先将分区卸载 umount /dev/sdb1
<1>清除当前所有的raid组的配置(慎用)

MegaCli64 -cfgclr -a0

image

<2>删除指定的raid组(即逻辑盘信息)
一定要先查看 逻辑盘详细信息

MegaCli64 -LdPdInfo –aALL

image

注意Target Id,其代表逻辑盘的id,L +Target Id为指定逻辑盘
L0 代表第一个逻辑盘
L1 代表第二个逻辑盘
依次类推
若执行删除操作,打印以下信息,则说明是有缓存,需要加上-force参数,再次删除
Virtual Disk is associate with Cache Cade. Please Use force option to delete #这是说有缓存,要强制删除
Exit Code: 0x01

MegaCli64 -cfglddel  -L0 -force -a0
刷新磁盘信息

发现删除raid之后,使用fdisk –l 或者lsblk看不到原来的磁盘

Lsblk

image

这时候需要将磁盘的状态改回JBOD再看就有了

MegaCli64 -PDMakeJBOD -PhysDrv[32:1,32:2] -a0
lsblk

image
image

raid0 添加硬盘

在原来已有的硬盘的基础上添加一块磁盘进行扩容

MegaCli64 -LDRecon -Start -r0 -Add -PhysDrv[32:2] -L0 -a0

查看重建进度
MegaCli64 ldinfo lall a0|grep Reconstruction
image

常见问题处理
1,   Firmwarestate:Unconfigured(good), Spun down
解决方法:
①重新热拔插指定硬盘,该状态会变成Firmware state:Unconfigured(good), Spun Up
②创建raid后磁盘状态也会由Spun down变成SpunUp
2,   Firmware state: Unconfigured(bad)
解决办法:
MegaCli64 -PDMakeGood -PhysDrv[E:S] -a0 固件状态会由Unconfigured(bad)变成Unconfigured(good), Spun Up
MegaCli64 -pdgetmissing -a0 检查掉线硬盘,掉线硬盘进入Rebuild
MegaCli64   -CfgForeign -Import -a0 重新导入raid配置
MegaCli64 -PDRbld -ShowProg -PhysDrv[32:2] –a0 查看重建进度 
3,   Firmware state: failed
解决办法:
出现failed状态的硬盘大多已损坏,建议更换(或报修);但可以强制上线。
强制上线步骤如下:
可以先将磁盘下线。 # MegaCli64 -PDOffline-PhysDrv[E:S] -a0
然后再上线。        # MegaCli64 -PDOnline -PhysDrv[E:S] -a0
4,   以下状态的解决办法:
Foreign State: Foreign
Foreign Secure: Drive is notsecured by a foreign lock key
办法一:可以清除恢复状态(慎用)

MegaCli64 -CfgForeign -Clear -a0

办法二:导入配置,恢复虚拟磁盘组

MegaCli64 -CfgForeign -import -a0
Raid 1

创建raid 1

MegaCli64 -CfgLdAdd -r1[32:1,32:2] -a0

image

查看当前的raid配置信息,可以看到Target Id: 0,RAID Level: Primary-1

MegaCli64 ldinfo l0 a0

image

然后创建分区和挂载,操作和前面raid0的类似
下线一个磁盘

MegaCli64 -PDOffline -PhysDrv [32:2] -a0

发现raid状态改变 Degraded (已降级)

MegaCli64 ldinfo l0 a0

image

重新将下线的磁盘上线

MegaCli64 -PDOnline -PhysDrv [32:2] -a0

然后观察发现状态已正常,正在初始化检查一致性
image

删除操作和raid0相同

添加热备

#######全局热备

MegaCli64 -PDHSP -Set [-EnclAffinity] [-nonRevertible] -PhysDrv[32:2] -a0

image

删除热备

MegaCli64 -PDHSP -Rmv -PhysDrv[32:2] -a0

image

#######局部热备
指定某个盘-PhysDrv[32:3] 为某个raid设备 -Array0 的热备

MegaCli64 -PDHSP {-Set [-Dedicated [-Array0]] [-EnclAffinity] [-nonRevertible]} -PhysDrv[32:3] -a0

image

查看raid信息发现热备已添加

MegaCli64 ldinfo l0 a0

image

创建时指定热备

MegaCli64 -CfgLdAdd -r1 [32:1,32:2] -Hsp[32:3] -a0

image

下线一个磁盘查看热被否生效
发现状态为正在重建说明热备没问题
image

Raid5

创建raid 5

MegaCli64 -CfgLdAdd -r5 [32:1,32:2,32:3] -a0

image

创建完可以进行分区挂载
下线上线热备操作和raid1的类似

Raid5 级别迁移

Raid0级别转换成raid5级别
原来raid0两块盘,添加一块盘转成raid5

MegaCli64 -ldrecon -start -r5 -add -physdrv[32:3] -l0 -a0

image

查看进度

MegaCli64 ldinfo l0 a0|grep Reconstruction       #该操作可能要花费很长时间

image

检查

查看磁盘是否有问题

MegaCli64 -PDList -aALL|grep Error

image

这是查看所有磁盘信息的命令,然后grep错误信息,看下面过滤出来的信息,这是我一个R420的机器。
Media Error Count: 0 Other Error Count: 0  #这两个数值来确定阵列中磁盘是否有问题;Medai Error Count: #表示磁盘可能错误,可能是磁盘有坏道,这个值不为0值得注意,数值越大,危险系数越高,
Other Error Count: #表示磁盘可能存在松动,可能需要重新再插入
当然实际生产环境中,如果想长期的检查磁盘是否可能要出问题了,还是建议去/var/log/message里面去检测信息,因为用MegaCli这种方式检测硬盘,当然硬盘出问题了可以报出来,但是就算你换了硬盘,再次检测会发现计数器还是没有清零,这是因为raid缓存的问题,但是这个问题需要重启服务器才能解决,所以说用这种方式做一个常规性的监控方式的话,这个问题还是要考虑进来的。
查看磁盘缓存策略
MegaCli64 -LDGetProp -Cache -L0 -a0
#输出内容表示的意思:Adapter 0-VD 0(target id: 0):  为磁盘适配器号,0代表第一个,Cache Policy:后面是缓存策略

image

一:WriteBack与WriteThrough
1.WriteBack:进行写操作时,将数据写入RAID卡缓存,并直接返回,RAID卡控制器将在系统负载低或者Cache满了的情况下把数据写 入 硬盘。该设置会大大提升RAID卡写性能,绝大多数的情况下会降低系统IO负载。 数据的可靠性由BBU(Battery Backup Unit)电池 进行保证
2.WriteThrough: 数据写操作不使用缓存,数据直接写入磁盘。RAID卡写性能下降,在大多数情况下该设置会造成系统IO负载上升; 
二: ReadAheadNone, ReadAdaptive, ReadAhead.
ReadAheadNone: 不开启预读。这是默认的设置
ReadAhead: 在读操作时,预先把后面顺序的数据加载入Cache,在顺序读取时,能提高性能,相反会降低随机读的性能。
ReadAdaptive: 自适应预读,当Cache memory和IO空闲时,采取顺序预读,平衡了连续读性能及随机读的性能,需要消耗一定的计算能力。
三、WT(Write through),WB(Write back),NORA(No read ahead),RA(Read ahead),ADRA(Adaptive read ahead),Cached,Direct
Write Policy(写入策略) 将高速缓存方法设置为回写或通过写。
* 在Write-through(通过写)高速缓存中,当磁盘子系统已接收到一个事务中的所有数据时,该控制器将数据传输完成信号发送给主机。
* 在Write-back(回写)高速缓存中,当控制器高速缓存已接收到某个事务中的所有数据时,该控制器将数据传输完成信号发送给主机。
Read-ahead(预读)启用逻辑驱动器的SCSI预读功能。 可将此参数设为No-Read-Ahead(非预读)、Read-ahead(预读)或Adaptive(自适应)。 默认设置为Adaptive(自适应)。
* No-Read-Ahead(非预读)指定控制器在当前逻辑驱动器中不使用预读方式。
* Read-ahead(预读)在读操作时,预先把后面顺序的数据加载入Cache,在顺序读取时,能提高性能,相反会降低随机读的性能。
* Adaptive(自适应)指定如果最近两次的磁盘访问出现在连续的扇区内,则控制器开始采用Read-ahead(预读)。 如果所有的读取请求都是随机的,则该算法回复到No-Read-Ahead(非预读),但仍要判断所有的读取请求是否有按顺序操作的可能。当Cache memory和IO空闲时,采取顺序预读,平衡了连续读性能及随机读的性能,需要消耗一定的计算能力。
Cache Policy(高速缓存策略) 适合在特定逻辑驱动器上读取。 它并不影响Read ahead(预读)高速缓存。
* Cached I/O(高速缓存I/O)指定所有读取数据在高速缓存存储器中缓存。
* Direct I/O(直接I/O)指定读取数据不在高速缓存存储器中缓存。 此为默认设置。 它不会代替高速缓存策略设置。数据被同时传送到高速缓存和主机。 如果再次读取同一数据块,则从高速缓存存储器读取
四、Write Cache OK if Bad BBU和 No Write Cache if Bad BBU
No Write Cache if Bad BBU: 如果BBU出问题,则关闭Write Cache。由WriteBack自动切换到WriteThrough模式。如果没有特殊要求,强烈建议采用该设置,以确保数据的安全。
Write Cache OK if Bad BBU: 如果BBU出问题,依然启用Write Cache. 这是不推荐的设置,BBU出问题将无法保证断电情况下数据的正常,如果此时依然采用WriteBack模式,遇到断电将发生数据丢失。除非有UPS作额外保证,不然不推荐采用这个设置。

之前创建raid为指定缓存策略,使的是默认缓存策略,不同型号的服务器默认缓存策略也是不一样的

RAID卡策略的更改
#修改WriteBack:
/MegaCli64 -LDSetProp -WB -Lall -aAll
#修改WriteThrough:
MegaCli64 -LDSetProp -WT -Lall -aAll
#修改No Write Cache if Bad BBU:
MegaCli64 -LDSetProp -NoCachedBadBBU -Lall -aAll
#修改Write Cache OK if Bad BBU:
MegaCli64 -LDSetProp -CachedBadBBU -Lall -aAll
#或者其他:
MegaCli64 -LDSetProp WT|WB|NORA|RA|ADRA -L0 -a0
MegaCli64 -LDSetProp -Cached|-Direct -L0 -a0
其他命令

手工配置初始化

MegaCli64 -LDInit  -start –L0  -a0               #快速初始化
MegaCli64 -LDInit  -start  -full –L0 -a0        #完全初始化
MegaCli64 -LDInit  -progdsply -L0 -a0        #显示初始化的进度
MegaCli64 -LDInit  -abort  -L0  -a0               #结束完全初始化

raid电池操作:

MegaCli/MegaCli64 -AdpBbuCmd -BbuLearn a0  #手动充电
MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL #查看充电状态
MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL #查看充电进度百分比

查看Megacli的log

MegaCli64 -FwTermLog dsply -a0 > /tmp/Megacli.log

查看一块硬盘是否做了raid

MegaCli/MegaCli64 -LDInfo -LAll -aAll|grep 'Is VD emulated'

Is VD emulated : No #No就是没做raid

/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LAll -aAll|grep 'Is VD emulated'

Is VD emulated : Yes #yes就是做了raid

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31859.html

(0)

相关推荐

发表回复

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

关注微信