文档概述:

RAID 0 又称为Stripe(条带化),将多个硬盘合并成一个大硬盘,不具有冗余,并行I/O。在存放数据时,将数据按磁盘个数进行分段,然后同时将这些数据写进磁盘中。在所有RAID级别中,RAID 0速度是最快的,为取得比通过单个卷取得的 I/O 性能更高的 I/O 性能,RAID 0 可将多个卷组合在一起。

AWS EBS卷同样也支持RAID 0的配置。本文将介绍AWS EBS卷RAID 0相关配置及实测磁盘吞吐量,仅供参考。

常见RAID配置选项:

比较常见的RAID配置如下表所示:

配置使用优点缺点
RAID0当 I/O 性能比容错能力更重要时;例如在频繁使用的数据库中 (其中,已单独设置数据复制)。I/O 在卷内以条带状分布。如果您添加卷,则会直接增加吞吐量。I/O 在卷内以条带状分布。如果您添加卷,则会直接增加吞吐量。
RAID1当容错能力比 I/O 性能更重要时;例如在关键应用程序中。在数据持久性方面更具安全性。不提供写入性能改进;需要比非 RAID 配置更大的 Amazon EC2 到 Amazon EBS 带宽,因为数据将同时写入多个卷。

背景介绍:

一台AWS Linux EC2实例,根存储卷大小为默认8GB ,还挂载了4块未使用的EBS卷,分别为nvme3n1 33GB、nvme1n1 10GB、nvme2n1 10GB、nvme4n1 13GB。所有卷的IOPS大小均为100.

RAID0配置:

将其中3块盘创建RAID0条带化。

mdadm --create --verbose /dev/md0 --level=0 --name=RAID0 --raid-devices=3 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme4n1

RAID0配置细节信息。mdadm --detail /dev/md0

创建文件系统。mkfs.ext4 -L RAID0 /dev/md0

创建挂载点,并挂载 mkdir -p /mnt/raid0 mount LABEL=RAID0 /mnt/raid0

增加/etc/fstab条目,设置开启自启动后执行mount –a 无报错即可,如下图示。

注:不要注释UUID的行

为卷拍摄快照并测试数据完整性:

创建测试文件,生成一个1GB的文件,吞吐量为215MB/s

快照3块ebs卷,启动一台新ec2,将快照挂载

可看到自动创建raid元设备md127.创建目录挂载即可,数据也可以恢复

测试磁盘吞吐量:

吞吐量测试命令dd if=/dev/zero of=here bs=1G count=1 oflag=direct
RAID 0 20GB大小 (2块盘)吞吐量:205MB/s

标准存储

根卷20GB(1块盘)

吞吐量:141MB/s

标准存储

根卷8GB(1块盘)

吞吐量:145MB/s

RAID 0配置

33GB大小 (3块盘)

吞吐量:215MB/s

标准存储

33GB卷(1块盘)

吞吐量:146MB/s

实测结论:

  1. 对于33GB以下的标准EBS存储,IOPS 为100。最大吞吐量实测为140MB/s
  2. 对于将3个卷制作成RAID0方式(大小在33GB以下),吞吐量实测为210MB/s
  3. RAID0配置若坏一块盘,数据则会丢失,应定期拍摄快照
  4. RAID0适合于大规模并发读写,但对数据安全性要求不高场景中