独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),利用虚拟化技术将多个磁盘组合起来,成为一个多个硬盘的阵列,从而提升效率或者资料冗余。
根据RAID的层级不同,资料会以多种形式放置在多个磁盘上。
RAID层级
RAID的层级,常用的包括:RAID0、RAID1、RAID5、RAID10。
RAID 0 (stripe)
raid 0 的方式是将原始数据按块分别存储在不同的磁盘上。这种方式目前不推荐使用,因为一旦某一块磁盘损坏,将会使得该块磁盘保存的数据丢失。
RAID 1 (mirror)
raid 1 的方式比 raid 0 要好一些,将原始数据拷贝成多份,存储在不同的磁盘上。这样做的好处在于,当一块磁盘损坏了,另一块磁盘仍可以提供数据。
raid 1 也有缺点,数据重复,磁盘利用率低。
RAID 5 (奇偶校验)
raid 5 的方式:
- 将原始数据分成多份,分别存储在不同的磁盘上。
- 必须要有三块或以上的物理磁盘。
- 存储的数据量为 (n-1)/n * 磁盘总量。
- 假如有四块盘,前三块存储了A、B、C三份数据,第四块的内容则使用奇偶校验的方式进行计算得到。
- 不做热备份的情况下,允许损坏一块磁盘,损坏的一块的内容可以通过其他三块盘计算得到。
- 热备盘的作用是,当其中的一块磁盘损坏时,能够通过奇偶校验的方式,将数据还原到热备盘上,用热备盘替换损坏的磁盘工作。
- 损坏两块磁盘就不能恢复数据了。
- 每块盘都可以存储奇偶校验的内容。
RAID 10
raid 10 的架构如上图,底层通过 raid 1 将数据进行镜像备份,上一层通过 raid 0 将原始数据分别分发给不同的raid。
这么做能够有效的防止坏盘导致数据的丢失问题。
PS: raid可以通过不同的组合方式组成新的磁盘阵列。
RAID信息查看
不同的产商提供的工具有所不同,大环境下,使用的比较多的是 storcli64 工具。
下面主要介绍如何查看raid相关的信息。
storcli64 show
可以查看raid的信息,可以分成几个等级:
- /cx - Controller specific commands
- /ex - Enclosure specific commands
- /sx - Slot/PD specific commands
- /vx - Virtual drive specific commands
- /dx - Disk group specific commands
- /fx - Foreign configuration specific commands
- /px - Phy specific commands
- /bbu - Battery Backup Unit related commands
可以通过 storcli64 show
查看raid的基本信息,主要是控制器相关。
1
2
3
4
5
6
7
8
| System Overview :
===============
---------------------------------------------------------------
Ctl Model Ports PDs DGs DNOpt VDs VNOpt BBU sPR DS EHS ASOs
---------------------------------------------------------------
0 9271-8i 8 12 2 0 2 0 Opt On 1&2 Y 3
---------------------------------------------------------------
|
上面的内容是输出的结果,可以看到该设备只有一个控制器,物理磁盘作为raid的有12块,raid的数量有2个。
通过 storcli64 /c0 show
查看对应的控制器的信息,如果有两块,第二块通过 /c1
的方式,以此类推。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| TOPOLOGY :
========
--------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type State BT Size PDC PI SED DS3 FSpace
--------------------------------------------------------------------------
0 - - - - RAID5 Optl N 2.181 TB enbl N N dflt N
0 0 - - - RAID5 Optl N 2.181 TB enbl N N dflt N
0 0 0 8:0 9 DRIVE Onln N 744.687 GB enbl N N dflt -
0 0 1 8:1 12 DRIVE Onln N 744.687 GB enbl N N dflt -
0 0 2 8:2 17 DRIVE Onln N 744.687 GB enbl N N dflt -
0 0 3 8:3 11 DRIVE Onln N 744.687 GB enbl N N dflt -
1 - - - - RAID5 Optl N 5.089 TB enbl N N dflt N
1 0 - - - RAID5 Optl N 5.089 TB enbl N N dflt N
1 0 0 8:4 16 DRIVE Onln N 744.687 GB enbl N N dflt -
1 0 1 8:5 19 DRIVE Onln N 744.687 GB enbl N N dflt -
1 0 2 8:6 10 DRIVE Onln N 744.687 GB enbl N N dflt -
1 0 3 8:7 14 DRIVE Onln N 744.687 GB enbl N N dflt -
1 0 4 8:8 13 DRIVE Onln N 744.687 GB enbl N N dflt -
1 0 5 8:9 18 DRIVE Onln N 744.687 GB enbl N N dflt -
1 0 6 8:10 20 DRIVE Onln N 744.687 GB enbl N N dflt -
1 0 7 8:11 15 DRIVE Onln N 744.687 GB enbl N N dflt -
--------------------------------------------------------------------------
|
结果会显示出控制器 /c0
下的详细信息,包括 TOPOLOGY(拓扑结构)、VD LIST、PD LIST、BBU_Info 等。
如果觉得结果很难处理的话,可以通过在命令的末尾添加 j 来输出json格式的结果。如 storcli64 /c0 show j
。
1
2
3
4
5
6
7
8
9
10
11
12
13
| {
"Controllers":[
{
"Command Status" : {
"Controller" : 0,
"Status" : "Success",
"Description" : "None"
},
"Response Data" : {
...
}
}]
}
|
通过组合不同等级的设备可以单独查看各设备的信息。例如 /c0/v0
即为查看 0号控制器下0号raid的信息。命令为 storcli64 /c0/v0 show
。
如果项查看所有的信息,可以通过 all 来替换索引来实现。如 storcli64 /c0/vall show
为查看 0号控制器下所有raid的信息。
参考
Author
Alfons
LastMod
2019-06-12
License
Creative Commons BY-NC-ND 3.0