1.RAID简介
RAID是将多个独立的磁盘按照一定的方式组成1个磁盘阵列组,相比单个磁盘能够有效的提高磁盘的容量、带宽以及可靠性和可用性。
说明:
1.不建议对云盘采用RAID5 和RAID6模式,这些RAID模式的奇偶校验数据会占用一定的IOPS,从而造成性能的损失
2.建议创建RAID0,RAID1模式,并使用相同分区大小,以减少云盘空间的浪费
如下是常见的RAID配置选项:
配置 | 优点 | 劣势 | 使用场景 |
---|---|---|---|
RAID0 | I/O在卷内以条带化的方式分布在各个磁盘上。增加云盘空间会直接增加吞吐量。存储空间等于各个云盘之和 | 没有数据冗余能力,单个云盘的损坏有可能造成整个虚拟盘数据丢失 | 对 I/O 性能要求很高,并且已通过其他方式对数据进行备份处理或者不需要进行数据备份的场景 |
RAID1 | 数据以镜像的方式存储在各个磁盘上。虚拟盘的存储空间大小取决于RAID组内容量最小的云盘 | 写性能比较差,因为数据要同时写入多个磁盘 | 当容错能力比 I/O 性能更重要时;例如在关键应用程序中 |
相比于单个云盘,通过设置RADI0整列,文件系统可以获得更高的性能。RAID0整列的容量等于各个云盘容量之和,RAID0整列的带宽等于各个云盘带宽之和;为了获取更高的“冗余性”,可以设置RAID1阵列,RAID1提供“镜像”特性,数据同时存放2份副本。RAID1阵列中的容量和带宽等于该RAID1组中容量和带宽最小的云盘。
2.在Linux上创建RAID组
以下配置过程以Ubuntu环境为例。Linux 内核提供用于管理 RAID 设备的 md 模块,可以直接使用 mdadm 工具来调用 md 模块创建 RAID组。
2.1在Linux上创建RAID组
Step1:创建云盘。建议为ECS创建具有相同大小、规格的云盘。更多帮助信息请参阅:创建云盘
Step2:挂载云盘:将Step1中创建好的云盘挂在给指定的ECS服务器。更多帮助信息请参阅:挂载云盘
Step3:使用mdadm命令创建RAID组。可以使用 lsblk 命令列出实例上的设备以找到设备名称。
1.要创建RAI0,请执行如下命令(--level=0 选项用于将阵列条带化)
mdadm --create /dev/md0 --level=0 --raid-devices=5 /dev/vd[bcdef]
最终配置信息如下图所示;"/dev/vd[bcdef]"表示/dev/vdb,/dev/vdc,/dev/vdd./dev/vde,/dev/vdf这5个云盘;
2.要创建RAID1,请执行以下命令(--level=1 选项用于将阵列镜像化)
mdadm --create /dev/md0 --level=1 --raid-devices=5 /dev/vd[bcdef]
Step4:通过如下命令查看RAID信息:
mdadm --detail /dev/md0
如下是示例输出信息:
root@iZuf698rtvi9j9uskgv84tZ:~# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May 19 12:31:53 2019
Raid Level : raid0
Array Size : 104775680 (99.92 GiB 107.29 GB)
Raid Devices : 5
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Sun May 19 12:31:53 2019
State : clean
Active Devices : 5
Working Devices : 5
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Name : iZuf698rtvi9j9uskgv84tZ:0 (local to host iZuf698rtvi9j9uskgv84tZ)
UUID : 59b65ca6:ad8ffc30:ee439c6b:db6baef1
Events : 0
Number Major Minor RaidDevice State
0 253 16 0 active sync /dev/vdb
1 253 32 1 active sync /dev/vdc
2 253 48 2 active sync /dev/vdd
3 253 64 3 active sync /dev/vde
4 253 80 4 active sync /dev/vdf
Step5:创建文件系统:在新建的RAID阵列上创建wenji文件系统,如下以EXT4为例:
mkfs.ext4 /dev/md0
输出信息如下:
root@iZuf698rtvi9j9uskgv84tZ:~# mkfs.ext4 /dev/md0
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 26193920 4k blocks and 6553600 inodes
Filesystem UUID: 4fc55c24-d780-40d5-a077-03b484519e83
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Step6:创建RAID配置信息:要确保 RAID 阵列在启动时自动重组,需要创建一个包含 RAID 信息的配置文件:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
Step7:创建挂载点
mkdir /media/raid0
Step8:挂载文件系统,并查看挂载信息:
mount /dev/md0 /media/raid0
输出信息如下:
root@iZuf698rtvi9j9uskgv84tZ:~# mount /dev/md0 /media/raid0
root@iZuf698rtvi9j9uskgv84tZ:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.9G 0 7.9G 0% /dev
tmpfs 1.6G 3.5M 1.6G 1% /run
/dev/vda1 40G 23G 15G 61% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
tmpfs 1.6G 0 1.6G 0% /run/user/0
/dev/md0 99G 60M 94G 1% /media/raid0
至此,RAID设备已经准备完毕,并且可用。
Step9(可选):若要在每次系统启动时,自动加载该RAID组,则需要在/etc/fstab中添加如下信息:
/dev/md0 /media/rad0 defaults,nofail,nobootwait 0 2
说明:如果要在未挂载该RAID组的情况下启动实例,zexuyao添加nofailzhuazhuangzai装载项,该装载项允许ECS实例即使在磁盘安装过程中出现错误时也可启动。对于ubuntu类型还必须添加 nobootwait 装载选项。
Step10(可选):装载文件系统:在将新RAID添加到 /etc/fstab 后,需要检查启动项是否有效。运行 mount -a 命令以在 /etc/fstab 中装载所有文件系统。
mount -a
3.创建RAID整列中云盘的快照
若要为RAID组创建一致的快照,请先停止应用程序对该RAID的写入操作,并将缓存中数据刷新至云盘。停止所有 I/O 活动后,就可以创建快照了。当快照已启动或快照 API 成功返回时,所有 I/O 活动都将安全恢复。
从RAID快照中恢复数据时,请先停止所有I/O操作,再将快照恢复至云盘。