步骤1:了解RAID 配置选项
下表比较常见的RAID 0 和RAID 1 选项。
配置 | 使用 | 优点 | 缺点 |
---|---|---|---|
RAID 0 | 当I/O 性能比容错能力更重要时;例如在频繁使用的数据库中(其中,已单独设置数据复制)。 | I/O 在卷内以条带状分布。如果添加卷,则会直接增加吞吐量。 | 条带的性能受限于该集合中的最差的执行卷。丢失单个卷会导致完全丢失阵列的数据。 |
RAID 1 | 当容错能力比I/O 性能更重要时;例如在关键应用程序中。 | 在数据持久性方面更具安全性。 | 不提供写入性能改进;需要比非RAID配置更大的Amazon EC2到Amazon EBS 带宽,因为数据将同时写入多个卷。 |
重要:不建议对Amazon EBS 使用RAID 5 和RAID 6,因为这些RAID 模式的奇偶校验写入操作会使用卷的一些可用IOPS。根据RAID 阵列配置,这些RAID 模式提供的可用IOPS 比RAID 0 配置少20-30%。成本增加也是与这些RAID 模式有关的一个因素;在使用相同的卷大小和速度时,一个2 卷RAID 0 阵列明显胜过两倍成本的4 卷RAID 6 阵列。
相比在单个Amazon EBS 卷上配置,通过创建RAID 0 阵列,文件系统可以获得更高性能。为获得额外冗余性,RAID 1 阵列提供了数据的一个“镜像”。在执行此步骤之前,需要确定RAID 阵列的大小以及需要配置多少IOPS。
RAID 0 阵列的最终大小是阵列中各个卷的大小之和,带宽是阵列中各个卷的可用带宽之和。
RAID 1 阵列的最终大小和带宽等于阵列中各个卷的大小和带宽。
例如,预配置IOPS 为4,000 的两个500 GiB Amazon EBS io1 卷将创建可用带宽为8,000 IOPS、吞吐量为1,000 MB/s 的1000 GiB RAID 0 阵列,或创建可用带宽为4,000 IOPS、吞吐量为500 MB/s 的500 GiB RAID 1 阵列。
本文档提供基本的RAID 设置示例。有关RAID 配置、性能和恢复的更多信息,请参阅Linux RAID Wiki,网址为https://raid.wiki.kernel.org/index.php/Linux_Raid。
步骤2:在Linux 上创建RAID 阵列
使用以下过程在Linux 上创建RAID 阵列。如需要在Windows 上创建RAID 阵列,请参考在Windows 上创建RAID 阵列获得有关Windows 实例的说明
在Linux 上创建RAID 阵列
1.登录AWS控制台,创建Amazon Linux2实例(如已经有运行的实例,请忽略此步骤)。
2.为阵列创建Amazon EBS 卷。
重要:为阵列创建两个具有相等大小和IOPS 性能值的卷。确保不创建超过EC2 实例的可用带宽的阵列。
3.将Amazon EBS卷附加到要承载该阵列的实例。关于如何创建EBS卷,请参考实验4 创建EBS卷并附加到Linux实例上。(注:只需要附加到实例,并不需要用文件系统将卷格式化,在创建完成RAID阵列之后再用文件按系统格式化RAID阵列)
4.使用SSH连接到实例。
5.使用mdadm
命令从新附加的Amazon EBS卷创建逻辑RAID 设备。用阵列中的卷数替换number_of_volumes,用阵列中每个卷的设备名称(例如/dev/xvdf) 替换device_name。您还可以将MY_RAID 替代为阵列的唯一名称。注意您可以使用lsblk
命令列出实例上的设备以找到设备名称。
(仅限RAID 0) 要创建RAID 0 阵列,请执行以下命令(注意,–level=0 选项用于将阵列条带化):
[ec2-user ~]$ sudo mdadm --create --verbose /dev/md0 --level=0 --name=MY_RAID --raid-devices=number_of_volumes device_name1 device_name2
(仅限RAID 1) 要创建RAID 1 阵列,请执行以下命令(注意,–level=1 选项用于将阵列镜像化):
[ec2-user ~]$ sudo mdadm --create --verbose /dev/md0 --level=1 --name=MY_RAID --raid-devices=number_of_volumes device_name1 device_name2
6.给RAID阵列一些时间进行初始化和同步。可以借助下面的命令跟踪这些操作的进度:
[ec2-user ~]$ sudo cat /proc/mdstat
下面是示例输出(这里显示的是已经初始化完成后的输出):
通常,可以通过下面的命令显示有关RAID 阵列的详细信息:
[ec2-user ~]$ sudo mdadm --detail /dev/md0
示例输出:
7.在RAID 阵列上创建一个文件系统,并为该文件系统分配一个稍后在装载该文件系统时使用的标签。例如,要使用标签MY_RAID0创建ext4文件系统,请执行以下命令:
[ec2-user ~]$ sudo mkfs.ext4 -L MY_RAID0 /dev/md0
根据应用程序的要求或操作系统的限制,可以使用其他文件系统类型,如ext3 或XFS(请参阅文件系统文档以了解相应的文件系统创建命令)。
8.要确保RAID阵列在启动时自动重组,请创建一个包含RAID 信息的配置文件:
[ec2-user ~]$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf
注意:如果你使用的是Linux 发行版而不是Amazon Linux,此文件可能需要被放在不同的位置。有关更多信息,请参阅你的Linux 系统上的man mdadm.conf
。
9.创建新的 Ramdisk Image 以为新的RAID配置正确地预加载块储存设备模块:
[ec2-user ~]$ sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
10.为RAID阵列创建装载点。
[ec2-user ~]$ sudo mkdir -p /mnt/raid
11.最后,在已创建的装载点上安装RAID 设备:
[ec2-user ~]$ sudo mount LABEL=MY_RAID0 /mnt/raid
RAID 设备现已准备就绪,可供使用。
12. (可选) 要在每一次系统重启时装载此Amazon EBS 卷,可在/etc/fstab 文件中为该设备添加一个条目。
a.创建/etc/fstab 文件的备份,当您进行编辑时意外损坏或删除了此文件的情况下,可以使用该备份。
[ec2-user ~]$ sudo cp /etc/fstab /etc/fstab.orig
b.使用文本编辑器(如nano或vim) 打开/etc/fstab 文件(注:需要以root身份打开)。
c.注释掉任何以“UUID=”开头的行,然后,在文件末尾,使用以下格式为您的RAID 卷添加新行:
device_label mount_point file_system_type fs_mntops fs_freq fs_passno
此行的最后三个字段分别是文件系统装载选项、文件系统转储频率和启动时的文件系统检查顺序。如果不知道这些值应该是什么值,请使用下面的示例中的值(defaults,nofail 0 2)。
有关/etc/fstab 条目的更多信息,请参阅fstab 手册页(通过在命令行上输入man fstab
)。例如,要在设备上的装载点/mnt/raid 装载带MY_RAID0 标签的ext4 文件系统,请将以下条目添加到/etc/fstab。
LABEL=MY_RAID0 /mnt/raid ext4 defaults,nofail 0 2
注意:如果要在未附加该卷的情况下启动实例(例如,以便该卷可以在不同实例之间向后和向前移动),则应添加nofail 装载选项,该选项允许实例即使在卷装载过程中出现错误时也可启动。Debian 衍生物(如Ubuntu) 还必须添加nobootwait 装载选项。
d.在将新条目添加到 /etc/fstab 后,需要检查条目是否有效。运行sudo mount -a
命令,以便安装 /etc/fstab 中的所有文件系统。如果上述命令未产生错误,说明您的/etc/fstab 文件正常,您的文件系统会在下次启动时自动装载。如果该命令产生了任何错误,请检查这些错误并尝试更正 /etc/fstab。
警告:/etc/fstab 文件中的错误可能显示系统无法启动。请勿关闭/etc/fstab 文件中有错误的系统。
e.(可选) 如果无法确定如何更正 /etc/fstab 错误,则始终可以使用以下命令用备份文件还原/etc/fstab 文件。
[ec2-user ~]$ sudo mv /etc/fstab.orig /etc/fstab
本篇为学习过程记录笔记