--时间:2021年1月25日
--作者:飞翔的小胖猪
前言
文档约定红色字体的E表示Enclosure Device ID、红色字体S表示Slot Number、红色字体A表示Adapter号、红色字体L表示Traget id。
说明
磁盘状态
磁盘组状态
阵列级别
阵列参数
问题处理思路
1. 确认现有磁盘状态:
该步骤主要确认磁盘是否完全损坏,已经和原所在磁盘组无任何关联。
2. 确认故障磁盘原所在RAID组状态:
首先获取RAID组等级,磁盘故障后是否可正常读写数据。RAID 0只有重新创建新阵列。
确认RAID组构建成员数量和当前实际数量。
如果RAID组构成数量和实际数量一致,则可能是热备盘已经顶替了原故障磁盘工作。
3. 确认磁盘是否能拔插:
在确认故障磁盘处于unconfigured(bad)状态及磁盘已经备提出原有RAID组
磁盘处于unconfigared(bad)可进行更换磁盘操作,直接现场找到故障磁盘把出,等待1-2分钟插上新磁盘到原有槽位,现场观察5-10分钟。
4. 系统中再次确认磁盘状态
磁盘换上过后状态有rebuild、unconfigure(good)、foreign、failed。
4.1 rebuild状态:
表示磁盘正在重构,无需手动进行任何操作只需要等待其重构完成300G磁盘在4-6小时左右。
4.2 unconfigure(good)状态
unconfigure(good)状态下需要再观察10-15分钟,同时查看元所属RAID整理组构成成员数和当前成员数是否一致,RAID组是否降级。
如果磁盘成员数不一致则需要手动把新换磁盘加入到原有RAID组中。
如果成员数一致同时长时间未自动进行数据重构则原有RAID组已由热备盘成功顶替同时热备策略设置为不回迁。需要手动新添加的磁盘设置为热备盘,无法确认设置为全局还是局部热备盘时,都设置为全局热备。
4.3 foreign状态
如磁盘为foreign状态,那么需要先清理外部盘信息,然后执行导入外部盘。 或则重构已丢失的磁盘。当导入和重构命令都提示not found时,检查原RAID组是否已经正常。 可按照第5小步的方式手动把磁盘设置为热备盘。
RAID说明
raid容错
- RAID 0:不提供容错功能。任意一个成员盘出现故障,都会导致数据丢失。通过条带化方式同时在多个成员盘中写入数据。RAID 0对于需要高性能但不需要容错的应用场景非常理想。
- RAID 1:提供100%的数据冗余能力。当一个成员盘故障时,可以使用RAID组中对应的其他磁盘的数据来运行系统,并重构故障盘。因为一个成员盘的内容会完全备份写入另一个磁盘, 所以如果其中一个成员盘出现故障, 则不会丢失任何数据。成对的成员盘在任何时候都包含相同的数据。RAID 1组是需要最大容错能力和最小容量要求的应用场景的理想选择。
- RAID 5:结合了分布式奇偶校验和磁盘条带化。奇偶校验在不需要备份全部磁盘内容的情况下,为1个磁盘提供了冗余特性。当一个成员盘故障时,RAID控制卡使用奇偶校验数据来重构所有丢失的信息。RAID 5使用较小的系统开销为系统提供了足够的容错能力。
- RAID 6:结合了分布式奇偶校验和磁盘条带化。奇偶校验在不需要备份全部磁盘内容的情况下,为2个磁盘提供了冗余特性。当一个成员盘故障时,RAID控制卡使用奇偶校验数据来重构所有丢失的信息。RAID 6使用较小的系统开销为系统提供了足够的容错能力。
- RAID 10:使用多个RAID 1提供完整的数据冗余能力。RAID 10对所有需要通过镜像磁盘组提供100% 冗余能力的场景都适用。
- RAID 50:使用多个RAID 5的分布式奇偶校验提供数据冗余能力。在保证数据完整性的情况下,每个RAID 5分组允许1个成员盘故障。
- RAID 60:使用多个RAID 6的分布式奇偶校验提供数据冗余能力。在保证数据完整性的情况下,每个RAID 6分组允许2个成员盘故障。
raid性能
- RAID 0:提供优异的性能。RAID 0将数据分割为较小的数据块并写入到不同的磁盘中,由于可以同时对多个磁盘进行读写,RAID 0提升了IO性能。
- RAID 1:由于RAID组中的硬盘都是成对出现,写数据时也必须同时写入2份,从而占用更多的时间和资源,导致性能降低。
- RAID 5:提供了较高的数据吞吐能力。由于成员盘上同时保留常规数据和校验数据,每个成员盘都可以独立读写,再加上完善的Cache算法,使得RAID 5在很多应用场景中都有出色的性能表现。
- RAID 6:在需要高可靠性、高响应率、高传输率的场景下,RAID 6是较为适合的RAID级别,其提供了高数据吞吐量、数据冗余性和较高的IO性能。由于RAID 6需要为每个成员盘写入2套校验数据,导致其在写操作期间性能降低。
- RAID 10:由RAID 0子组提供高数据传输率的同时,RAID 10在数据存储方面表现优异。IO性能随着子组数量的增加而提升。
- RAID 50:在需要高可靠性、高响应率、高传输率的场景下,RAID 50表现最好。IO性能随着子组数量的增加而提升。
- RAID 60:使用场景与RAID 50类似,但是由于每个成员盘必须写入2组奇偶校验数据,使得在写操作中性能降低,因此RAID 60不适用于大量写入任务。
raid容量
- RAID 0:在指定一组磁盘后,同等情况下,RAID 0可以提供个最大的存储容量,可用容量=成员盘容量之和。
- RAID 1:由于对一个磁盘进行写入时,必须同时写入另一个磁盘,导致存储空间损耗。可用容量=成员盘最小容量。
- RAID 5:校验数据块与常规数据块隔离,因此整体上来说,校验数据会占用1个成员盘的容量。可用空间=成员盘最小容量x(成员盘个数-1)。
- RAID 6:由于2个独立的校验数据块与常规数据块隔离,整体上来说,校验数据会占用2个成员盘的容量。可用空间=成员盘最小容量x(成员盘个数-2)。
注:
- 单个RAID 5磁盘组磁盘构成数量控制在3-8块,RAID 5最小构成盘位3块,单组超过8块磁盘性能会出现下降。7D+1P
- 单个RAID 6磁盘组磁盘构成数量控制在4-15块,RAID 6最小构成盘位4块,单组超过15块磁盘会出现性能下降。13D+2P
常用命令
命令-阵列卡相关
#查看RAID控制器数量
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -adpCount
结果显示一共有3个阵列卡。
#查看RAID控制器信息
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -adpallinfo -aALL
结果机器上所有的阵列卡信息,内容一般有点多。
命令-磁盘相关
磁盘查看
#查看所有物理磁盘信息
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog
#查看所有物理磁盘的实例号和大小及盘位号,磁盘是否加入到raid中 #重点关注:适配器ID(Adapte),笼子ID(Enclosure Device ID),磁盘槽位ID(Slot Number) [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep -E "^Adapter|^Enclosure Device|^Raw|^Slot|^Firmware "
#点亮指定磁盘指示灯 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PdLocate -start -physdrv[E:S] -aA
#关闭指定磁盘指示灯 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PdLocate -stop -physdrv[E:S] -aA
磁盘修改
#磁盘上线 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDOnline -PhysDrv[E:S] -aA
#磁盘下线 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDOffline -PhysDrv[E:S] -aA
raid阵列组相关
raid查看
#查看机器上所有磁盘阵列等级 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LdPdInfo -aAll -NoLog | grep -i primary
如上所示表示一共有4个RAID组,其中有三个raid 6,一个raid 1。
#查看机器上所有磁盘阵列参数
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -LALL -aALL
#查看所有磁盘阵列组信息,包括是否设置局部热备盘。
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL
如果有局部热备盘会在 Is VD Cached: No 后有一行 Number of Dedicated Hot Spares的行。如果没有该行表示没有局部热备盘。
#查看机器上磁盘阵列等级及对应RAID组下磁盘信息。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LdPdInfo -aAll -NoLog | grep -iE "^Adapter|^Number of Virtual Disks|^Span:|Primary|^state|^Enclosure Device ID|^Slot|DiskGroup|^Raw" | more
红圈内表示RAID磁盘组信息。出现一个Adapter表示一个阵列卡。
绿圈内表示红圈所属RAID磁盘组所有成员信息。
raid信息说明:
Adapter 适配器号
Number of Virtual Disks RAID磁盘组阵列号
RAID Level RAID磁盘组等级
State RAID组状态
Span: 0 - Number of PDs RAID磁盘组成员数量
成员信息:
Enclosure Device ID 笼子ID号
Slot Number 磁盘插槽ID号
Raw Size 磁盘大小
raid创建
约定:
E:Enclosure Device ID
S:Slot Number
A:Adapter
L:Traget id
新建raid前需要先去确认Adapter(阵列卡)、Enclosure Device ID(笼子号)、磁盘号Slot Number。
#创建raid0 #单盘raid0,设置属性为WB 和 Direct [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r0[E:S] WB Direct -aA #新建双盘raid0 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r0[E1:S1,E1:S2] WB Direct -aA #新建四盘raid0 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r0[E1:S1,E1:S2,E1:S3,E1:S4] WB Direct -aA
#新建radi1 [root@localhost ~]# /opt/MegaRAID/Me gaCli/MegaCli64 -CfgLdAdd -r1[E1:S1,E1:S2] WB Direct -aA
#新建raid5 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r5[E1:S1,E1:S2,E1:S3,E1:S4] WB Direct -aA
#新建radi10 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgSpanAdd -r10 -Array0[E1:S1,E1:S2] -Array1[E1:S3, E1:S4] -WB Direct -aA
#新建raid6 /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r6[E1:S1,E1:S2,E1:S3,E1:S4,E1:S5,E1:S6] WB Direct -aA
raid修改
#磁盘重构进度静态 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ShowProg -PhysDrv[E:S] -aALL
#磁盘重构进度动态显示 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ProgDsply -PhysDrv[E:S] -aALL
raid删除
RAID磁盘组删除或格式化操作一定要定位清楚,谨慎操作,数据无价!不要瞎操作!
#删除存在raid,使用Target Id操作,-L后的数字就是Target id #其中-a0表示第几个适配器。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdDel -LL -aA
新创建的raid组可以进行格式化,不是必选项。谨慎操作!!!!
#初始化指定raid磁盘组,同等与快速格式化,不要瞎操作。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDinit -start -LL -aA
热备盘相关
查看热备盘
查看是否有局部热备盘
#查看所有磁盘阵列组信息,包括是否设置局部热备盘。
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL
如果有局部热备盘会在 Is VD Cached: No 后有一行 Number of Dedicated Hot Spares的行。如果没有该行表示没有局部热备盘。
#查看热备盘 [root@localhost ~]#/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep 'Hotspare,'
一行表示一个热备盘,如果上一步没有查出来局部热备盘,那么这些磁盘都为全局热备盘。
增减热备盘
#设置热备盘 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -Set -PhysDrv[E:S] -aA
#取消热备盘 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -rmv -PhysDrv[E:S] -aA
案例
案例-新建阵列
创建一个新的磁盘阵列比较简单,需要先了解到要创建的阵列的磁盘的阵列卡ID、磁盘柜ID、槽位ID等数据,然后执行创建命令即可,切记不要选错了磁盘。
数据准备
创建阵列之前需要了解如下几个问题。
创建操作
创建阵列卡操作流程如下:
- 获取阵列卡、磁盘框、磁盘槽位号
- 执行创建阵列卡命令
- 初始化阵列卡
1.获取磁盘信息
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep -E "^Adapter|^Enclosure Device|^Raw|^Slot|^Firmware "
命令截图结果表示: 0号阵列卡 磁盘框号为 252 磁盘槽位号为 0 和 1,磁盘状态为Online,Spun Up表示已正常添加到阵列中。
#重点关注:适配器ID(Adapte),笼子ID(Enclosure Device ID),磁盘槽位ID(Slot Number)。
选择Unconfigure(good), Spun Up或Unconfigure(good), Spun Down状态的磁盘。
2. 执行创建阵列卡命令
根据第一步获取到的 阵列卡ID ,磁盘柜ID,磁盘槽位号等数据创建阵列。
该步骤只展示raid 1 创建,如需要创建其他等级的阵列组请查考常用命令章中raid创建小节中各种raid 等级创建方式。
#新建radi1 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r1[E1:S1,E1:S2] WB Direct -aA
具体参数解释:
E1:磁盘柜ID
S1:第一块磁盘槽位号
S2:第二块磁盘槽位号
A:阵列卡ID
WB:写缓存
Direct:读操作不缓存到RAID卡缓存
3. 初始化阵列卡
新创建的raid组可以进行格式化,不是必选项。在执行命令初始化磁盘组的时候切记不要选错了阵列组,谨慎操作!!!!
#查看磁盘组id号。
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -LALL -aALL
#初始化指定raid磁盘组,同等与快速格式化,不要瞎操作。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDinit -start -LL -aA
具体参数解释:
L:磁盘组ID
A:阵列卡ID
案例-磁盘存在外部信息
磁盘中存在外部信息的意思就是该磁盘不是一块全新的磁盘,磁盘内部存在原来的磁盘阵列信息,导致无法和新的磁盘一样自动加入故障磁盘阵列中。此时需要先清除已存在磁盘阵列信息然后手动添加磁盘到故障整列卡中。
解决思路
- 确认当前磁盘状态。
- 查看磁盘组状态信息。
- 物理拔插更换磁盘。
- 扫描是否存在外部盘。
- 清楚指定磁盘外部盘信息。
- 手动导入外部磁盘到磁盘组。
- 再次确认磁盘状态。
操作步骤
1.查看当前所有磁盘硬件状态
#查看磁盘状态信息。
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll –Nolog
查看得知 2号 笼子 12号盘状态为unconfigured(bad)。
已踢出阵列,并且状态为损坏。
2.查看阵列状态信息
#获取磁盘阵列状态信息,Optimal为正常。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL | grep -iE "^Adapter|^Virtual Drive|^RAID Level|^Size|^State"
3.扫描是否有外部盘
#确认指定的阵列卡上的磁盘是否存在外部信息。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -Scan -aA
具体参数解释:
A:阵列卡ID
4.清除磁盘外部信息
#清除指定阵列卡上存在的磁盘外部信息。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -clear -aA
具体参数解释:
A:阵列卡ID
5.重构磁盘
一般情况下清除掉了磁盘的外部信息后会在1-2分钟左右进行rebuild。如果没有进行重构有如下几个原因:
.磁盘组状态正常。热备盘已经成功顶替了,同时热备策略设置为不回写。此时则不用进行重构。
.磁盘组状态不正常。由于时间过久需要手动执行重构。
恢复手段有如下两种,任选其一即可。
同步丢失的磁盘
#查看指定阵列卡上丢失的阵列磁盘信息 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PdGetMissing -aA #设置丢失的磁盘开启重建 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -pdrbld -start -physdrv[E:S] -aA
E:磁盘柜ID
S:磁盘槽位ID
A:阵列卡ID
导入外部盘
#查看指定阵列卡上丢失的阵列磁盘信息 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PdGetMissing -aA #设置丢失的磁盘开启重建 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -pdrbld -start -physdrv[E:S] -aA
E:磁盘柜ID
S:磁盘槽位ID
A:阵列卡ID
案例-热备盘自动顶替
热备盘在发生阵列成员磁盘发生故障过后会自动顶替故障磁盘重构故障阵列,多数情况下热备盘设置为不回写模式即正常磁盘更换后热备盘不会从成员盘变成热备盘,这种情况下需要手动把新更换的磁盘手动设置热备盘保证整个阵列卡中所有阵列的数据安全。
解决思路
- 确认当前磁盘状态。
- 如果有外部信息先清除磁盘外部信息,具体步骤参考上文。
- 设置磁盘为全局热备盘。
操作步骤
1.获取磁盘信息
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep -E "^Adapter|^Enclosure Device|^Raw|^Slot|^Firmware "
命令截图结果表示: 0号阵列卡 磁盘框号为 252 磁盘槽位号为 0 和 1,磁盘状态为Online,Spun Up表示已正常添加到阵列中。
#重点关注:适配器ID(Adapte),笼子ID(Enclosure Device ID),磁盘槽位ID(Slot Number)。
选择Unconfigure(good), Spun Up或Unconfigure(good), Spun Down状态的磁盘。
2.清除磁盘外部信息
参考上文此处不累述。
3.设置全局热备盘
#设置热备盘 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -Set -PhysDrv[E:S] -aA
E:磁盘柜ID
S:磁盘槽位ID
A:阵列卡ID
4.查看确认热备盘
#查看热备盘 [root@localhost ~]#/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep 'Hotspare,'
一行表示一个热备盘,如果上一步没有查出来局部热备盘,那么这些磁盘都为全局热备盘。
RAID 0 磁盘故障
raid 0 故障时整个阵列数据都会丢掉,此时只有重建一个新的阵列组。
解决思路
- 确认当前磁盘状态。
- 如果有外部信息先清除磁盘外部信息,具体步骤参考上文。
- 新建raid组。
操作步骤
1.获取磁盘信息
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep -E "^Adapter|^Enclosure Device|^Raw|^Slot|^Firmware "
命令截图结果表示: 0号阵列卡 磁盘框号为 252 磁盘槽位号为 0 和 1,磁盘状态为Online,Spun Up表示已正常添加到阵列中。
#重点关注:适配器ID(Adapte),笼子ID(Enclosure Device ID),磁盘槽位ID(Slot Number)。
选择Unconfigure(good), Spun Up或Unconfigure(good), Spun Down状态的磁盘。
2. 执行创建阵列卡命令
根据第一步获取到的 阵列卡ID ,磁盘柜ID,磁盘槽位号等数据创建阵列。
该步骤只展示raid 1 创建,如需要创建其他等级的阵列组请查考常用命令章中raid创建小节中各种raid 等级创建方式。
#创建raid0 #单盘raid0,设置属性为WB 和 Direct [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r0[E:S] WB Direct -aA
具体参数解释:
E:磁盘柜ID
S:磁盘槽位号
A:阵列卡ID
WB:写缓存
Direct:读操作不缓存到RAID卡缓存
3. 初始化阵列卡
新创建的raid组可以进行格式化,不是必选项。在执行命令初始化磁盘组的时候切记不要选错了阵列组,谨慎操作!!!!
#查看磁盘组id号。
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -LALL -aALL
#初始化指定raid磁盘组,同等与快速格式化,不要瞎操作。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDinit -start -LL -aA
具体参数解释:
L:磁盘组ID
A:阵列卡ID