RAID简介与设置
简介
RAID全称独立冗余磁盘阵列,主要功能是把多个独立的物理盘按照不同的方式组合形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和备份技术。
上面所说的“不同的方式”也可以叫不同的RAID级别,也就是根据RAID级别组合,不同的RAID级别的组合方式不一样。常见的RAID级别包括:RAID0、RAID1、RAID5、RAID6、RAID10等。
可以做完RAID把系统OS放到RAID里,所以RAID还是很重要的。
命令
关于RAID操作有以下常用命令:
清除RAID:
1 |
|
LD表示RAID组序号,即下文硬盘Drive’s postion的DiskGroup字段值,Adapter表示当前使用的是哪个RAID适配器,一般一台机器上只有一个适配器,执行MegaCli64 -PDList -aALL
命令输出的第一行Adapter #0
可以看到当前机器的RAID适配器是0,这个地方LD传0,Adapter传0。
创建RAID
1 |
|
Raid参数表示RAID类型,如RAID0,或者RAID1,或者RAID2,slot表示使用的磁盘的槽位,Adapter与上文同意。
比如可以执行如下命令:
1 |
|
设置硬盘状态为good
1 |
|
各参数与上文同意。
###设置硬盘状态为JBOD
1 |
|
实际例子
下面举个实际运行的例子,查看设置RAID前后硬盘的状态变化。
设置RAID前,查看硬盘状态:
1 |
|
运行结果为:
1 |
|
下面设置这两块盘,使用RAID1,运行
1 |
|
再次通过MegaCli64 -PDList -aALL
查看结果,可以看到新的结果与旧的结果的不同:
这两块盘的Firmware state都由JBOD
变成了Online, Spun Up
Drive’s postion字段的值一个是:Drive's postion: DiskGroup: 0, Span: 0, Arm: 1
,一个是Drive's postion: DiskGroup: 0, Span: 0, Arm: 0
,DiskGroup表示在哪个RAID分组里
因为如果有多块硬盘的话,可以选择两块AB做RAID0,再选择不同的两块CD做RAID1或者RAID0,AB是属于同一个RAID组的,CD是属于同一个RAID组的,这是两个不同的RAID组。Drive’s postion字段里DiskGroup就表示银盘所属RAID组,可以看到这8:8和8:9这两块盘属于同一个RAID组,因为上述CfgLdAdd里就指定了[8:9,8:8]这两块盘要做一个RAID。注意如果要指定RAID组一定要在执行一个CfgLdAdd时把所有的硬盘都写入,每一行CfgLdAdd命令中的硬盘在一个RAID组里,下一行的指定的硬盘就在另一个RAID组了。
比如
1 |
|
操作后,8:8和8:9的Drive’s postion信息分别为DiskGroup: 0, Span: 0, Arm: 1
和DiskGroup: 0, Span: 0, Arm: 0
。再执行:
1 |
|
8:4和8:5的Drive’s postion信息分别为Drive's postion: DiskGroup: 1, Span: 0, Arm: 0
和Drive's postion: DiskGroup: 1, Span: 0, Arm: 1
,8:8 8:9和8:4 8:5的DiskGroup是不一样的,因为它们处于不同的RAID组。
RAID级别
不同RAID级别对硬盘数量的要求:
创建RAID0阵列,至少需要两块硬盘。
相关命令解析:
1MegaCli64 -CfgLdAdd –r0[8:8] -a0
这条命令尝试创建一个 RAID 0 阵列,指定的物理驱动器是
[8:8]
。在MegaCli64中,
[8:8]
不是指两块硬盘,而是指槽位号为8的硬盘。RAID 0 需要至少两块硬盘,但在这个命令中,只指定了一个硬盘的槽位号,因此它实际上不是有效的 RAID 0 配置。如果只有一块硬盘,这个命令可能会创建一个虚拟的 RAID 0 阵列,但是它不会提供任何冗余性或性能优势,因为 RAID 0 至少需要两块硬盘才能发挥作用。要创建一个有效的 RAID 0 阵列,你需要至少两块硬盘,并在命令中指定它们的槽位号。比如:
1MegaCli64 -CfgLdAdd -r0[8:8,9:9] -a0
这个命令会创建一个 RAID 0 阵列,使用槽位号为8和9的两块硬盘。
RAID1要求硬盘数量为偶数,通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据
RAID5要求硬盘数量大于等于3,数据条带形式分布,以奇偶校验作冗余
RAID6要求硬盘数量大于等于4
RAID10要求硬盘数量大于等于4且为偶数,也叫RAID1+0
设置RAID的方法
如果硬盘已经有了RAID的话,需要清除之前的RAID
1 |
|
标记硬盘状态为Good,表示磁盘空闲
设置磁盘RAID
此外还可以设置硬盘的状态为JBOD,即Just a Bunch Of Disks,当一个磁盘被设置为JBOD状态时,它不会被包含在任何RAID阵列中,而是被视为单独的独立磁盘。在JBOD状态下,每个磁盘都可以单独访问,并且没有数据被分配或复制到其他磁盘上。这意味着如果一个磁盘出现故障,它不会影响其他磁盘上的数据。
硬盘空间
硬盘空间分为两类,一种是JBOD阵列,一种是RAID阵列。JBOD阵列里的多个硬盘互相独立。RAID阵列里可能有多个RAID组,一个RAID组里有多块硬盘。
1 |
|
硬盘状态
硬盘状态即Firmware state字段有以下可能值:
Online, Spun Up:表示该盘已经被进行了RAID操作,其Drive’s postion字段可以查看该盘的所在RAID阵列。
Unconfigured(good), Spun Up:表示该状态良好,可以对该盘进行RAID操作
JBOD:盘在JBOD阵列中。
如果当前硬盘状态就是要设置的状态,那么可以不用执行设置状态的命令了,因为是重复设置了,否则可能会报错。
参考