<commit_before>---
layout: post
title: RAID小结
---
**独立硬盘冗余阵列**（RAID, Redundant Array of Independent Disks），旧称**廉价磁盘冗余阵列**（Redundant Array of Inexpensive Disks），简称磁盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来，成为一个硬盘阵列组，使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同，RAID比单颗硬盘有以下一个或多个方面的好处：增强数据集成度，增强容错功能，增加处理量或容量。另外，磁盘阵列对于电脑来说，看起来就像一个单独的硬盘或逻辑存储单元。分为RAID-0，RAID-1，RAID-1E，RAID-5，RAID-6，RAID-7，RAID-10，RAID-50，RAID-60。

```
以上摘自wiki中文
```

##RAID0
所有硬盘并联，读写并行处理，在所有RAID中具有最快的读写速度。任何一块一盘离线，所有数据都无法恢复。

##RAID1
所有硬盘互为镜像，理论上读取速度与硬盘数线性相关，写入速度与单块硬盘速度相当。只要有一块硬盘在线就可以正常工作。在所有RAID中安全性最高。硬盘越多，存储空间越浪费，在所有RAID中空间利用率最低。

##RAID2/RAID3/RAID4
较少实际应用，主要用于研究领域。原理与RAID5类似，性能不如RAID5.

##RAID5
![alt text](https://raw.githubusercontent.com/nfhy/nfhy.github.io/master/images/raidAbout/raid5.png "RAID5")
RAID5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。每块硬盘有一个奇偶校验区，最少需要三块硬盘。对于阵列中的硬盘A、B、C，每个硬盘分三个区：A1、A2、A3、B1、B2、B3、C1、C2、C3,其中A3、B2、C1为奇偶校验区，A3=B3⊕C3，B2=A2⊕C2,C1=A1⊕B1，根据异或操作的特性，若a⊕b=c则a=b⊕c且b=a⊕c，当硬盘B故障时，只需计算B3=A3⊕C3、B1=A1⊕C1，B2=A2⊕C2即可完成数据恢复。可以理解为，当一块硬盘故障时，需要解n个一元一次异或方程进行数据恢复。

|   |A       |B       |C        |
| --- | ---    | ---     | ---      |
|1  |A1(data)|B1(data)|C1(A1⊕B1)|
|2  |A2(data)|B2(A2⊕C2)|C2(data)|
|3  |A3(B3⊕C3)|B3(data)|C3(data)|

##RAID6
![alt text](https://raw.githubusercontent.com/nfhy/nfhy.github.io/master/images/raidAbout/raid6.png "RAID6")
与RAID5类似，但每块硬盘有两个独立的校验区，最少需要四块硬盘。两个校验区PQ，P与RAID5类似，进行异或运算；Q需要应用场理论（Galois Filed伽罗华域，尝试去查询这方面的资料，但是要求数学专业知识，本人数学知识有限，文档读起来非常吃力，没有理解）。与RAID5类似，可以理解为当有两块硬盘故障时，需要解n个二元一次异或方程组进行数据恢复。

##RAID10
先做镜像再做分区，只要每个分区中至少有一块硬盘在线就可以正常工作，可靠性高。

##RAID01
先做分区再做镜像，相当于多个RAID0阵列做镜像，只要一个RAID0中有一块硬盘故障，整个RAID0就会失效，相对于RAID10可靠性低。

##RAID50
先做RAID5再做RAID0，每个RAID5分区都允许至少一块硬盘故障，当有一个RAID5分区中有至少两块硬盘故障时，整个RAID50将会失效。

##RAID60
先做RAID6再做RAID0，每个RAID6分区都允许至少两块硬盘故障，当有一个RAID6分区中有至少三块硬盘故障时，整个RAID60将会失效。

 

|RAID等级|最少硬盘|空间效率|最大容错|阵列失效率|读取性能|写入性能|安全性|目的|
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|0|2|1|0|1-(1-r)^n|n|n|无|追求最大容量，最快速度|
|1|2|1/n|n-1|rn|n|1|最高，至少1块硬盘在线即可|追求最高数据安全|
|1+0|4|n/2|n/2| |n|n/2|每个分组至少1块硬盘在线|兼具10的优点，浪费存储空间|
|5|3|1-1/n|1|1-nr(1-r)^(n-1)-(1-r)^n|n-1|n-1|允许1块硬盘离线|追求最大容量最小预算|
|6|4|1-2/n|2|1-n(n-1)r^2(1-r)^(n-2)-nr(1-r)^(n-1)-(1-r)^n|n-2|n-2|允许2块硬盘离线|同RAID5，更安全|
|5+0|6|(1-1/n)/2| | |n-m|n/m-1|每个分组至多1块硬盘离线|比RAID5性能更高，但每个分组浪费1块硬盘|
|6+0|8|(1-2/n)/2| | |n-2m|n/m-2|每个区块至多2块硬盘离线|同5+0，安全性更高，但每个分组浪费2块硬盘|

关于RAID选择建议：

*	如果存储空间足够，选择RAID1+0
<commit_msg>modify raid2<commit_after>---
layout: post
title: RAID小结
---
**独立硬盘冗余阵列**（RAID, Redundant Array of Independent Disks），旧称**廉价磁盘冗余阵列**（Redundant Array of Inexpensive Disks），简称磁盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来，成为一个硬盘阵列组，使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同，RAID比单颗硬盘有以下一个或多个方面的好处：增强数据集成度，增强容错功能，增加处理量或容量。另外，磁盘阵列对于电脑来说，看起来就像一个单独的硬盘或逻辑存储单元。分为RAID-0，RAID-1，RAID-1E，RAID-5，RAID-6，RAID-7，RAID-10，RAID-50，RAID-60。

```
以上摘自wiki中文
```

##RAID0
所有硬盘并联，读写并行处理，在所有RAID中具有最快的读写速度。任何一块一盘离线，所有数据都无法恢复。

##RAID1
所有硬盘互为镜像，理论上读取速度与硬盘数线性相关，写入速度与单块硬盘速度相当。只要有一块硬盘在线就可以正常工作。在所有RAID中安全性最高。硬盘越多，存储空间越浪费，在所有RAID中空间利用率最低。

##RAID2/RAID3/RAID4
较少实际应用，主要用于研究领域。原理与RAID5类似，性能不如RAID5.

##RAID5
![alt text](https://raw.githubusercontent.com/nfhy/nfhy.github.io/master/images/raidAbout/raid5.png "RAID5")
RAID5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。每块硬盘有一个奇偶校验区，最少需要三块硬盘。对于阵列中的硬盘A、B、C，每个硬盘分三个区：A1、A2、A3、B1、B2、B3、C1、C2、C3,其中A3、B2、C1为奇偶校验区，A3=B3⊕C3，B2=A2⊕C2,C1=A1⊕B1，根据异或操作的特性，若a⊕b=c则a=b⊕c且b=a⊕c，当硬盘B故障时，只需计算B3=A3⊕C3、B1=A1⊕C1，B2=A2⊕C2即可完成数据恢复。可以理解为，当一块硬盘故障时，需要解n个一元一次异或方程进行数据恢复。

|\\|A|B|C|
|:---:|:---:|:---:|:---:|
|1|A1(data)|B1(data)|C1(A1⊕B1)|
|2|A2(data)|B2(A2⊕C2)|C2(data)|
|3|A3(B3⊕C3)|B3(data)|C3(data)|

##RAID6
![alt text](https://raw.githubusercontent.com/nfhy/nfhy.github.io/master/images/raidAbout/raid6.png "RAID6")
与RAID5类似，但每块硬盘有两个独立的校验区，最少需要四块硬盘。两个校验区PQ，P与RAID5类似，进行异或运算；Q需要应用场理论（Galois Filed伽罗华域，尝试去查询这方面的资料，但是要求数学专业知识，本人数学知识有限，文档读起来非常吃力，没有理解）。与RAID5类似，可以理解为当有两块硬盘故障时，需要解n个二元一次异或方程组进行数据恢复。

##RAID10
先做镜像再做分区，只要每个分区中至少有一块硬盘在线就可以正常工作，可靠性高。

##RAID01
先做分区再做镜像，相当于多个RAID0阵列做镜像，只要一个RAID0中有一块硬盘故障，整个RAID0就会失效，相对于RAID10可靠性低。

##RAID50
先做RAID5再做RAID0，每个RAID5分区都允许至少一块硬盘故障，当有一个RAID5分区中有至少两块硬盘故障时，整个RAID50将会失效。

##RAID60
先做RAID6再做RAID0，每个RAID6分区都允许至少两块硬盘故障，当有一个RAID6分区中有至少三块硬盘故障时，整个RAID60将会失效。

 

|RAID等级|最少硬盘|空间效率|最大容错|阵列失效率|读取性能|写入性能|安全性|目的|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|0|2|1|0|1-(1-r)^n|n|n|无|追求最大容量，最快速度|
|1|2|1/n|n-1|rn|n|1|最高，至少1块硬盘在线即可|追求最高数据安全|
|1+0|4|n/2|n/2| |n|n/2|每个分组至少1块硬盘在线|兼具10的优点，浪费存储空间|
|5|3|1-1/n|1|1-nr(1-r)^(n-1)-(1-r)^n|n-1|n-1|允许1块硬盘离线|追求最大容量最小预算|
|6|4|1-2/n|2|1-n(n-1)r^2(1-r)^(n-2)-nr(1-r)^(n-1)-(1-r)^n|n-2|n-2|允许2块硬盘离线|同RAID5，更安全|
|5+0|6|(1-1/n)/2| | |n-m|n/m-1|每个分组至多1块硬盘离线|比RAID5性能更高，但每个分组浪费1块硬盘|
|6+0|8|(1-2/n)/2| | |n-2m|n/m-2|每个区块至多2块硬盘离线|同5+0，安全性更高，但每个分组浪费2块硬盘|

关于RAID选择建议：

*	如果存储空间足够，选择RAID1+0

{'fraction_non_alphanumeric': 0.21465295629820053, 'fraction_numerical': 0.07562125107112254, 'mean_word_length': 8.587268993839835, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2858784', 'n_tokens_mistral': 3863, 'n_tokens_neox': 4486, 'n_words': 122}