RAID代表独立磁盘冗余阵列,基本开发目的是允许将多个磁盘(例如HDD、SSD和NVMe)组合到一个阵列中以实现冗余,这种阵列磁盘在计算机上显示为单个逻辑存储单元或驱动器,目前大多国外服务器均采用RAID冗余阵列磁盘。
由于不能在服务器中插入一个巨大的磁盘驱动器来实现冗余,因为在发生灾难的情况下几乎不可能恢复数据。在RAID中,即使阵列由多个磁盘组成,计算机(服务器)也将其“视为”一个驱动器或单个逻辑存储单元,这非常的有意义。
术语的定义
- 热备用(Hot Spare): –如果磁盘没有在RAID阵列中使用,并且在磁盘出现故障时处于备用状态,则具有热备用功能,也就是来自故障磁盘的数据将自动迁移到该备用磁盘中。
- 镜像(Mirroring): –众所周知,镜像就是将相同数据复制到另一个磁盘中,此功能使数据备份的想法成为可能。
- 条带化(Striping): –一种使数据可以随机写入所有可用磁盘中的功能,就像在所有磁盘之间共享数据一样,因此所有磁盘均等地填充。
- 奇偶校验(Parity): –一种从保存的奇偶校验信息中重新生成丢失数据的技术。
通过使用磁盘条带化(RAID 0),磁盘镜像(RAID 1)和带奇偶校验的磁盘条带化(RAID 5,4和6)等技术,RAID能够实现冗余,更低的延迟,增加的带宽和最大化的性能以及从硬盘崩溃中恢复的能力。
一般情况下,在服务器中使用RAID的主要原因包括以下几个方面:
- 实现更好的访问速度
- 使用单个虚拟磁盘增加存储容量
- 最大限度地减少磁盘故障造成的数据丢失。根据RAID类型,将能够实现冗余,这将在以后发生数据丢失的情况下更加节省时间。
目前RAID技术分为三种类型:固件RAID,硬件RAID和软件RAID。硬件RAID独立于主机处理其阵列,并且仍为主机提供每个RAID阵列一个磁盘的功能。它使用硬件RAID控制器卡,该卡对操作系统透明地处理RAID任务。另一方面,软件RAID在内核磁盘(块设备)代码中实现了各种RAID级别,并提供了最便宜的解决方案,因为不需要昂贵的磁盘控制器卡或热插拔机箱。当前时代有更快的CPU,因此软件RAID通常优于硬件RAID。
软件RAID的基本功能。
- 无需重构即可在Linux机器之间实现阵列的可移植性
- 使用空闲系统资源进行后台阵列重建
- 热插拔驱动器支持
- 自动CPU检测以利用某些CPU功能(例如流SIMD支持)的优势
- 自动纠正阵列中磁盘上的坏扇区
- 定期检查RAID数据的一致性,以确保阵列的运行状况
- 主动监视阵列,并在发生重要事件时将电子邮件警报发送到指定的电子邮件地址
- 写意图位图,通过允许内核精确地知道磁盘的哪些部分需要重新同步,而不必重新同步整个阵列,从而极大地提高了重新同步事件的速度
在CentOS 8上设置RAID
这里简要说明下,可以根据问题的症结所在来对CentOS 8系统设置各种RAID级别。不过在开始之前,需要安装mdadm工具,该工具将有助于配置各种RAID级别,安装命令如下:
sudo dnf -y update
sudo dnf -y install mdadm
在CentOS 8上配置RAID 0
如前所述,RAID 0提供了无奇偶校验的条带化,并且至少需要两个硬盘。与其他速度相比,它的速度得到了很好的评价,因为它不存储任何奇偶校验数据,也不同时执行读取和写入操作。
首先查看服务器上的磁盘:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 128G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 127G 0 part
├─cl_centos8-root 253:0 0 50G 0 lvm /
├─cl_centos8-swap 253:1 0 2G 0 lvm [SWAP]
└─cl_centos8-home 253:2 0 75G 0 lvm /home
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
sdd 8:48 0 1G 0 disk
如上所示,该服务器连接了三个原始磁盘(sdb,sdc和sdd),这里首先清除磁盘,然后对它们进行分区,然后在它们之上创建RAID,命令如下:
for i in sdb sdc sdd; do
sudo wipefs -a /dev/$i
sudo mdadm --zero-superblock /dev/$i
done
在磁盘上分别创建一个分区并设置RAID标志。
for i in sdb sdc sdd; do
sudo parted --script /dev/$i "mklabel gpt"
sudo parted --script /dev/$i "mkpart primary 0% 100%"
sudo parted --script /dev/$i "set 1 raid on"
done
这时应该会看到创建了新分区(sdb1,sdc1,sdd1):
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 128G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 127G 0 part
├─cl_centos8-root 253:0 0 50G 0 lvm /
├─cl_centos8-swap 253:1 0 2G 0 lvm [SWAP]
└─cl_centos8-home 253:2 0 75G 0 lvm /home
sdb 8:16 0 1G 0 disk
└─sdb1 8:17 0 1022M 0 part
sdc 8:32 0 1G 0 disk
└─sdc1 8:33 0 1022M 0 part
sdd 8:48 0 1G 0 disk
└─sdd1 8:49 0 1022M 0 part
分区准备就绪后,继续创建RAID 0设备。级别条带(Level stripe)与RAID 0相同,因为它仅提供数据条带化。
sudo mdadm --create /dev/md0 --level=stripe --raid-devices=3 /dev/sd[b-d]1
使用以下任何命令找出RAID设备状态:
$ cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdd1[2] sdc1[1] sdb1[0]
3133440 blocks super 1.2 512k chunks
unused devices: <none>
或者
$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Aug 26 21:20:57 2020
Raid Level : raid0
Array Size : 3133440 (2.99 GiB 3.21 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Wed Aug 26 21:20:57 2020
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : -unknown-
Chunk Size : 512K
Consistency Policy : none
Name : centos8.localdomain:0 (local to host centos8.localdomain)
UUID : 2824d400:1967473c:dfa0938f:fbb383ae
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
如果一切进行很顺利的话,请在新的RAID设备上创建所选择的文件系统。
sudo mkfs.ext4 /dev/md0
接下来需要在文件系统上挂载新设备,以使其开始保存文件和目录。创建一个新的挂载点:
sudo mkdir /mnt/raid0
在/ etc / fstab中配置挂载:
echo "/dev/md0 /mnt/raid0 ext4 defaults 0 0" | sudo tee -a /etc/fstab
如果不确定文件系统类型,请输入以下命令,并将ext4更改为将显示的TYPE。
sudo blkid /dev/md0
/dev/md0: UUID="e6fe86e5-d241-4208-ab94-3ca79e59c8b6" TYPE="ext4"
确认它可以正确安装:
$ sudo mount -a
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 865M 0 865M 0% /dev
tmpfs tmpfs 882M 0 882M 0% /dev/shm
tmpfs tmpfs 882M 17M 865M 2% /run
tmpfs tmpfs 882M 0 882M 0% /sys/fs/cgroup
/dev/mapper/cl_centos8-root xfs 50G 2.1G 48G 5% /
/dev/sda1 ext4 976M 139M 770M 16% /boot
/dev/mapper/cl_centos8-home xfs 75G 568M 75G 1% /home
tmpfs tmpfs 177M 0 177M 0% /run/user/1000
/dev/md0 ext4 2.9G 9.0M 2.8G 1% /mnt/raid0 ##Our New Device.
在CentOS 8上配置RAID 1
RAID 1提供磁盘镜像或奇偶校验而不带条带化。它仅将所有数据写入两个磁盘,因此,如果一个磁盘发生故障或弹出,则所有数据将在另一磁盘上可用。由于RAID 1是在两个磁盘上写入的,因此它需要双硬盘,如果要使用2个磁盘,则必须安装4个磁盘以进行设置。
在开始之前,需要启动RAID配置之前清除所有磁盘,以确保从纯净的磁盘开始。
for i in sdb sdc sdd; do
sudo wipefs -a /dev/$i
sudo mdadm --zero-superblock /dev/$i
done
在磁盘上分别创建一个分区并设置RAID标志。
for i in sdb sdc sdd; do
sudo parted --script /dev/$i "mklabel gpt"
sudo parted --script /dev/$i "mkpart primary 0% 100%"
sudo parted --script /dev/$i "set 1 raid on"
done
创建RAID 1设备:
sudo mdadm --create /dev/md1 --level=raid1 --raid-devices=2 /dev/sd[b-c]1 --spare-devices=1 /dev/sdd1
检查新阵列的状态:
$ sudo mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Wed Aug 26 21:32:52 2020
Raid Level : raid1
Array Size : 1045504 (1021.00 MiB 1070.60 MB)
Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Wed Aug 26 21:33:02 2020
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Name : centos8.localdomain:1 (local to host centos8.localdomain)
UUID : 9ca1da1d:a0c0a26b:6dd27959:a84dec0e
Events : 17
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 - spare /dev/sdd1
RAID设备准备就绪后,如果其中没有文件系统,则无法使用它。要解决此问题,请创建所需的文件系统。下面显示了一个示例,其中正在设置xfs。
sudo mkfs.xfs /dev/md1
之后,创建将在其上安装设备的安装点:
sudo mkdir /mnt/raid1
同样,在/ etc / fstab中配置挂载:
echo "/dev/md1 /mnt/raid1 xfs defaults 0 0" | sudo tee -a /etc/fstab
确认它可以正确安装:
$ sudo mount -a
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 865M 0 865M 0% /dev
tmpfs tmpfs 882M 0 882M 0% /dev/shm
tmpfs tmpfs 882M 17M 865M 2% /run
tmpfs tmpfs 882M 0 882M 0% /sys/fs/cgroup
/dev/mapper/cl_centos8-root xfs 50G 2.1G 48G 5% /
/dev/sda1 ext4 976M 139M 770M 16% /boot
/dev/mapper/cl_centos8-home xfs 75G 568M 75G 1% /home
tmpfs tmpfs 177M 0 177M 0% /run/user/1000
/dev/md1 xfs 1016M 40M 977M 4% /mnt/raid1
在CentOS 8上配置RAID 10
RAID 10结合了磁盘镜像(一次写入两个磁盘)和磁盘条带化以保护数据。RAID 10至少需要4个磁盘,才能跨镜像对对数据进行条带化。使用此配置,只要每个镜像对中的一个磁盘都可以工作,就可以检索数据。
和此前已有,请先清除所有原始磁盘。
for i in sdb sdc sdd sde; do
sudo wipefs -a /dev/$i
sudo mdadm --zero-superblock /dev/$i
done
在磁盘上分别创建一个分区并设置RAID标志。
for i in sdb sdc sdd sde; do
sudo parted --script /dev/$i "mklabel gpt"
sudo parted --script /dev/$i "mkpart primary 0% 100%"
sudo parted --script /dev/$i "set 1 raid on"
done
然后继续创建RAID 10设备并检查其状态:
sudo mdadm --create /dev/md10 --level=10 --raid-devices=4 dev/sd[b-e]1
sudo mdadm -–query --detail /dev/md10
设置RAID设备后,创建特定需求所需的文件系统。下面显示了一个示例,其中正在设置xfs。
sudo mkfs.xfs /dev/md10
之后,创建将在其上安装设备的安装点:
sudo mkdir /mnt/raid10
在/ etc / fstab中配置挂载:
echo "/dev/md10 /mnt/raid10 xfs defaults 0 0" | sudo tee -a /etc/fstab
确认它可以正确安装:
$ sudo mount -a
$ df -hT
停止并删除RAID阵列
如果希望从系统中删除RAID设备,只需卸载挂载点,将其停止并使用以下命令删除即可。请记住,将/ mnt / raid0替换为安装点,将/ dev / md0替换为RAID设备。
sudo umount /mnt/raid0
sudo mdadm --stop /dev/md0
sudo mdadm --remove /dev/md0
总结
由于RAID的多功能性和易于安装的特性,因此它还是比较值得选用的。如上所述,配置RAID仅需执行几个命令,相对来说还是比较简单的。与此同时,根据业务需求的不同,可以实现高级别的备份,以便在发生灾难时进行备份。
总之,以上就是在CentOS 8系统配置RAID 0 | RAID 1 | RAID 10磁盘的简单过程,仅供参考。如果有想在服务器中配置RAID冗余阵列的话,不妨参考上述教程进行操作。