1. 简介
a. 什么是RAID
RAID:即Redundant Array of Independent Disks,独立磁盘冗余阵列。由多个独立的高性能磁盘组成磁盘子系统,提供比单个磁盘更高的存储性能和数据冗余。
RAID卡:提供RAID功能的硬件板卡。
RAID组:也叫硬盘组,“Drive Group”(简称“DG”)、“Array”、“RAIDGroup”(简称“RG”)。就是将一组物理硬盘组合起来(按照不同的RAID级别),作为一个整体对外体现,是虚拟磁盘的基础。
虚拟磁盘:“Virtual Drive”、“Virtual Disk”(简称“VD”)、“Volume”、“Logical Device”(简称“LD”)。即使用硬盘组划分出来的连续的数据存储单元,相当于一个个独立的硬盘,通过一定的配置,使其具有比单个物理硬盘更大的容量,及更高的安全性和数据冗余性。一般创建好的虚拟磁盘在linux系统重会识别为具体的盘符sda、sdb等等。
这里要注意:一个RAID组可以创建多个VD。
JBOD(Just a Bunch Of Disks),简单来说,JBOD模式下,RAID卡将其下属的磁盘直接上报给Linux系统,此时磁盘不组成RAID组,Linux系统中的盘符和物理磁盘一一对应。
总结:
1、 RAID卡下属的物理磁盘可以组成raid组,一个raid组可以创建多个虚拟磁盘;
2、 raid模式下,Linux系统中的盘符和RAID卡上创建的虚拟磁盘一一对应;
3、 jbod模式下,Linux系统中的盘符和RAID卡下属的物理磁盘一一对应;
4、 raid模式和jbod模式可以共存。
b.常用RAID卡介绍
厂家 |
RAID卡型号 |
工具 |
博通 |
LSI SAS3108 Avago SAS3508 Avago SAS3408iMR Avago SAS3416iMR Avago SAS3516 Avago MegaRAID SAS 9440-8i Avago MegaRAID SAS 9460-8i Avago MegaRAID SAS 9460-16i 。。。 |
下载链接见broadcom官网 |
微芯 |
MSCC SmartRAID 3152-8i MSCC SmartHBA 2100-8i 。。。 |
下载链接见microchip官网 |
华为 |
SP686C SP186 |
暂未公开发售,一般为hiraidadm工具。 |
2. RAID级别
a. RAID0
RAID0:代表了所有RAID级别中最高的存储性能。
RAID 0提高存储性能的原理是把连续的数据分散到多个硬盘上存取。这样,当系统有数据请求时就可以在多个硬盘上并行执行,每个硬盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高硬盘整体读写性能。
但由于其没有数据冗余,无法保护数据的安全性,只能适用于I/O速率要求高,但数据安全性要求低的场合。
组成RAID0所需的物理硬盘数一般为1~N。
b. RAID1
RAID1:即每个工作盘都有一个镜像盘,每次写数据时必须同时写入镜像盘,读数据时同时从工作盘和镜像盘读出。
当更换故障盘后,数据可以重构,恢复工作盘正确数据。
RAID 1可靠性高,但其有效容量减小到总容量一半,因此常用于对容错要求较高的应用场合。
组成RAID1所需的物理硬盘数一般为2。
c. RAID5
RAID5:是一种存储性能、数据安全和存储成本兼顾的存储解决方案。
当RAID的某个成员盘出现故障时,通过其他成员盘上的数据可以重新构建故障硬盘上的数据。RAID 5既适用于大数据量的操作,也适用于各种小数据的事务处理,是一种快速、大容量和容错分布合理的磁盘阵列。
RAID 5可以理解为是RAID 0和RAID 1的折衷方案,组成RAID5所需的物理硬盘数一般为3~N。
PA=A0⊕A1⊕A2
d. RAID6
RAID6:在RAID 5的基础上,RAID 6增加了第二个独立的奇偶校验信息块。
两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块硬盘同时失效也不会影响数据的使用。
但RAID 6需要分配给奇偶校验信息更大的硬盘空间,相对于RAID 5有更大的“写损失”,因此“写性能”较差。
组成RAID6所需的物理硬盘数一般为4~N。
PA=A0⊕A1⊕A2
QA=a⊗A0⊕b⊗A1⊕c⊗A2
e. RAID10
RAID10:即RAID1+RAID0。组成RAID10所需的物理硬盘数一般为4~N。
f. RAID50
RAID50:即RAID5+RAID0。组成RAID10所需的物理硬盘数一般为6~N。
g. RAID60
RAID60:即RAID6+RAID0。组成RAID60所需的物理硬盘数一般为8~N。
3. 使用
a. 判断raid卡类型
一般命令行使用lspci和lsscsi两种命令判断raid卡类型:
博通卡:一般关键词为MegaRAID、Broadcom等关键词。
微芯卡:一般关键词为PMxxxx、LOGICAL等关键词。
b. 博通卡相关操作
StorCLI的安装路径为/opt/MegaRAID/storcli/,或者直接拷贝压缩包下的storcli64工具后chmod。
查卡
./storcli64 show
记录Ctl字段,卡编号,后续命令中的{card}字段。
查看当前VD列表
./storcli64 /c{card} show
记录VD LIST中的VD字段,虚拟磁盘编号,后续命令中的{vd}字段。
查看当前PD列表
./storcli64 /c{card} show
记录PD LIST中的EID、Slt字段,分别为物理磁盘的框号和槽位号,后续命令中的{enc_id}、{slot_id}字段。
查询VD详细信息
./storcli64 /c{card}/v{vd} show all
查询PD详细信息
./storcli64 /c{card}/e{enc_id}/s{slot_id} show all
删除VD
./storcli64 /c{card}/v{vd} del
创建VD
./storcli64 /c{card} add vd r{raid_level} size={size/all} drives={enc_id}:{slot_id}
VD扩容
./storcli64 /c{card}/v{vd} expand size={size}
RAID组扩盘
./storcli64 /c{card}/v{vd} start migrate type=r{raid_level} option=add drives={enc_id}:{slot_id}
JBOD
./storcli64 /c{card} set jbod={on|off}; ./storcli64 /c{card}/e{enc_id}/s{slot_id} set jbod
c. 微芯卡相关操作
ARCCONF工具的安装路径为/usr/Arcconf,或者直接拷贝压缩包下的Arcconf工具后chmod。
查卡
./arcconf list
记录ID字段,卡编号,后续命令中的{card}字段。
查看当前VD列表
./arcconf list {card}
记录Logical device information中的ID字段,虚拟磁盘编号,后续命令中的{vd}字段。
查看当前PD列表
./arcconf list {card}
记录Physical device information中的Physical ID、Lun ID字段,分别为物理磁盘的框号和槽位号,后续命令中的{enc_id}、{slot_id}字段。
查看当前VD详细信息
./arcconfgetconfig{card}ld
查看当前PD详细信息
./arcconfgetconfig{card}pd
删除VD
./arcconf delete {card} logicaldrive {vd} noprompt
创建VD
./arcconf create {card} logicaldrive {size/max} {raid_level} {enc_id} {slot_id} ...
VD扩容
./arcconf modify {card} from {vd} to {size} {raid_level} {enc_id} {slot_id} ...
RAID组扩盘
./arcconf modify {card} array {raid_id} expand {enc_id} {slot_id} ...
JBOD
./arcconf uninit; ./arcconf uninit {card} {enc_id} {slot_id} noprompt
d. 华为卡相关操作
暂未对外发布工具下载链接。
查卡
hiraidadm show allctrl
查看当前VD
hiraidadm c{card} show vdlist; hiraidadm c{card}:vd{vd} show
查看当前PD
hiraidadm c{card} show pdlist; hiraidadm c{card}:e{enc_id}:s{slot_id} show
删除VD
hiraidadm c{card}:vd{vd} delete [noprompt]
创建VD
hiraidadm c{card} create vd raid{raid_level} name=vd0 size={size/max_left} drives={enc_id}:{slot_id}
VD扩容
hiraidadm /c{card}/v{vd} expand size={size}
RAID组扩盘
暂无。
JBOD
hiraidadm /c{card} set jbod={rawdrive|off}; hiraidadm c{card}:e{enc_id}:s{slot_id} set jbod