文章目录
- [HDD 为什么适合顺序大文件读写:从 RAID 5 到 RAID 50 的原理与性能分析](#HDD 为什么适合顺序大文件读写:从 RAID 5 到 RAID 50 的原理与性能分析)
- [一、HDD 为什么适合顺序大文件读写?](#一、HDD 为什么适合顺序大文件读写?)
-
- [1. HDD 的性能瓶颈主要来自"寻道"](#1. HDD 的性能瓶颈主要来自“寻道”)
- 二、顺序读取为什么快?
- 三、"大文件"到底有多大?
- [四、单块 HDD 的顺序速度](#四、单块 HDD 的顺序速度)
- [五、什么是 RAID?](#五、什么是 RAID?)
- [六、RAID 5 是什么?](#六、RAID 5 是什么?)
- [七、RAID 5 为什么可以容忍一块硬盘损坏?](#七、RAID 5 为什么可以容忍一块硬盘损坏?)
- [八、RAID 5 的容量怎么算?](#八、RAID 5 的容量怎么算?)
- [九、RAID 5 为什么可以提高读取速度?](#九、RAID 5 为什么可以提高读取速度?)
- [十、什么是 RAID 50?](#十、什么是 RAID 50?)
- [十一、为什么 RAID 50 比 RAID 5 更适合大量硬盘?](#十一、为什么 RAID 50 比 RAID 5 更适合大量硬盘?)
- [十二、RAID 50 的容量怎么算?](#十二、RAID 50 的容量怎么算?)
- [十三、RAID 50 为什么速度会变快?](#十三、RAID 50 为什么速度会变快?)
- [十四、为什么"10盘 ≈ 1000 MB/s"有可能?](#十四、为什么“10盘 ≈ 1000 MB/s”有可能?)
- [十五、MB/s 和 Mbit/s 不要混淆](#十五、MB/s 和 Mbit/s 不要混淆)
- [十六、RAID 50 的读取和写入有什么区别?](#十六、RAID 50 的读取和写入有什么区别?)
-
- [1. 顺序读取](#1. 顺序读取)
- [十七、RAID 50 的顺序写入](#十七、RAID 50 的顺序写入)
- [十八、RAID 5 的"小写入惩罚"](#十八、RAID 5 的“小写入惩罚”)
- 十九、为什么顺序大文件写入会好很多?
- [二十、RAID 50 的读取和写入可以简单理解成这样](#二十、RAID 50 的读取和写入可以简单理解成这样)
- [二十一、RAID 50 到底能坏几块硬盘?](#二十一、RAID 50 到底能坏几块硬盘?)
- [二十二、RAID 50 并不是"最多坏两块"](#二十二、RAID 50 并不是“最多坏两块”)
- [二十三、RAID 50 的故障情况](#二十三、RAID 50 的故障情况)
-
-
- [情况一:坏 1 块](#情况一:坏 1 块)
- [情况二:坏 2 块,分属不同 RAID 5](#情况二:坏 2 块,分属不同 RAID 5)
- [情况三:坏 2 块,属于同一个 RAID 5](#情况三:坏 2 块,属于同一个 RAID 5)
- [情况四:坏 3 块](#情况四:坏 3 块)
-
- [二十四、RAID 50 和 RAID 5 的区别](#二十四、RAID 50 和 RAID 5 的区别)
-
-
- [RAID 5](#RAID 5)
- [RAID 50](#RAID 50)
-
- [二十五、为什么 RAID 50 容量比 RAID 5 少?](#二十五、为什么 RAID 50 容量比 RAID 5 少?)
- [二十六、RAID 50、RAID 5、RAID 6 怎么选择?](#二十六、RAID 50、RAID 5、RAID 6 怎么选择?)
- [二十七、RAID 50 的真正优势是什么?](#二十七、RAID 50 的真正优势是什么?)
- [二十八、为什么 HDD + RAID 50 能做到"低成本高吞吐"?](#二十八、为什么 HDD + RAID 50 能做到“低成本高吞吐”?)
- 二十九、吞吐量和延迟是两个不同概念
- 三十、整个逻辑可以总结成一条链
- 三十一、核心结论
-
-
- [1. HDD 为什么适合顺序大文件?](#1. HDD 为什么适合顺序大文件?)
- [2. RAID 5 是什么?](#2. RAID 5 是什么?)
- [3. RAID 50 是什么?](#3. RAID 50 是什么?)
- [4. RAID 50 为什么快?](#4. RAID 50 为什么快?)
- [5. 为什么 10 盘可能达到约 1000 MB/s?](#5. 为什么 10 盘可能达到约 1000 MB/s?)
- [6. RAID 50 容量怎么算?](#6. RAID 50 容量怎么算?)
- [7. RAID 50 能坏几块?](#7. RAID 50 能坏几块?)
- [8. RAID 50 最适合什么?](#8. RAID 50 最适合什么?)
-
HDD 为什么适合顺序大文件读写:从 RAID 5 到 RAID 50 的原理与性能分析
在存储系统中,经常会看到这样的组合:
HDD + RAID 5 / RAID 50 + 顺序大文件读写
很多人会产生几个疑问:
- HDD 明明比 SSD 慢,为什么还适合大文件?
- RAID 5 到底是什么?
- RAID 50 为什么比单块硬盘快?
- 10 块 HDD 为什么有可能达到约 1000 MB/s?
- RAID 50 的读写速度一样吗?
- RAID 50 到底能用多少容量?
- RAID 50 坏几块硬盘还能正常工作?
理解这些问题,需要先从 HDD 的工作方式开始。
一、HDD 为什么适合顺序大文件读写?
1. HDD 的性能瓶颈主要来自"寻道"
HDD(Hard Disk Drive,机械硬盘)内部主要由:
- 磁盘盘片
- 磁头
- 主轴电机
- 磁道
组成。
数据存储在旋转的磁盘盘片上,磁头需要移动到目标磁道,然后等待盘片旋转到对应位置。
一次随机读取通常包含:
text
寻道
↓
等待盘片旋转
↓
读取数据
其中:
- 寻道时间:磁头移动到目标磁道
- 旋转延迟:等待目标数据转到磁头下面
- 传输时间:真正把数据读出来
因此,如果程序不断访问:
text
A位置
↓
B位置
↓
C位置
↓
D位置
而这些位置分散在磁盘不同区域,磁头就需要不断移动。
这就是 HDD 随机 IO 性能比较差的根本原因之一。
二、顺序读取为什么快?
假设一个文件在磁盘上连续存储:
text
磁盘:
[文件数据 1][文件数据 2][文件数据 3][文件数据 4][文件数据 5]
↓
磁头连续读取
磁头只需要移动到文件开始位置。
之后:
text
定位一次
↓
连续读取
↓
连续读取
↓
连续读取
↓
连续读取
不需要频繁寻道。
因此 HDD 的优势可以概括为:
HDD 不擅长大量随机访问,但非常擅长连续的大块数据传输。
这就是为什么 HDD 经常用于:
- 大文件存储
- 视频文件
- 镜像文件
- 备份文件
- 压缩包
- 数据归档
- 日志归档
- 数据集
等场景。
三、"大文件"到底有多大?
"大文件"并没有一个严格统一的标准。
这里的"大",更多是相对于 IO 访问方式而言。
例如:
text
4 KB
16 KB
64 KB
1 MB
100 MB
1 GB
10 GB
这些数据在不同场景下意义不同。
对于 HDD 来说,真正重要的不是简单判断:
"这个文件是不是超过 1 GB?"
而是:
读取这个文件时,是不是能够进行连续的大块读取?
例如:
text
顺序读取:
0 MB
↓
1 MB
↓
2 MB
↓
3 MB
↓
4 MB
即使文件只有几百 MB,也可以很好地发挥 HDD 的顺序读取能力。
反过来,一个几 GB 的文件,如果程序不断随机访问:
text
1 GB位置
↓
100 MB位置
↓
7 GB位置
↓
500 MB位置
↓
3 GB位置
依然可能表现很差。
所以:
对于 HDD,"顺序"往往比单纯的"文件大小"更加重要。
四、单块 HDD 的顺序速度
普通机械硬盘的顺序读写速度通常受以下因素影响:
- 硬盘转速
- 盘片密度
- 磁道位置
- 硬盘型号
- 缓存
- 接口
- 文件系统
- IO 队列
- RAID 控制器
例如某块 HDD 的顺序读取速度:
text
150 MB/s
另一块可能:
text
200 MB/s
更高性能的 HDD 可能达到:
text
250 MB/s+
因此不能简单认为:
HDD = 固定 150 MB/s
实际速度需要以具体硬盘型号和测试条件为准。
五、什么是 RAID?
RAID 是:
Redundant Array of Independent Disks
即:
独立磁盘冗余阵列
简单来说,就是:
把多块物理硬盘组合起来,让操作系统把它们作为一个逻辑存储系统使用。
例如:
text
HDD 1
HDD 2
HDD 3
HDD 4
HDD 5
通过 RAID,可以把它们组织成:
text
RAID
│
┌────────┼────────┐
↓ ↓ ↓
HDD1 HDD2 HDD3 ...
RAID 的目标主要有三个:
- 提高性能
- 提高可靠性
- 提高容量利用方式
不同 RAID 级别侧重点不同。
六、RAID 5 是什么?
RAID 5 是一种:
带分布式校验信息的磁盘阵列
它至少需要:
3 块硬盘
RAID 5 的核心思想是:
数据分条存储,同时把校验信息分布到不同硬盘上。
例如有 4 块硬盘:
text
HDD1 HDD2 HDD3 HDD4
───────────────────────
D1 D2 D3 P
D4 D5 P D6
D7 P D8 D9
P D10 D11 D12
其中:
text
D = Data 数据
P = Parity 校验
校验信息不会固定放在某一块硬盘,而是分布在整个阵列中。
七、RAID 5 为什么可以容忍一块硬盘损坏?
RAID 5 使用的是类似 XOR 的校验机制。
例如:
text
D1 XOR D2 XOR D3 = P
如果:
text
D1
D2
P
还存在,而:
text
D3
损坏,那么:
text
D3 = D1 XOR D2 XOR P
因此可以恢复丢失的数据。
这意味着:
一个 RAID 5 阵列可以容忍一块硬盘故障。
例如:
text
5块硬盘
HDD1 正常
HDD2 正常
HDD3 正常
HDD4 故障
HDD5 正常
阵列仍然可以工作。
但如果第二块硬盘也坏了:
text
HDD1 正常
HDD2 故障
HDD3 正常
HDD4 故障
HDD5 正常
通常整个 RAID 5 阵列就无法继续保持数据完整性。
因此:
RAID 5 只能容忍每个 RAID 5 子阵列中的一块硬盘故障。
八、RAID 5 的容量怎么算?
假设:
text
N = 硬盘数量
D = 单块硬盘容量
RAID 5 的可用容量大约为:
text
(N - 1) × D
例如:
text
4 × 10 TB
组成 RAID 5:
text
(4 - 1) × 10 TB
= 30 TB
因此:
text
物理容量:40 TB
可用容量:30 TB
相当于拿出约一块硬盘容量用于校验。
九、RAID 5 为什么可以提高读取速度?
这是 RAID 的核心优势之一。
假设有 4 块 HDD:
text
HDD1 HDD2 HDD3 HDD4
数据不是全部写到 HDD1,而是被拆成多个数据块:
text
数据:
D1 D2 D3 D4 D5 D6 D7 D8
然后分布到不同硬盘。
例如:
text
HDD1 → D1 D5
HDD2 → D2 D6
HDD3 → D3 D7
HDD4 → D4 D8
读取时:
text
RAID
│
┌──────┼──────┐
↓ ↓ ↓
HDD1 HDD2 HDD3 ...
│ │ │
└──────┴──────┘
↓
合并数据
多个硬盘可以并行读取。
所以理论上:
text
单盘:
150 MB/s
多盘并行:
text
150 + 150 + 150 + 150
≈ 600 MB/s
实际当然不会这么理想,因为还存在:
- RAID 控制器开销
- 总线带宽
- IO 调度
- 文件系统开销
- RAID 实现效率
- 硬盘实际速度差异
但总体方向是:
RAID 可以通过多个硬盘并行工作,提高顺序吞吐量。
十、什么是 RAID 50?
RAID 50 可以理解为:
RAID 5 + RAID 0
也就是:
text
RAID 5
+
RAID 0
但实际结构更准确地说是:
多个 RAID 5 子阵列,再通过 RAID 0 把这些 RAID 5 子阵列进行条带化。
例如有 10 块硬盘。
可以拆成两个 RAID 5:
text
RAID 50
│
┌──────┴──────┐
↓ ↓
RAID 5 RAID 5
5块硬盘 5块硬盘
具体:
text
RAID 5 Group A
HDD1
HDD2
HDD3
HDD4
HDD5
RAID 5 Group B
HDD6
HDD7
HDD8
HDD9
HDD10
然后:
text
RAID 50
│
┌────────┴────────┐
↓ ↓
RAID 5 Group A RAID 5 Group B
│ │
└────────┬────────┘
↓
RAID 0 条带化
十一、为什么 RAID 50 比 RAID 5 更适合大量硬盘?
假设有 10 块 HDD。
如果全部组成一个 RAID 5:
text
10 HDD
↓
一个 RAID 5
理论可用容量:
text
(10 - 1) × D
= 9D
但整个阵列只有:
一块硬盘的故障容忍能力。
而且硬盘数量越多,RAID 5 重建时需要读取大量数据,重建时间和风险也会增加。
如果使用 RAID 50:
text
5 HDD + 5 HDD
变成:
text
RAID 5 A
+
RAID 5 B
然后 RAID 0 条带化。
这样可以同时获得:
- RAID 5 的冗余
- RAID 0 的并行性能
- 比单个大型 RAID 5 更合理的重建范围
十二、RAID 50 的容量怎么算?
假设:
text
10块硬盘
每块10 TB
组成:
text
RAID 5 × 2
每个 RAID 5:
text
(5 - 1) × 10 TB
= 40 TB
两个 RAID 5:
text
40 + 40
= 80 TB
所以:
10 × 10 TB HDD 组成 RAID 50,可用容量约为 80 TB。
通用公式:
text
可用容量 = (N - G) × D
其中:
text
N = 总硬盘数量
G = RAID 5 子阵列数量
D = 单块硬盘容量
例如:
| 硬盘数量 | RAID 5 分组 | 单盘容量 | RAID 50 可用容量 |
|---|---|---|---|
| 6 | 2 × 3盘 | 10 TB | 40 TB |
| 8 | 2 × 4盘 | 10 TB | 60 TB |
| 10 | 2 × 5盘 | 10 TB | 80 TB |
| 12 | 2 × 6盘 | 10 TB | 100 TB |
| 12 | 3 × 4盘 | 10 TB | 90 TB |
可以看到:
RAID 50 的容量不仅取决于硬盘数量,还取决于 RAID 5 的分组方式。
十三、RAID 50 为什么速度会变快?
这是 RAID 50 最值得理解的地方。
假设:
text
10块 HDD
每块顺序读取约 150 MB/s
单块硬盘:
text
≈ 150 MB/s
如果大量数据可以被 RAID 条带化并行读取:
text
HDD1 → 150 MB/s
HDD2 → 150 MB/s
HDD3 → 150 MB/s
HDD4 → 150 MB/s
...
理论上多个硬盘可以同时工作。
因此整体吞吐量可能达到:
text
数百 MB/s
甚至:
text
接近 1 GB/s
这就是 RAID 能够提高吞吐量的本质:
不是让单块 HDD 变快了,而是让多块 HDD 同时工作。
十四、为什么"10盘 ≈ 1000 MB/s"有可能?
这个说法不能理解成:
10 块硬盘一定等于 1000 MB/s。
它只是一个合理的数量级估算。
假设:
text
单块 HDD 顺序读取 ≈ 150 MB/s
10 块:
text
10 × 150
= 1500 MB/s
考虑 RAID、控制器、总线、文件系统等开销之后:
text
1500 MB/s
↓
实际可能只有
1000~1300 MB/s
因此:
10 块 HDD 的 RAID 阵列达到约 1000 MB/s 的顺序读取吞吐量,是完全有可能的。
但前提是整个链路不能存在严重瓶颈。
例如:
text
10 × HDD
↓
RAID Controller
↓
PCIe / HBA
↓
服务器
↓
网络
任何一层速度不足,最终吞吐量都会下降。
例如存储阵列可以:
text
1200 MB/s
但是网络只有:
text
1 Gbit/s
那么网络实际传输能力大约只有:
text
125 MB/s
左右,存储阵列再快也没有意义。
十五、MB/s 和 Mbit/s 不要混淆
这是存储系统中非常容易搞错的一点。
B = Byte b = bit
所以:
text
1 Byte = 8 bit
例如:
text
1 Gbit/s
换算成字节:
text
1 Gbit/s ÷ 8
≈ 125 MB/s
理论上:
text
1 Gbit/s ≈ 125 MB/s
10 Gbit/s ≈ 1250 MB/s
所以:
10 Gbit/s 网络的理论带宽约为 1250 MB/s。
而存储阵列如果能够达到:
text
1000 MB/s
那么从数量级上看,10GbE 网络已经比较匹配。
不过实际网络传输还要考虑协议、TCP/IP、SMB/NFS、S3 等协议栈的开销。
十六、RAID 50 的读取和写入有什么区别?
这是另一个非常重要的问题。
1. 顺序读取
RAID 50 对顺序读取通常非常有优势。
例如:
text
大文件
↓
拆分成多个数据块
↓
多个 RAID 5 子阵列
↓
多个 HDD 并行读取
↓
合并
↓
输出连续数据
因此:
RAID 50 的顺序读取吞吐量通常可以非常高。
十七、RAID 50 的顺序写入
写入相对复杂。
因为 RAID 5 不仅要写数据,还需要维护:
Parity 校验数据
例如:
text
数据:
D1
D2
D3
校验:
P
写入数据发生变化时:
text
D2 → 新D2
对应的校验:
text
P
也必须更新。
所以 RAID 5 写入存在额外的计算和 IO 操作。
十八、RAID 5 的"小写入惩罚"
RAID 5 最经典的问题就是:
Small Write Penalty(小写入惩罚)
对于一个较小的数据更新,控制器可能需要:
text
读取旧数据
↓
读取旧 Parity
↓
计算新的 Parity
↓
写入新数据
↓
写入新 Parity
也就是:
text
Read
↓
Modify
↓
Write
因此随机小写入对 RAID 5 非常不友好。
十九、为什么顺序大文件写入会好很多?
如果连续写入大量数据:
text
D1 D2 D3 D4 D5 D6 D7 D8 ...
RAID 控制器可以把数据组织成完整的条带:
text
完整 Stripe
────────────────────
Data Data Data Data
Data Data Data Data
Parity
────────────────────
这样可以减少频繁的:
text
读取旧数据
读取旧校验
修改
重新写入
因此:
RAID 5/50 通常更喜欢大块、连续、顺序写入,而不是大量随机小写入。
二十、RAID 50 的读取和写入可以简单理解成这样
| 场景 | RAID 50 表现 |
|---|---|
| 顺序大文件读取 | 很好 |
| 顺序大文件写入 | 较好 |
| 随机读取 | 一般到较好,取决于 RAID 配置和工作负载 |
| 随机小写入 | 相对较差 |
| 大量连续数据 | 非常适合 |
| 大量随机小 IO | 不属于 RAID 50 的优势场景 |
所以 RAID 50 的核心优势可以概括为:
高吞吐 + 一定的冗余能力。
二十一、RAID 50 到底能坏几块硬盘?
这是 RAID 50 容灾能力中最容易产生误解的地方。
假设:
text
RAID 5 A:
HDD1
HDD2
HDD3
HDD4
HDD5
RAID 5 B:
HDD6
HDD7
HDD8
HDD9
HDD10
每一个 RAID 5 可以容忍:
text
1块硬盘故障
所以:
text
HDD1 故障
+
HDD6 故障
仍然可以正常工作。
因为:
text
RAID 5 A → 坏1块
RAID 5 B → 坏1块
两个子阵列都还能工作。
二十二、RAID 50 并不是"最多坏两块"
这是必须特别强调的。
例如:
text
HDD1 故障
HDD2 故障
虽然也是:
text
2块硬盘故障
但它们属于同一个 RAID 5:
text
RAID 5 A:
HDD1 ❌
HDD2 ❌
HDD3
HDD4
HDD5
此时:
RAID 5 A 已经无法恢复。
因此 RAID 50 的容灾能力取决于:
坏盘是不是集中在同一个 RAID 5 子阵列。
二十三、RAID 50 的故障情况
以:2 × 5盘 RAID 5为例。
情况一:坏 1 块
text
RAID 5 A:1 坏
RAID 5 B:0 坏
结果:
text
正常
情况二:坏 2 块,分属不同 RAID 5
text
RAID 5 A:1 坏
RAID 5 B:1 坏
结果:
text
正常
情况三:坏 2 块,属于同一个 RAID 5
text
RAID 5 A:2 坏
RAID 5 B:0 坏
结果:
text
RAID 50 阵列失效
情况四:坏 3 块
如果:
text
RAID 5 A:1 坏
RAID 5 B:2 坏
那么:
text
RAID 5 B
失效。
因此整个 RAID 50 也会失效。
所以 RAID 50 的特点是:
最少可以容忍 1 块硬盘故障,最多可能容忍"每个 RAID 5 子阵列各坏 1 块",但不是固定的最大故障盘数量。
二十四、RAID 50 和 RAID 5 的区别
假设都是 10 块 10 TB HDD。
RAID 5
text
10 × 10 TB
↓
RAID 5
↓
90 TB 可用
容灾:
text
整个阵列只能容忍 1 块硬盘故障
RAID 50
text
5 × 10 TB → RAID 5
5 × 10 TB → RAID 5
↓
RAID 0
可用容量:
text
40 TB + 40 TB
= 80 TB
容灾:
text
每个 RAID 5 子阵列可以容忍 1 块
例如:
text
A坏1块
B坏1块
仍然正常
二十五、为什么 RAID 50 容量比 RAID 5 少?
看起来 RAID 50 也是 RAID 5,为什么:
text
RAID 5:90 TB
RAID 50:80 TB
原因是 RAID 50 有多个 RAID 5 子阵列。
10 块盘:
text
一个 RAID 5:10 - 1 = 9
可用:9D
而 RAID 50:
text
5盘 RAID 5:5 - 1 = 4D
5盘 RAID 5:5 - 1 = 4D
总计:4D + 4D = 8D
所以:
RAID 50 用更多的校验空间换取更好的分组结构、并行性能和故障隔离能力。
二十六、RAID 50、RAID 5、RAID 6 怎么选择?
可以简单理解:
| RAID | 最少硬盘 | 容量 | 容灾 | 性能特点 |
|---|---|---|---|---|
| RAID 5 | 3 | N-1 | 1盘 | 读取好,写入有校验开销 |
| RAID 6 | 4 | N-2 | 2盘 | 容灾更强,写入开销更大 |
| RAID 50 | 6 | N-G | 每组1盘 | 读取和顺序吞吐较好 |
| RAID 10 | 4 | 约50% | 取决于镜像分组 | 读写都很好,随机 IO 优秀 |
其中:
text
N = 总硬盘数量
G = RAID 5 子阵列数量
二十七、RAID 50 的真正优势是什么?
RAID 50 并不是单纯为了"把容量变大"。
它实际上是在几个目标之间取得平衡:
text
RAID 50
│
┌───────────┼───────────┐
↓ ↓ ↓
性能 容灾 容量
│ │ │
多盘并行 RAID 5 较高利用率
│ │ │
└───────────┼───────────┘
↓
综合平衡
尤其是顺序大文件场景:
text
大文件
↓
连续数据块
↓
RAID 条带
↓
多个 HDD 并行
↓
高吞吐
这正好利用了 HDD 最擅长的:
顺序数据传输能力。
二十八、为什么 HDD + RAID 50 能做到"低成本高吞吐"?
单块 HDD 的问题是:单盘速度有限
但 HDD 的优势是:
text
容量大
价格相对低
顺序吞吐能力不错
RAID 50 则利用:
text
多个 HDD
↓
并行工作
↓
提高总体吞吐量
因此:
text
单块 HDD
↓
约 150~250 MB/s
10块 HDD
↓
理论累计吞吐量可能达到
约 1500~2500 MB/s
考虑 RAID、控制器、总线等开销
↓
实际可能达到
约 1000 MB/s 甚至更高
注意这里是:
吞吐量(Throughput)
而不是:
单块硬盘的访问延迟变低了。
RAID 50 并没有让 HDD 的寻道时间消失。
它主要解决的是:
让多个磁盘同时传输数据。
二十九、吞吐量和延迟是两个不同概念
这是理解 RAID 性能非常重要的一点。
延迟
表示:
"我要的数据多久才能开始返回?"
例如:
text
请求
↓
10 ms
↓
开始返回
吞吐量
表示:
"单位时间最多能传多少数据?"
例如:
text
1000 MB/s
意味着:
text
1秒
≈
1000 MB 数据
RAID 50 主要改善的是:
大规模顺序 IO 的吞吐量。
而不是把 HDD 变成 SSD 那样的低延迟设备。
三十、整个逻辑可以总结成一条链
最终可以把:
HDD + RAID 50 + 顺序大文件
理解成下面这条链:
text
HDD
│
├── 随机访问慢
└── 顺序传输快
↓
大量连续数据
↓
RAID 进行数据条带化
↓
多个 HDD 同时读取/写入
↓
获得更高的整体吞吐量
↓
RAID 5 提供校验和单盘容灾
↓
多个 RAID 5 组成 RAID 50
↓
进一步提高并行能力
因此,"为什么 HDD 适合顺序大文件 + RAID 50"并不是因为 HDD 本身很快,而是因为:
HDD 的优势在于单位容量成本低,并且具有不错的顺序吞吐能力;RAID 50 则把多个 HDD 的顺序吞吐能力并行利用起来。
三十一、核心结论
最后把最重要的几个结论整理出来:
1. HDD 为什么适合顺序大文件?
因为:
text
顺序读取
→ 减少寻道
→ 连续传输
→ 发挥磁盘顺序吞吐能力
2. RAID 5 是什么?
text
多块硬盘
+
数据条带
+
分布式校验
通常:
text
可容忍 1 块硬盘故障
容量:
text
(N - 1) × D
3. RAID 50 是什么?
text
多个 RAID 5
↓
RAID 0 条带化
也就是:
text
RAID 5 + RAID 0
4. RAID 50 为什么快?
不是单块 HDD 变快,而是:
text
HDD1 ─┐
HDD2 ─┤
HDD3 ─┤
HDD4 ─┤→ 并行传输
HDD5 ─┤
... ┘
多个硬盘同时工作,从而提高总体吞吐量。
5. 为什么 10 盘可能达到约 1000 MB/s?
因为假设:
text
单盘 ≈ 150 MB/s
那么:
text
10 × 150
≈ 1500 MB/s
考虑各种系统开销后:
text
≈ 1000 MB/s
是合理的数量级。
但这不是固定值,实际速度取决于硬盘、RAID 控制器、总线、网络等整个链路。
6. RAID 50 容量怎么算?
如果有:
text
N块硬盘
G个RAID 5组
每块容量D
则:
text
可用容量 = (N - G) × D
例如:
text
10 × 10 TB
2组RAID 5
则:
text
(10 - 2) × 10 = 80 TB
7. RAID 50 能坏几块?
不是简单的:
text
最多坏2块
而是:
每个 RAID 5 子阵列最多允许坏 1 块。
例如:
text
A组坏1块
B组坏1块
可以继续工作。
但是:
text
A组坏2块
即使 B 组完全正常,整个 RAID 50 也会失效。
8. RAID 50 最适合什么?
从性能特征来看:
text
大量数据
↓
大块 IO
↓
顺序读写
↓
多个 HDD 并行
↓
高吞吐
这正是 RAID 50 的优势所在。
而对于:
text
大量随机小 IO
低延迟要求
频繁小块更新
RAID 50 就不一定是最佳选择。