RAID(Redundant Array of Independent Disks)不是简单的磁盘堆叠,而是通过算法将多块物理硬盘虚拟化为逻辑存储单元的核心技术。其核心价值体现在:
RAID级别 | 最小磁盘数 | 可用容量 | 读写性能 | 冗余能力 | 典型场景 |
|---|---|---|---|---|---|
RAID0 | 2 | N×单盘容量 | 极佳 | 无 | 视频编辑缓存 |
RAID1 | 2 | 50%总容量 | 读快写慢 | 允许1盘故障 | 数据库日志 |
RAID5 | 3 | (N-1)×单盘容量 | 读快写慢 | 允许1盘故障 | 文件服务器 |
RAID6 | 4 | (N-2)×单盘容量 | 读快写慢 | 允许2盘故障 | 医疗影像存储 |
RAID10 | 4 | 50%总容量 | 读写俱佳 | 允许多盘每组镜像故障 | 虚拟化平台 |
RAID5的分布式校验算法是其核心技术:
# 三块磁盘数据块示例
disk1 = 0b1100
disk2 = 0b1010
# 校验块计算
parity = disk1 ^ disk2 # 0b0110
# 磁盘2损坏时恢复数据
recovered_disk2 = disk1 ^ parity # 0b1010这种算法使校验数据均匀分布在各磁盘,避免写入热点问题。
UER问题(不可恢复读错误) 机械硬盘UER率为10^14,RAID5阵列在12TB硬盘重建时失败率高达22%
写惩罚(Write Penalty)
RAID级别 | 写放大系数 |
|---|---|
RAID1 | 2 |
RAID5 | 4 |
RAID6 | 6 |
容量规划公式
实际可用空间 = (单盘容量 × 磁盘数) × 冗余系数
冗余系数:RAID1=0.5, RAID5=0.8, RAID6=0.67但RAID仍是本地化存储的黄金标准,2023年全球RAID控制器市场规模达48.7亿美元(数据来源:Gartner)。
永远记住:RAID不是备份!需配合3-2-1备份策略
这里我就没有演示如何去分区了,直接使用fdisk命令即可。测试的方法有很多,这里就没有去比较三者的速率了
使用cat /proc/mdstat查看一下创建情况

使用mdadm -D /dev/md1
-D:打印阵列设备的详细信息

使用mkfs.ext4 /dev/md1将md1进行格式化

使用mkdir新建一个u10的文件,然后mount /dev/md1 /u10进行挂载

现在开始测试,mdadm /dev/md1 -f /dev/sdb5
-f:表示无效
这里为什么是sdb5,因为我将一块硬盘,全部进行了扩展分区,然后将扩展分区里面的所有空间分成了若干个相同大小的逻辑分区,然后将逻辑分区模拟单个盘进行实验

使用cat /proc/mdstat进行查看情况,这里可以发现sdb5后面跟了个(F),说明sdb5处于故障状态

使用mdadm -D /proc/mdstat查看设备详细信息

使用madam /dev/md1 -r /dev/sdb5移除sdb5盘

再次使用mdadm -D /dev/md1查看一次有什么变化,发现sdb5被移除

最后使用mdadm /dev/md1 -a /dev/sdb5将sdb5加回来

继续查看cat /proc/mdstat ,发现加回来了,没有问题

mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sdb{7,8,9,10}
-x 指定热备盘

cat /proc/mdstat

mdadm -D /dev/md5

mkfs.ext4 /dev/md5

mkdir /u05
mount /dev/md5 /u05

mdadm /dev/md5 -f /dev/sdb7

cat /proc/mdstat这里可以看到图中的sdb7后面有一个“(F)”

mdadm -D /dev/md5

mdadm /dev/md5 -r /dev/sdb7先移除
cat /proc/mdstat在查看,可以看到sdb7已经没有了

mdadm /dev/md5 -a /dev/sdb7把这个加回来看看效果
cat /proc/mdstat可以看到sdb7回来了,并且后面还跟了一个“(S)”,S表示备份盘

mdadm -C /dev/md10 -l 10 -n 4 /dev/sdb{11,12,13,14}

mkfs.ext4 /dev/md10

mount/dev/md10/u10前面已经新建了u10

Lsblk查看,发现上面的riad1、riad5、riad10都挂载成功了

我们先干掉第一块盘

干掉12,发现干不掉(因为没有做备份盘)

类型 | 读写性能 | 可靠性 | 磁盘利用率 | 成本 |
|---|---|---|---|---|
RAID0 | 最好 | 最低 | 100% | 较低 |
RAID1 | 读正常;写两份数据 | 高 | 50% | 高 |
RAID5 | 读:近似RAID0 写:多了校验 | RAID0<RAID5<RAID1 | (n-1)/n | RAID0<RAID5<RAID1 |
RAID6 | 读:近似RAID0 写:多了双重校验 | RAID6>RAID5 | RAID6<RAID5 | RAID6>RAID1 |
RAID10 | 读:RAID10=RAID0 写:RAID10=RAID1 | 高 | 50% | 最高 |
mdadm命令常见参数解释:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。