RAID阵列

本文详细介绍了RAID技术的原理,包括软件RAID和硬件RAID的实现方式,以及RAID0、RAID1、RAID1+0、RAID5等级别的功能和优缺点。同时展示了如何在Linux系统中使用mdadm工具创建、管理和维护RAID阵列。
摘要由CSDN通过智能技术生成

目录

1 初识RAID

1.1 什么是RAID

1.2 RAID的实现方式

1.2.1 软件RAID

1.2.2 硬件RAID

1.3 RAID级别

1.3.1 RAID 0

1.3.2 RAID 1

1.3.3 RAID 1+0与RAID 0+1

1.3.4 RAID 5

1.3.5 RAID总结

2 软件RAID的实现

2.1 确认系统已安装mdadm

2.2  添加磁盘

2.3 改变磁盘的文件系统

2.4 创建RAID阵列(以RAID 1为例)

2.5 将设备添加阵列

2.6  将设备从阵列中删除


1 初识RAID

1.1 什么是RAID

廉价磁盘冗余阵列 (Redundant Arrays of Inexpensive Disks) 或独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。

1.2 RAID的实现方式
1.2.1 软件RAID

通过操作系统提供的磁盘管理功能将多块硬盘配置成逻辑盘来构建阵列。

软件阵列可以提供数据冗余功能,但是磁盘子系统的性能会有所降低。因此会影响机器的速度,不适合大数据流量的服务器。

1.2.2 硬件RAID

硬件RAID主要有外接式磁盘阵列柜和内接式磁盘阵列卡两种实现方式。

磁盘阵列柜主要是用在大型的服务器上,具可热交换(Hot Swap)的特性,但是价格较贵。

内接式磁盘阵列卡,也就是常说的RAID卡,有着较低的价格,能够提供在线扩容、动态修改阵列级别、自动数据恢复、驱动器漫游、超高速缓冲等功能。

1.3 RAID级别
1.3.1 RAID 0

带区卷(stripe),在所有的级别中,RAID 0的速度是最快的。在使用相同型号、相同容量的磁盘构建是,有着较好的性能。

RAID 0会将磁盘先切片出等量的数据块(chunk,一般可设置大小为4KB-1MB),在写入文件时,会将文件按照chunk的大小切片,之后再存入各个磁盘中。

虽然RAID 0读写时可以并行处理,但是其并没有冗余的功能,也就是说RAID 0不具备灾备功能,如果一个磁盘损坏,所有数据都会丢失。

1.3.2 RAID 1

镜像卷(marror),使用两的倍数块磁盘实现数据的完全备份。

在创建镜像卷的时候最好使用两块型号、大小完全相同的磁盘进行。如果使用不同容量的磁盘,总容量会以较小的那块磁盘的容量为主。

RAID 1再写入时,一份数据会被分为两股,分别写入各个磁盘,因此在写入时,RAID 1的表现并不好。但是在读取文件时,RAID 1却有着不错的性能。

1.3.3 RAID 1+0与RAID 0+1

RAID 0性能好,但是数据不安全;RAID 1数据安全,但是性能不佳。在这种情形下,RAID 0和RAID 1的组合出现了。

RAID 1+0是现组成两组RAID 1,在将两组RAID 1组成一组RAID 0。故名思意,RAID 0+1就是先组成RAID 0,在组成RAID 1。

这么做使得数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力。在提高读写速度的情况下获得了一块及以下磁盘的容错能力。

1.3.4 RAID 5

RAID5(分布式奇偶校验的独立磁盘结构)可以理解为是RAID 0和RAID 1的折中方案,需要三块及以上的磁盘才能组成这种磁盘阵列。

尽管RAID 5可以为数据提供灾备能力,但是其保障程度并不如RAID 1。不过RAID 的磁盘利用率比RAID 1高,每块磁盘只使用了1/n的容量用于备份。

1.3.5 RAID总结
项目RAID 0RAID 1RAID 10RAID 5
最少磁盘数2243
最大容错磁盘数0n-1n/21
理论写入性能n1n/2<n-1
理论读出性能nnn<n-1
可用容量n1n/2n-1
一般应用注重性能但数据不那么重要的环境数据备份服务器、云系统数据备份

注:表中的n均表示磁盘数

2 软件RAID的实现

注:生产环境中不建议使用软件RAID

2.1 确认系统已安装mdadm
#系统中默认没有安装mdadm
[root@localhost ~]# rpm -qa | grep mdadm
[root@localhost ~]# 

#使用dnf安装mdadm
[root@localhost ~]# dnf -y install mdadm

#ubuntu使用apt
xiao@xiao-virtual-machine:~$ sudo apt-get install mdadm -y
2.2  添加磁盘
[root@localhost ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0    5G  0 disk 
sdb           8:16   0    5G  0 disk 
sdc           8:32   0    5G  0 disk 
sr0          11:0    1 1024M  0 rom  
nvme0n1     259:0    0   20G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
└─nvme0n1p2 259:2    0   19G  0 part 
  ├─rl-root 253:0    0   17G  0 lvm  /
  └─rl-swap 253:1    0    2G  0 lvm  [SWAP]
[root@localhost ~]# 
2.3 改变磁盘的文件系统
[root@localhost ~]# fdisk /dev/sda

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-10485759, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-10485759, default 10485759): 

Created a new partition 1 of type 'Linux' and of size 5 GiB.

#通过l可以知道fd对应Linux raid auto

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

[root@localhost ~]# 

#sdb、sdc同理,略,利用fdisk查看文件系统可知:
[root@localhost ~]# fdisk -l /dev/sd*
Device     Boot Start      End  Sectors Size Id Type
/dev/sda1        2048 10485759 10483712   5G fd Linux raid autodetect

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 10485759 10483712   5G fd Linux raid autodetect

Device     Boot Start      End  Sectors Size Id Type
/dev/sdc1        2048 10485759 10483712   5G fd Linux raid autodetect

[root@localhost ~]# 
2.4 创建RAID阵列(以RAID 1为例)

mdadm的基本语法

[root@localhost ~]# mdadm --create /dev/md0 --level[0|1|5] --chunk=Nk --raid-devices=N --spare-devices=N
#选项与参数
--create            创建新的磁盘阵列
--level             设备的chunk大小,一般为64k或512k
--chunk             设置磁盘阵列的级别,常用的为0、1、5
--raid-devices=N    使用几个磁盘分区作为磁盘阵列的设备
--spare-devices=N   使用几个磁盘作为备用设备

#查看磁盘阵列设备的详细信息
[root@localhost ~]# mdadm --detail /dev/sda

创建名为/dev/md0的RAID 1设备,使用三个分区,其中一个作为备用设备

[root@localhost ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 --spare-devices=1 /dev/sd{a1,b1,c1}
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
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# 

查看创建状态

[root@localhost ~]# mdadm --detail /dev/md0 
/dev/md0:                                        #设备名
           Version : 1.2
     Creation Time : Thu Feb 29 07:48:18 2024    #RAID的创建时间
        Raid Level : raid1                       #RAID的级别
        Array Size : 5236736 (4.99 GiB 5.36 GB)  #可用容量
     Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
      Raid Devices : 2                           #组成RAID的磁盘数量
     Total Devices : 3                           #磁盘的总数
       Persistence : Superblock is persistent

       Update Time : Thu Feb 29 07:48:40 2024
             State : clean
    Active Devices : 2                           #启用的设备树
   Working Devices : 3                           #总数
    Failed Devices : 0                           #损坏的设备数
     Spare Devices : 1                           #备份磁盘的数量

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : f4c77782:6e4a5f13:a9c6f9a0:9e45c610
            Events : 14

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

       2       8       33        -      spare   /dev/sdc1
[root@localhost ~]# 
2.5 将设备添加阵列
[root@localhost ~]# mdadm --manage /dev/md0 --add /dev/sde1 
mdadm: added /dev/sde1
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Feb 29 07:48:18 2024
        Raid Level : raid1
        Array Size : 5236736 (4.99 GiB 5.36 GB)
     Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
      Raid Devices : 2
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Feb 29 07:57:58 2024
             State : clean 
    Active Devices : 2
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 2

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : f4c77782:6e4a5f13:a9c6f9a0:9e45c610
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

       2       8       33        -      spare   /dev/sdc1
       3       8       65        -      spare   /dev/sde1
[root@localhost ~]# 
2.6  将设备从阵列中删除
[root@localhost ~]# mdadm --manage /dev/md0 --remove /dev/sdc1     
mdadm: hot removed /dev/sdc1 from /dev/md0
[root@localhost ~]# mdadm --detail /dev/md0                    
/dev/md0:
           Version : 1.2
     Creation Time : Thu Feb 29 07:48:18 2024
        Raid Level : raid1
        Array Size : 5236736 (4.99 GiB 5.36 GB)
     Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Thu Feb 29 08:08:35 2024
             State : clean 
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 1

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : f4c77782:6e4a5f13:a9c6f9a0:9e45c610
            Events : 19

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

       3       8       65        -      spare   /dev/sde1
[root@localhost ~]# 
2.7 保存配置文件
[root@localhost ~]# mdadm --detail --scan >> /etc/mdadm.conf
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值