Linux中创建RAID阵列

产品文档

云硬盘

2024-06-03 10:11:13

本文以京东云Ubuntu 20.04 64位云主机为例,介绍如何使用Linux系统内置的mdadm命令为多块数据盘创建一个300 GiB的RAID阵列,本文以三块数据盘为例。

背景信息

独立冗余磁盘阵列RAID(Redundant Array of Independent Disks)是将多块云盘按一定的方式组成一个磁盘阵列组。相比单块云盘,RAID能够有效的提高磁盘的容量、读写带宽、可靠性和可用性。

建议您使用RAID0模式,每块云盘采用相同大小的分区,从而减少云盘空间浪费。由于云盘本身已经采用3副本的冗余策略,使用RAID1会使副本数量翻为6倍占用过多存储空间;由于RAID5或者RAID6模式的奇偶校验数据会占用云盘IOPS,带来性能阻碍,因此不推荐使用RAID5或者RAID6模式。可根据实际场景选择不同的RAID模式。

下表对比了RAID0、RAID1、RAID5、RAID6、RAID10模式的优缺点。

模式 优势 劣势
RAID0(条带化) 高性能:RAID 0通过将数据分成块并分布在多个硬盘上,可以实现卓越的读写性能。数据可以同时从多个硬盘读取和写入。 高容量:总容量等于所有硬盘的容量之和,因为没有数据冗余。 成本效益:由于不需要冗余硬盘,成本相对较低。 零容错:RAID 0没有冗余数据,一块硬盘损坏会导致数据完全丢失。 不适合关键数据:不建议用于关键数据存储,因为没有容错机制。
RAID1(镜像) 高容错性:数据被完全镜像到另一个硬盘,提供了极高的容错能力。即使一块硬盘损坏,数据仍然可用。 高可用性:系统可以在一个硬盘出现问题时继续运行。 良好的读性能:因为数据可以从多个硬盘中同时读取。 50%的容量利用率:总容量等于一个硬盘的容量,因为数据被完全复制。 写性能:写性能略低于RAID 0,因为数据必须同时写入两个硬盘。
RAID5 良好的性能:提供了良好的读性能和适度的写性能,因为数据被分布在多个硬盘上。 容错能力:使用分布的奇偶校验信息,可以容忍一块硬盘的故障。 合理的容量:总容量等于(N-1)个硬盘的容量之和,其中N是硬盘的数量。 长时间的重建:在硬盘故障后,需要较长时间来重建数据,因为需要计算奇偶校验信息。 写性能:写性能不如RAID 0,因为需要计算奇偶校验信息。
RAID6 更强的容错性:相比RAID 5,RAID 6可以容忍两块硬盘的故障。 性能与容错平衡:提供了较好的性能和容错平衡。 合理的容量:总容量等于(N-2)个硬盘的容量之和,其中N是硬盘的数量。 长时间的重建:在硬盘故障后,需要更长时间来重建数据,因为需要计算两份奇偶校验信息。 写性能:写性能不如RAID 0。
RAID 10(1+0) 高性能:提供了高性能的读和写能力,因为数据被条带化并镜像。 高容错性:可以容忍多块硬盘的故障,只要不是同一镜像组中的两块硬盘。 快速重建:重建时间相对较短,因为只需从镜像复制数据。 50%的容量利用率:总容量等于镜像组中一个硬盘的容量之和,因为数据被完全复制。 成本高:RAID 10需要较多的硬盘,因此成本较高。

在使用京东云云硬盘产品时,底层已经使用了三副本的冗余策略,可以完美解决RAID0模式零容错的问题,同时可以获得卓越的读写性能,较为建议。本文也将介绍使用3块云硬盘组建RAID0阵列的方法和步骤。

资源准备

您已经创建一台挂载多块数据盘的云主机。建议多块数据盘拥有相同的容量和相同类型。本文以g.n3.6xlarge(24核96GB 通用 标准型)云主机为例,挂载一块40GB通用型SSD云盘系统盘和三块100GB通用型SSD云盘数据盘。数据盘的吞吐上限为115MB/s,IOPS上限为3000。

操作步骤

1、远程连接云主机。

2、运行以下命令,查看云主机上所有的云盘信息。

lsblk

结果如下所示。

?1.png

3、运行以下命令,查看mdadm帮助。

madam -h

结果如下所示。

?2.png

4、使用mdadm命令创建RAID阵列/dev/md0。

mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/vd[bcd]

结果如下所示。

?3.png

5、运行以下命令,查看创建的RAID阵列/dev/md0信息。

mdadm --detail /dev/md0

结果如下所示。

?4.png

6、运行以下命令,使用fio简单验证RAID0阵列的效果

fio -ioengine=libaio -numjobs=1 -bs=1M -direct=1 -rw=randread -size=20G -filename=/dev/md0 -name=test -iodepth=64 -runtime=120 --group_reporting 
fio -ioengine=libaio -numjobs=1 -bs=1M -direct=1 -rw=randwrite -size=20G -filename=/dev/md0 -name=test -iodepth=64 -runtime=120 --group_reporting 

结果如下所示。读写性能为单盘的3倍。

?5.png

?6.png

7、运行以下命令,在RAID阵列上创建一个文件系统,例如ext4文件系统。

mkfs.ext4 /dev/md0

结果如下所示。

?7.png

8、运行以下命令,创建一份包含RAID信息的配置文件,设置RAID阵列在启动ECS实例时自动重组。

mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

9、挂载RAID阵列的文件系统。

​ 9.1 创建挂载点(可选)

mkdir /mnt/raid0

​ 9.2 运行以下命令挂载文件系统,例如将/dev/md0挂载至/mnt/rad0。

mount /dev/md0 /mnt/raid0

​ 9.3 运行以下命令,查看RAID阵列的挂载信息。

df -h

结果如下所示。

?8.png

10、配置开机自动挂载

​ 10.1 运行以下命令,向/etc/fstab配置文件写入RAID阵列信息。

echo `blkid /dev/md0 | awk '{print $2}' | sed 's/\"//g'` /mnt/raid0 ext4 defaults 0 0 >> /etc/fstab

/dev/md0:磁盘阵列名称。
/media/raid0:挂载点信息,您需要根据实际环境进行替换。如果需要挂载到其他路径,您需要修改成对应路径。
ext4:RAID阵列的文件系统类型,您需要根据已创建的文件系统类型修改。

​ 10.2 运行以下命令,查询RAID阵列的挂载信息是否添加成功。

cat /etc/fstab

结果如下所示,返回结果里出现了/mnt/raid0的信息,说明已添加挂载信息至/etc/fstab文件。

?9.png

​ 10.3 运行以下命令,挂载/etc/fstab配置文件中的所有文件系统。如果无报错输出,表示您的/etc/fstab配置无误。

mount -a

10.4 运行以下命令,检查挂载结果是否符合您的预期。

df -h

结果如下所示,出现新建文件系统的信息,表示文件系统挂载成功。

?10.png

文档反馈

开始与售前顾问沟通

可直接拨打电话 400-098-8505转1

我们的产品专家为您找到最合适的产品/解决⽅案

在线咨询 5*8⼩时

1v1线上咨询获取售前专业咨询

点击咨询
企微服务助手

专业产品顾问,随时随地沟通