作者:ezmsp北京易云服公有云架构师 雷凯栋
随着业务规模的增长,单块EBS已经无法满足IO需求。本文介绍了通过RAID 0方式组合多块EBS卷,实现IO性能的水平扩展。同时也测试了修改EBS类型和调整配置后对RAID 0性能的影响。
- 控制台创建两块 EBS,并且挂在到指定机器。
- 进入操作系统查看磁盘。
- 通过 mdadm 命令创建 raid0. sudo mdadm –create –verbose /dev/md0 –level=0 –name=test-raid –raid-devices=2 /dev/nvme1n1 /dev/nvme2n1
如您遇到 mdadm: command not found 错误,请使用以下命令安装 mdadm:sudo yum install mdadm。
- 可以通过以下命令查看 raid0 卷的状态
sudo cat /proc/mdstat
- 在 raid阵列上创建一个文件系统。
sudo mkfs.ext4 -L test-raid /dev/md0
- 要确保 RAID阵列在启动时自动重组,请创建一个包含 RAID 信息的配置文件:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf
- 创建新的 Ramdisk Image 以为新的 RAID配置正确地预加载块储存设备模块:
sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
- 创建目录/mnt1,用来挂载 raid卷测试性能。
[root@ip-172-31-20-127 rocky]# mkdir /mnt1
[root@ip-172-31-20-127 rocky]# mount LABEL=test-raid /mnt1
如需永久挂载此设备参考以下文档第 10步.
https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/raid-config.html
- 安装 FIO 命令对 raid卷做吞吐以及带宽压测。
[root@ip-172-31-20-127 rocky]# yum install fio
通过以下命令测试 IOPS性能
[root@ip-172-31-20-127 rocky]# sudo fio --directory=/mnt1 --ioengine=psync --name fioTest-128 --direct=1 --rw=randwrite --bs=16k --size=1G --numjobs=16 --time_based --runtime=180 --group_reporting –norandomma
通过以下命令测试 吞吐性能
[root@ip-172-31-20-127 rocky]# sudo fio --directory=/mnt1 --ioengine=psync --name fioTest-128 --direct=1 --rw=randwrite --bs=128k --size=1G --numjobs=16 --time_based --runtime=180 --group_reporting –norandomma
- 在控制台对两块 EBS 进行修改,修改大小,磁盘,吞吐。(注意:修改之后 6 小时内,无法再对 EBS 进行修改操作。)
- 查看磁盘信息。
- 使用以下命令重新对 raid卷进行测试。吞吐测试 [root@ip-172-31-20-127 rocky]# sudo fio –directory=/mnt1 –ioengine=psync –name fioTest-128 –direct=1 –rw=randwrite –bs=128k –size=1G –numjobs=16 –time_based –runtime=180 –group_reporting –norandomma
IOPS 测试:
[root@ip-172-31-20-127 rocky]# sudo fio --directory=/mnt1 --ioengine=psync --name fioTest-128 --direct=1 --rw=randwrite --bs=16k --size=1G --numjobs=16 --time_based --runtime=180 --group_reporting –norandomma
结论
- 通过将两块 gps 制作成 raid 0 卷可以将性能整体提升
- Raid 卷一旦制作将无法进行扩容
- 对两块 gp3 的性能进行调整时,同样也会提升 raid 的性能。
测试结果如下统计如下:
调整前 两块 100g3000 IOPS125M 吞吐的 gp3制作的 raid Iops 达到 6000,吞吐 250M 调整后 两块 150g4000 IOPS200M 吞吐的 gp3 Iops 达到 8000,吞吐 400M
制作快照恢复数据
- 对制作 raid的两块 EBS 分别创建快照,目前/mnt1 下的数据
- 控制台分别对两块盘制作快照
- 将两块盘分别制作成 EBS卷,并且挂载到新的实例上。
- 登录新的实例,fdisk 查看当前磁盘,存在 raid 0盘。
- 查看当前 raid状态
[root@ip-172-31-16-26 rocky]# cat /proc/mdstat
Personalities : [raid0]
md127 : active raid0 nvme2n1[1] nvme1n1[0]
209582080 blocks super 1.2 512k chunks
- 创建/mnt1 目录将 raid 0挂载到/mnt1 下面查看文件
- 对比恢复后数据量
通过将两块EBS制作成RAID 0,可以显著提高IOPS和吞吐量。修改EBS类型和配置后,RAID 0的性能也会相应提升。EBS支持快照备份,可以通过快照恢复RAID阵列。RAID 0方式可以水平扩展EBS性能,适合IO密集型应用。