RAID 磁盘阵列概念、方案组以及实现

文章目录

    • RAID概念
    • RAID分类
      • 硬 RAID
      • 软 RAID
    • RAID主要优势
    • RAID 方案组
      • RAID 0
      • RAID 1
      • RAID 5
      • RAID 10
    • 实现 RAID 1
      • 创建分区、RAID 1
      • 格式化、挂载
      • 模拟损坏
      • 添加热备盘
    • 总结

RAID概念

RAID ( Redundant Array of Independent Disks —> 独立磁盘冗余阵列 ),RAID 技术是将许多块硬盘设备组合成一个容量更大、更安全的硬盘组,可以将数据切割成多个区段后分别存放在各个不同物理硬盘设备上,然后利用分散读写需求来提升硬盘组整体的性能,同时将重要数据同步保存多份到不同的物理硬盘设备上,可以有非常好的数据备份效果。

RAID分类

硬 RAID

使用硬件阵列卡,硬 RAID 拥有自己的 RAID 控制处理与 I/O 处理芯片,甚至还有阵列缓冲,对 CPU 的占用率和整体性能是三类实现中最优的,但实现成本也最高的。硬 RAID 通常都支持热交换技术,在系统运行下更换故障磁盘。

RAID 磁盘阵列概念、方案组以及实现_第1张图片

软 RAID

通过操作系统软件来实现,软 RAID 没有专用的控制芯片和 I/O 芯片,完全由操作系统和 CPU 来实现所的 RAID 的功能。现代操作系统基本上都提供软 RAID 支持,通过在磁盘设备驱动程序上添加一个软件层,提供一个物理驱动器与逻辑驱动器之间的抽象层。

RAID主要优势

高性能:RAID 将数据 I/O 分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合 I/O 性能

大容量:RAID 扩大了磁盘的容量,由多个磁盘组成的 RAID 系统具有海量的存储空间

可靠性:RAID 冗余技术大幅提升数据可用性和可靠性,保证了若干磁盘出错时,不会导致数据的丢失

可管理性:RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器

RAID 方案组

RAID 等级 RAID0 RAID1 RAID5 RAID10
别名 条带 镜像 分布奇偶校验条带 镜像加条带
容错性
冗余类型
热备份选择
读性能
随机写性能 一般 一般
连续写性能 一般
需要磁盘数 n≥1 2n (n≥1) n≥3 2n(n≥2)≥4
可用容量 全部 50% (n-1)/n 50%

RAID 0

将多块物理硬盘设备通过硬件或软件的方式串联在一起( 需磁盘数量2块以上,最好大小相同 ),成为一个大的卷组,称为条带卷。它将数据依次分别写入到各个物理硬盘中,这样最理想的状态会使得读写性能提升数倍,但是任意一块故障都会使整个系统故障。

RAID 磁盘阵列概念、方案组以及实现_第2张图片

如图,数据被写入到不同的硬盘设备中

特点:成本低,可以提高整个磁盘的性能和吞吐量

应用场景: 迅速读写,安全性要求不高, 比如图形工作站

RAID 1

把数据再制作出多份镜像,当有某一块硬盘损坏后,一般可以立即通过热交换方式来恢复数据的正常使用。因此追求数据安全性的时候就不应该使用RAID0,而是使用RAID1。

RAID 磁盘阵列概念、方案组以及实现_第3张图片

如图,同一份数据保存了多份

RAID 5

需要三块或以上硬盘,可以提供热备盘实现故障的恢复;只损坏一块,没有问题。但如果同时损坏两块磁盘,则数据将都会损坏。RAID5硬盘组技术虽然理论上是兼顾三者的,但实际上是对各个方面的互相妥协和平衡。

RAID 磁盘阵列概念、方案组以及实现_第4张图片

如图:同时存储数据和校验数据

应用场景: 随机数据写入,安全性要求比较高,服务器,数据库存储

RAID 10

RAID5 在成本问题和读写速度以及安全性能上进行了平衡,但是相比价格,数据的价值才是更重要的,因此更多的是使用RAID10,就是对 RAID1 + RAID0 的一个 “组合体”。

RAID 磁盘阵列概念、方案组以及实现_第5张图片

如图,先由 RAID1保存多份,再由 RAID 0 写入到不同磁盘

应用场景: 有大量数据需要存储,同时又对数据安全性要求比较高的领域,银行,商务

实现 RAID 1

RAID-1 :mirroring(镜像卷)需要磁盘两块以上

原理:是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件( 同步 )

特性:当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。

创建分区、RAID 1

详细创建请看上一篇博客:Fdisk 创建分区、进行格式化、最后挂载目录,创建四个5G分主分区

[root@fp-21 ~]# fdisk -l
……
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    10487807     5242880   83  Linux
/dev/sdd2        10487808    20973567     5242880   83  Linux
/dev/sdd3        20973568    31459327     5242880   83  Linux
/dev/sdd4        31459328    41943039     5241856    5  Extended
…… 
[root@fp-21 ~]# partprobe /dev/sdd
[root@fp-21 ~]# ll /dev/sdd*
brw-rw----. 1 root disk 8, 48 Feb 28 23:57 /dev/sdd
brw-rw----. 1 root disk 8, 49 Feb 28 23:57 /dev/sdd1
brw-rw----. 1 root disk 8, 50 Feb 28 23:57 /dev/sdd2
brw-rw----. 1 root disk 8, 51 Feb 28 23:57 /dev/sdd3
brw-rw----. 1 root disk 8, 52 Feb 28 23:57 /dev/sdd4

安装管理软件 RAID 的软件:mdadm

[root@fp-21 ~]# yum -y install mdadm
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/x86_64/metalink              | 5.4 kB     00:00     
 * base: mirrors.aliyun.com
 * epel: mirrors.njupt.edu.cn
……
Installed:
  mdadm.x86_64 0:4.1-1.el7                               
Complete!

创建 RAID 1

[root@fp-21 ~]# mdadm -C -v /dev/md2  -l 1 -n 2 -x 1 /dev/sdd1 /dev/sdd[2,3]
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 5237760K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.

将RAID1信息保存到配置文件中

# 查看 RAID1 信息
[root@fp-21 ~]# mdadm -Dsv 
ARRAY /dev/md2 level=raid1 num-devices=2 metadata=1.2 spares=1 name=fp-21:2 UUID=54add2b3:71f8fe8f:c6c2fb47:7c5d22d9
   devices=/dev/sdd1,/dev/sdd2,/dev/sdd3
# 将 RAID1 信息添加到配置文件中
[root@fp-21 ~]# mdadm -Dsv > /etc/mdadm.conf

检查磁盘阵列

[root@fp-21 ~]# mdadm -D /dev/md2 
/dev/md2:
           Version : 1.2
     Creation Time : Fri Feb 28 23:58:02 2020	# 磁盘阵列创建的时间
        Raid Level : raid1
        Array Size : 5237760 (5.00 GiB 5.36 GB)
     Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Fri Feb 28 23:58:15 2020
             State : clean 
    Active Devices : 2	# 当前的活动设备数量
   Working Devices : 3	# 工作设备
    Failed Devices : 0	# 失效的设备
     Spare Devices : 1	# 热备份的数量

Consistency Policy : resync

              Name : fp-21:2  (local to host fp-21)
              UUID : 54add2b3:71f8fe8f:c6c2fb47:7c5d22d9
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync   /dev/sdd1
       1       8       50        1      active sync   /dev/sdd2
       
       2       8       51        -      spare   /dev/sdd3

格式化、挂载

在 raid 设备上创建文件系统并挂载

# 格式化
[root@fp-21 ~]# mkfs.xfs /dev/md2
meta-data=/dev/md2               isize=512    agcount=4, agsize=327360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1309440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
# 创建挂载目录
[root@fp-21 ~]# mkdir /opt/raid1
# 挂载
[root@fp-21 ~]# mount /dev/md2 /opt/raid1/
# 查看挂载是否成功
[root@fp-21 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  1.9G   16G  12% /
devtmpfs                 2.0G     0  2.0G   0% /dev
tmpfs                    2.0G     0  2.0G   0% /dev/shm
tmpfs                    2.0G   12M  2.0G   1% /run
tmpfs                    2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/sda1               1014M  133M  882M  14% /boot
tmpfs                    394M     0  394M   0% /run/user/0
/dev/md2                 5.0G   33M  5.0G   1% /opt/raid1

创建测试文件

[root@fp-21 ~]# touch /opt/test.txt
[root@fp-21 ~]# echo "如果一块磁盘损坏,我是否还存在?" > !$
echo "如果一块磁盘损坏,我是否还存在?" > /opt/test.txt

模拟损坏

# 损坏磁盘
[root@fp-21 ~]# mdadm /dev/md2 -f /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md2
# 查看阵列详细信息
[root@fp-21 ~]# mdadm  -D /dev/md2
/dev/md2:
           Version : 1.2
     Creation Time : Fri Feb 28 23:58:02 2020
        Raid Level : raid1
        Array Size : 5237760 (5.00 GiB 5.36 GB)
     Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Sat Feb 29 00:10:08 2020
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 1
     Spare Devices : 0

Consistency Policy : resync

              Name : fp-21:2  (local to host fp-21)
              UUID : 54add2b3:71f8fe8f:c6c2fb47:7c5d22d9
            Events : 36

    Number   Major   Minor   RaidDevice State
       2       8       51        0      active sync   /dev/sdd3
       1       8       50        1      active sync   /dev/sdd2

       0       8       49        -      faulty   /dev/sdd1

查看测试文件

[root@fp-21 ~]# cat /opt/test.txt 
如果一块磁盘损坏,我是否还存在?

移除损坏设备

[root@fp-21 ~]# mdadm  -r /dev/md2 /dev/sdd1
mdadm: hot removed /dev/sdd1 from /dev/md2

添加热备盘

[root@fp-21 ~]# mdadm -a /dev/md2 /dev/sdd4
mdadm: /dev/sdd4 not large enough to join array

总结

只有注入思想的博客才是好的博客

你可能感兴趣的:(centos,RAID,磁盘阵列,linux,raid,0,raid,1)