配置RAID 0 | RAID 1 | CentOS 8上的RAID 10

时间:2020-02-23 14:37:55  来源:igfitidea点击:

RAID代表独立磁盘冗余阵列。
它的基本开发目的是允许将多个磁盘(例如HDD,SSD和NVMe)组合到一个阵列中以实现冗余。
这种设备阵列在计算机上显示为单个逻辑存储单元或者驱动器。
不能通过在项目中插入一个巨大的磁盘驱动器来实现冗余,因为在发生灾难的情况下几乎不可能恢复数据。
在RAID中,即使阵列由多个磁盘组成,计算机也将其"视为"一个驱动器或者单个逻辑存储单元,这非常了不起。

术语的定义

热备用:–如果磁盘没有在RAID阵列中使用,并且在磁盘出现故障时处于备用状态,则我们有热备用。
发生故障的磁盘中的数据将自动迁移到该备用磁盘中。
镜像:–我们可以猜到,镜像是将相同数据复制到另一个磁盘中。
此功能使数据备份的想法成为可能。
条带化:–一种使数据能够随机写入所有可用磁盘的功能。
就像在所有磁盘之间共享数据一样,所有磁盘均等填充。
奇偶校验:–一种从保存的奇偶校验信息中重新生成丢失数据的技术。

使用磁盘条带化(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的基本功能。来源(access.redhat.com)

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设备。
级别条带与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 2017
        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 2017
             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是在两个磁盘上写入的,因此RAID 1需要双硬盘,以防万一我们要使用2个磁盘,则必须安装4个磁盘进行设置。
我们从干净的磁盘开始。

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 2017
        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 2017
             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个磁盘,才能跨镜像对对数据进行条带化。
使用此配置,只要每个镜像对中的一个磁盘都可以工作,就可以检索数据。
就像已经完成的先前RAID级别一样,首先要清除所有原始磁盘。

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