在Linux中配置软件RAID 5

时间:2020-01-09 10:37:47  来源:igfitidea点击:

在本文中,我将分享"使用三个磁盘配置raid 5的步骤",但是我们可以根据需要使用相同的方法为3个以上的磁盘创建raid 5阵列。

我将在接下来的章节中对此进行更详细的解释。
我写了另一篇文章"比较和比较各种RAID类型之间的差异,使用了包括各个RAID类型的优缺点在内的数字",以便我们可以在为系统选择RAID类型之前做出明智的决定。

RAID 5:分布式奇偶校验

RAID 5与RAID-4相似,只是奇偶校验信息分布在阵列中的所有驱动器上。
这有助于减少每次写入操作期间将奇偶校验信息写入单个驱动器的固有瓶颈。

RAID 5如何工作?

RAID-5使用与RAID-4中相同的XOR算法,消除了对阵列中每个磁盘的专用奇偶校验驱动器和条带校验信息的使用。
在每次写操作期间,每个条带中的一块数据值用于存储奇偶校验。
存储奇偶校验的磁盘会与每个条带交替出现,直到每个磁盘都具有一个大块的奇偶校验信息。
然后从第一个磁盘开始重复该过程。

以具有五个成员磁盘的RAID-5为例。
在这种情况下,每个成员磁盘上每五个块大小的块将包含其他四个磁盘的奇偶校验信息。
这意味着,与RAID-1和RAID-4一样,总存储空间的一部分将不可用。
在具有五个磁盘的阵列中,奇偶校验信息占用单个磁盘的空间,尽管奇偶校验信息分布在阵列中的每个磁盘上。
通常,如果RAID-5中有N个磁盘驱动器,每个磁盘驱动器的大小均为S,那么我们将获得(N-1)* S可用空间。
因此,RAID-4和RAID-5产生相同的可用存储。

重要的提示:

与RAID-4一样,RAID-5只能承受单个磁盘故障。
如果多个驱动器发生故障,则阵列上的所有数据都会丢失。

为什么选择RAID 5而不是RAID 4?

RAID-5已在Internet和电子商务中变得非常流行,因为它允许管理员在不牺牲RAID-1配置中所需的大量磁盘空间或者避免RAID-固有的瓶颈的情况下达到安全级别的容错能力。
4, RAID-5在跨多个服务器复制数据的生产环境中特别有用,从而将内部对磁盘冗余的需求从一台计算机转移到了一部分。

另请阅读:

分步教程:在Linux中配置软件Linear RAID 0分步教程:在Linux中配置软件RAID 0分步教程:在Linux中配置软件RAID 1分步教程:配置软件RAID Linux分步教程中的4:在Linux中配置混合软件RAID 10

配置软件RAID 5

在Linux节点上创建软件RAID 5之前,必须遵循以下某些步骤。
由于我已经在较早的文章中执行了这些步骤,因此我将在此处共享超链接:

重要的分区规则

用fdisk分区

创建软件RAID 5阵列

提示:

与软件RAID 4相比,软件RAID 5提供了更好的性能。
几乎每个人都应该选择前者。

现在,由于我们拥有所有分区,因此我们将在这些分区上创建软件RAID 4阵列

[root@node1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda               8:0    0   30G  0 disk
├─sda1            8:1    0  512M  0 part  /boot
└─sda2            8:2    0 27.5G  0 part
  ├─centos-root 253:0    0 25.5G  0 lvm   /
  └─centos-swap 253:1    0    2G  0 lvm   [SWAP]
sdb               8:16   0    2G  0 disk
└─sdb1            8:17   0    2G  0 part
sdc               8:32   0    2G  0 disk
└─sdc1            8:33   0    2G  0 part
sdd               8:48   0    2G  0 disk
└─sdd1            8:49   0    2G  0 part
sr0              11:0    1 1024M  0 rom

执行以下命令以使用/dev/sdb1/dev/sdc1/dev/sdd1创建软件RAID 5阵列。

[root@node1 ~]# mdadm -Cv -l5 -c64 -n3 -pls /dev/md0 /dev/sd{b,c,d}1
mdadm: /dev/sdb1 appears to contain an ext2fs file system
       size=2096128K  mtime=Wed Jun 12 11:21:25 2019
mdadm: size set to 2094080K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

mdadm默认为左对称算法,因此我们可以从命令行安全地省略-p选项。

提示:

左对称算法将为RAID-5产生最佳的磁盘性能,尽管此值可以更改为其他算法之一(右对称,左非对称或者右非对称)。

其中

-C, --create
       Create a new array.
			  
-v, --verbose
       Be  more  verbose about what is happening. 
-l, --level=
       Set RAID level.  When used with --create, options are: linear, raid0,  0,  stripe,  raid1,  1,  mirror,
       raid4,  4,  raid5,  5, raid6, 6, raid10, 10, multipath, mp, faulty, container.  Obviously some of these
       are synonymous.
-c, --chunk=
       Specify chunk size of kilobytes.
-n, --raid-devices=
       Specify  the number of active devices in the array.
-p, --layout=
       This option configures the fine details of data layout for RAID5, RAID6, and RAID10 arrays, and controls the failure  modes
       for faulty.
       The  layout of the RAID5 parity block can be one of left-asymmetric, left-symmetric, right-asymmetric, right-symmetric, la,
       ra, ls, rs.  The default is left-symmetric.

验证更改

RAID-5在性能和冗余之间实现了经济高效的平衡。
我们可以使用设备/随机磁盘添加更多磁盘,或者使用设备/备用磁盘添加备用磁盘,以创建大型的容错存储。

[root@node1 ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
      4188160 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/2] [UU_]
      [=======>.............]  recovery = 38.1% (800128/2094080) finish=0.0min speed=266709K/sec
unused devices: <none>

创建文件系统和挂载点

一旦激活了所有三个阵列,在这种情况下,只需在条带/dev/md0上构建一个文件系统,然后将/dev/md0安装在安装点上即可。
我已经写了一篇文章"创建文件系统和安装点以访问文件系统",我们可以按照同一篇文章并在"/dev/md0"上创建所需的文件系统来访问软件RAID 5阵列。

创建具有更多磁盘的软件RAID 5

要使用5个磁盘分区来创建软件RAID 5阵列,可以使用以下命令

# mdadm -C -l5 -c64 -n5 -x1 /dev/md0 /dev/sd{b,f,c,g,d,h}1

在磁盘出现故障期间,由于每次需要来自发生故障的驱动器的数据时,奇偶校验算法必须重新构造丢失的数据,因此RAID-5读取性能会降低。
磁盘故障期间的写入不会影响性能,实际上会稍快一些。

一旦更换了故障磁盘,根据硬件的不同,数据重建将自动开始或者在系统管理员干预之后开始。

同步完成后,请重新验证mdstat的输出

[root@node1 ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
      4188160 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>