详解CentOS 7中RAID 6与RAID 10配置(理论+实践)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解CentOS 7中RAID 6与RAID 10配置(理论+实践)相关的知识,希望对你有一定的参考价值。

RAID 6介绍

技术图片

RAID6 是在RAID5 的基础上改良而成的,RAID6 再将数据校验位增加一位,所以允许损坏的硬盘数量也由 RAID5的一个增加到二个。由于同一阵列中两个硬盘同时损坏的概率非常少,所以,RAID6 用增加一块硬盘的代价,换来了比 RAID5更高的数据安全性,其特点与RAID 5基本相同,最少需要4块大小相同的磁盘,总容量为(n-2)/n。

  • RAID 6的构建

    1、首先,在虚拟机中添加5块硬盘,每块硬盘分别是20G,并重启虚拟机Linux系统,识别硬盘。然后,将添加的硬盘进行分区管理,修改分区号为fd(Linux raid 自动),(我这里做用4块硬盘构架RAID 6磁盘阵列,1块硬盘做备用盘。)

[root@localhost ~]# cd /dev
[root@localhost dev]# ls
agpgart          kmsg                sda       tty    tty30  tty53    vcs
autofs           log                 sda1      tty0   tty31  tty54    vcs1
block            loop-control        sda2      tty1   tty32  tty55    vcs2
bsg              lp0                 sda3      tty10  tty33  tty56    vcs3
btrfs-control    lp1                 sda4      tty11  tty34  tty57    vcs4
bus              lp2                 sda5      tty12  tty35  tty58    vcs5
cdrom            lp3                 sdb       tty13  tty36  tty59    vcs6
char             mapper              sdc       tty14  tty37  tty6     vcsa
console          mcelog              sdd       tty15  tty38  tty60    vcsa1
core             mem                 sde       tty16  tty39  tty61    vcsa2
cpu              mqueue              sdf       tty17  tty4   tty62    vcsa3
...//省略部分内容...
[root@localhost dev]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xf0ae3f91 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n 
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +sizeK,M,G (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xf0ae3f91

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

...//sdc、sdd、sde、sdf同样操作...

[root@localhost dev]# fdisk -l

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes

...//省略部分内容...

磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x061db7c4

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x377651e1

   设备 Boot      Start         End      Blocks   Id  System
/dev/sde1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sdf:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x98d97c23

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdf1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xf0ae3f91

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7f05f086

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   fd  Linux raid autodetect

? 2、通过mdadm命令构建RAID 6磁盘阵列,并构建保存备用盘;然后查看是否构建成功。

[root@localhost dev]# mdadm -C -v /dev/md6 -l6 -n4 /dev/sd[b-e]1 -x1 /dev/sdf1
mdadm: layout defaults to left-symmetric        //构建RAID 6磁盘阵列
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md6 started.
[root@localhost dev]# cat /proc/mdstat           //查看RAID磁盘阵列状态
Personalities : [raid6] [raid5] [raid4] 
md6 : active raid6 sdf1[4](S) sde1[3] sdd1[2] sdc1[1] sdb1[0]
      41908224 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
      [====>................]  resync = 23.8% (5006208/20954112) finish=1.3min speed=200248K/sec                                //正在同步磁盘

unused devices: <none>
[root@localhost dev]# mdadm -D /dev/md6          //查看RAID阵列详细信息
/dev/md6:
           Version : 1.2
     Creation Time : Sat Aug 24 21:35:32 2019
        Raid Level : raid6
        Array Size : 41908224 (39.97 GiB 42.91 GB)   //总容量
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4                               //组成RAID的磁盘数量
     Total Devices : 5
       Persistence : Superblock is persistent

       Update Time : Sat Aug 24 21:37:17 2019
             State : clean 
    Active Devices : 4
   Working Devices : 5
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:6  (local to host localhost.localdomain)
              UUID : 3d6b6ec3:05bcd2c1:696cf1ab:1b94b41d
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1  //组成RAID的磁盘
       1       8       33        1      active sync   /dev/sdc1
       2       8       49        2      active sync   /dev/sdd1
       3       8       65        3      active sync   /dev/sde1

       4       8       81        -      spare   /dev/sdf1       //备用磁盘

? 3、用mdadm -f命令模拟构建的RAID 6 中一块磁盘损坏,看看备用盘是否会顶替损坏的磁盘。

[root@localhost dev]# mdadm -f /dev/md6 /dev/sdb1  //撤掉RAID 6阵列中sdb1磁盘
mdadm: set /dev/sdb1 faulty in /dev/md6
[root@localhost dev]# mdadm -D /dev/md6            //查看RAID阵列详细信息
/dev/md6:
           Version : 1.2
     Creation Time : Sat Aug 24 21:35:32 2019
        Raid Level : raid6
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 5
       Persistence : Superblock is persistent

       Update Time : Sat Aug 24 21:55:16 2019
             State : clean 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 1
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:6  (local to host localhost.localdomain)
              UUID : 3d6b6ec3:05bcd2c1:696cf1ab:1b94b41d
            Events : 36

    Number   Major   Minor   RaidDevice State
       4       8       81        0      active sync   /dev/sdf1  //备用盘顶替撤掉的磁盘
       1       8       33        1      active sync   /dev/sdc1
       2       8       49        2      active sync   /dev/sdd1
       3       8       65        3      active sync   /dev/sde1

       0       8       17        -      faulty   /dev/sdb1

RAID 10介绍

技术图片`

RAID 10也叫RAID 1+0,顾名思义,就是RAID 1RAID 0的组合,RAID1+0 是先将数据进行镜像操作,然后再对数据进行分组,RAID 1 在这里就是一个冗余的备份阵列,而RAID 0 则负责数据的读写阵列。至少要四块硬盘,四块硬盘组成两组RAID 1,再把两组RAID 1组成RAID 0,以提高读写速度。RAID 10对存储容量的利用率和RAID 1`一样低,只有磁盘总容量的一半。

Raid1+0方案造成了50%的磁盘浪费,但是它提供了200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一Raid1中,就能保证数据安全性,RAID 10能提供比RAID 5更好的性能。RAID 10也是在实际应用中比较常用的磁盘阵列。

  • RAID 10的构建

    1、首先,在虚拟机中添加4块硬盘,每块硬盘分别是20G,然后,重启Linux系统,识别添加的硬盘,并将添加的硬盘进行分区管理,修改分区号为fd(Linux raid 自动)。

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xca2594aa 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +sizeK,M,G (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xca2594aa

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

...//sdc、sdd、sde同样操作...

[root@localhost ~]# fdisk -l

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes

...//省略部分内容...

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xca2594aa

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x66e98

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2d9046ca

   设备 Boot      Start         End      Blocks   Id  System
/dev/sde1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x8db10f78

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   fd  Linux raid autodetect

2、通过mdadm命令制作两组RAID 1磁盘阵列,并查看是否创建成功。

[root@localhost ~]# mdadm -C -v /dev/md1 -l1 -n2 /dev/sd[b-c]1  //创建RAID 1磁盘阵列
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store ‘/boot‘ on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 20954112K
Continue creating array? 
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@localhost ~]# mdadm -C -v /dev/md2 -l1 -n2 /dev/sd[d-e]1  //创建RAID 1磁盘阵列
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store ‘/boot‘ on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 20954112K
Continue creating array? 
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
[root@localhost ~]# cat /proc/mdstat           //查看RAID状态
Personalities : [raid1] 
md2 : active raid1 sde1[1] sdd1[0]
      20954112 blocks super 1.2 [2/2] [UU]
                                                //成功创建的两组RAID 1磁盘阵列
md1 : active raid1 sdc1[1] sdb1[0]
      20954112 blocks super 1.2 [2/2] [UU]

unused devices: <none>

? 3、将两组RAID 1磁盘阵列组成RAID 0磁盘阵列,并查看磁盘整列是否创建成功。

[root@localhost ~]# mdadm -C -v /dev/md10 -l0 -n2 /dev/md1 /dev/md2 //创建RAID 0磁盘阵列
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
[root@localhost ~]# cat /proc/mdstat         //查看状态
Personalities : [raid1] [raid0]               //创建的RAID 0磁盘阵列
md10 : active raid0 md2[1] md1[0]
      41875456 blocks super 1.2 512k chunks

md2 : active raid1 sde1[1] sdd1[0]
      20954112 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sdc1[1] sdb1[0]
      20954112 blocks super 1.2 [2/2] [UU]

unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md10      //查看创建的RAID 0磁盘阵列
/dev/md10:
           Version : 1.2
     Creation Time : Sat Aug 24 23:51:34 2019
        Raid Level : raid0
        Array Size : 41875456 (39.94 GiB 42.88 GB)   //容量大小
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Sat Aug 24 23:51:34 2019
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : localhost.localdomain:10  (local to host localhost.localdomain)
              UUID : 9ee47118:a7934574:6ccd01df:6e20700b
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       9        1        0      active sync   /dev/md1  //组成RAID 0的两块RAID 1磁盘
       1       9        2        1      active sync   /dev/md2

通过上面的讲解与实践操作大家应该能够配置RAID 6RAID 10,希望对大家有所帮助。

以上是关于详解CentOS 7中RAID 6与RAID 10配置(理论+实践)的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 7 RAID磁盘阵列详解一(raid0raid1)实验全程可跟做

CentOS 6下配置软RAID图文详解

CentOS 7中RAID5搭建与测试

RAID磁盘阵列详解之RAID 6的配置与无人值守(带双重分散校验的数据条带),企业常用,必学!!!

Centos 7 磁盘阵列配置介绍

RAID磁盘阵列详解之RAID 10的配置,集RAID 1的安全与RAID 0的快速于一体的磁盘阵列