Linux磁盘列阵(RAID),包括RAID详解、Linux磁盘列阵和mdadm命令的相关操作

文章目录

    • 什么是RAID
    • The level of RAID
    • RAID的实现
    • 软件磁盘列阵的建立(Ubuntu下的操作)
    • 关于mdadm用法的详解(友链)

什么是RAID

磁盘列阵(Redundant Arrays of Independent Disks,RAID),即独立磁盘冗余阵列。
是把相同的数据存储在多个硬盘的不同的地方的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间,储存冗余数据也增加了容错。那么他到底是怎么实现的呢?

The level of RAID

  1. RAID 0 (Data Stripping):性能最佳
    该模式需要两个以上的硬盘,RAID会先将硬盘分成等量的数据块(chunk,一般4k~1MB左右),然后当一个数据需要写入的时候,就会先把数据分成与每个chunk一样大小的的块,然后,将数据依次写入个个硬盘的chunk当中,举个例子,如下图:Linux磁盘列阵(RAID),包括RAID详解、Linux磁盘列阵和mdadm命令的相关操作_第1张图片
    假设有两个硬盘Disk A和Disk B,当我们需要写入100MB数据时,每个硬盘就会被分配到50MB,然后两个50MB会被分成如图所示的数据块,对于我们的数据(即图中的档案资料),也会被分割成相同大小的块,然后每一块数据就会被依次写入硬盘中,例如第一块先写入Disk A,后一块就会被写入Disk B。

    那这样做有什么好处和弊端呢
    显而易见的是,由于数据被分开写入了多块硬盘,所以读写的速度就大大提升了,性能很高,但缺陷是一旦其中一个硬盘损坏了,那整个RAID 0 上面的数据就全部损坏,无法完整的读取,安全性存在很大的问题。

  2. RAID 1 (mirror):镜像模式
    该模式也需要两块以上的硬盘,那为什么成为镜像模式呢,那是因为该模式下的数据存储方式就是将一份数据完整的保存在两块磁盘上,两个硬盘就像镜像一样,也可以说是备份文件,举例说明一下:Linux磁盘列阵(RAID),包括RAID详解、Linux磁盘列阵和mdadm命令的相关操作_第2张图片
    假设我们有100MB的数据需要写入硬盘中,当这100MB数据传输到I/O总线时,就会被复制到多个硬盘中,因此每个硬盘都有完整的100MB数据,但数据总量会增加,所以读写速度会下降,硬盘的总容量也会降低,因为总有一一半的容量被用于备份文件了,但好处在于安全性能较高,即使一个硬盘损坏了也还有备份数据。

  3. RAID 1+0,RAID0+1
    单从名字来看,应该是个安全与性能的结合版,没错,RAID 1+0的运行方式就是:先将两块硬盘组成RAID 1,并设置两组,也就是四块硬盘,再将这两组RAID 1组成一组RAID 0,举例说明:Linux磁盘列阵(RAID),包括RAID详解、Linux磁盘列阵和mdadm命令的相关操作_第3张图片
    可以看出Diak A和Disk B组成一组RAID 1,Disk C和Disk D组成一组RAID 1,然后这两组RAID 1组成RAID 0,此时同样将100MB数据写入,这100MB数据先经过RAID 0,被分成了两个50MB分别传入两组RAID 1,两组RAID 1在备份数据。

  4. RAID 5
    如下图:
    Linux磁盘列阵(RAID),包括RAID详解、Linux磁盘列阵和mdadm命令的相关操作_第4张图片
    实际的数据资料被写入的时候会产生一个奇偶校验值(parity),这个奇偶校验值会连同数据一起被记录下来,并且是被记录在不同的磁盘中,一旦某个磁盘损坏,就马上调用其他磁盘的检查码来回复数据,因此安全性较高。

RAID的实现

  • 硬件磁盘列阵(硬件RAID)
    显而易见就是通过硬件设施来实现磁盘列阵,包括基于主机的硬件RAID和基于阵列的硬件RAID。

    基于主机的硬件RAID通常是将专用RAID控制器安装在主机上,有的制造商还将RAID控制器集成到主板上。

    基于阵列的硬件RAID是使用外部硬件RAID控制器,它充当主机与磁盘之间的接口,将存储卷呈现给主机,主机将这些卷作为物理驱动器进行管理。

  • 软件磁盘列阵(软件RAID)
    通过软件来实现RAID,基于操作系统的基础上实现的。

软件磁盘列阵的建立(Ubuntu下的操作)

首先下载:

apt-get update
apt install madam

创建RAID:

mdadm --create /dev/md0 --auto=yes --level=5 --chunk=64K --raid-devices=4 --spare-devices=1 /dev/vda[5-9]
#--create            //表示要创建raid
#/dev/md0   		//新建立的软件磁盘陈列设备为md0,md序号可以为0-9
#--auto=yes			//决定建立后面接的软件磁盘成列设备
#--level=5          //磁盘阵列的等级,这里是raid5
#--chunk=64k		//每个数据块的大小
#--raid-devices     //使用几个磁盘分区作为磁盘列阵的设备
#--spare-devices=1  //使用几个磁盘作为备用设备
#/dev/vd[5-9]       //磁盘阵列所使用的设备,即“/dev/vd5 /dev/vd6 /dev/vd7 /dev/vd8 /dev/vd9”

然后可以使用一下命令查看具体分区情况:

mdadm --detail /dev/md0
#用于查看RAID设备的具体信息

关于mdadm用法的详解(友链)

mdadm - Unix, Linux Command
mdadm命令详解

你可能感兴趣的:(Linux学习笔记,linux,ubuntu,运维)