只求微微一笑 发表于 2023-12-24 19:23:45

RAID磁盘阵列

目录

[*]一、RAID的介绍

[*]1、RAID存储方式
[*]2、RAID逻辑卷

[*]二、RAID的分类

[*]1、RAID 0
[*]2、RAID 1
[*]3、RAID 2
[*]4、RAID 3
[*]5、RAID 4
[*]6、RAID 5
[*]7、RAID 6
[*]8、RAID 10

[*]三、RAID比较
[*]四、部署磁盘阵列
[*]五、损坏磁盘阵列及修复

[*]取消挂载
[*]扩展

[*]六、磁盘阵列+备份盘

一、RAID的介绍

​                RAID简称廉价磁盘冗余阵列 (Redundant Arrays of Inexpensive Disks) 或独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。
​                利用虚拟化技术把多个硬盘组合起来,成为一个或多个硬盘阵列组目的是为了提升性能或者减少冗余。
1、RAID存储方式

​                分块:将一个分区分成多个大小相等的、地址相邻的块,它是组成条带的元素。
​                条带:同一磁盘阵列中的多个磁盘驱动器上的相同“位置”(或者说相同编号)的分块。
2、RAID逻辑卷

​                我们常常将一块硬盘分成两个C盘和D盘(windows系统),这里的C盘和D盘就是逻辑卷,此处反过来,将多块硬盘虚拟成一块逻辑盘。

二、RAID的分类

1、RAID 0

​                RAID 0 是一种简单的、无数据校验的数据条带化技术。没有容错设计的条带硬盘阵列,以条带形式将RAID组的数据均匀分布在各个硬盘中。
​                优点:追求最大容量(将多个物理硬盘虚拟成一个逻辑磁盘)、读写速度、实现成本低、100%的高存储空间利用率。
​                缺点:RAID 0没有提供冗余或错误修复能力。
​                适用场景: RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。

2、RAID 1

​                RAID 1又称磁盘镜像,数据同时一致写到主硬盘和镜像硬盘。所以磁盘利用率只有50%。只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。
​                优点:追求最大安全性。
​                缺点:磁盘利用率低,成本高。
​                适用场景:RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。

3、RAID 2

​                RAID 2称为纠错海明码磁盘阵列,其设计思想是利用海明码实现数据校验冗余。 RAID 2的数据宽度越大,存储空间利用率越高,但同时需要的磁盘数量也越多。
​                优点:数据安全性高,数据传输性能相当高,设计复杂度低于RAID 3、RAID 4、RAID 5。
​                缺点:数据冗余开销大,数据输出性能受阵列中最慢磁盘驱动器的限制。数据重建非常耗时。(很少应用)

4、RAID 3

带有校验的并行数据传输阵列,数据条带化分布在数据盘中,同时使用专用校验硬盘存放校验数据。
注意:有效容量 RAID 3=(N-1)* 单块硬盘大小,其中N为硬盘总数量。

​                优点:磁盘阵列的存储空间利用率高。
​                缺点:RAID 3出现坏盘时性能大幅下降
​                适用场景:适用大容量数据的顺序访问应用,如影像处理、流媒体服务等。
5、RAID 4

​                RAID 4 与 RAID 3 的原理大致相同,区别在于条带化的方式不同。 RAID 4按照 块的方式来组织数据,写操作只涉及当前数据盘和校验盘两个盘,多个 I/O 请求可以同时得到处理,提高了系统性能。 RAID 4 按块存储可以保证单块的完整性,可以避免受到其他磁盘上同条带产生的不利影响。
  RAID 4 在不同磁盘上的同级数据块同样使用 XOR 校验,结果存储在校验盘中。写入数据时, RAID 4 按这种方式把各磁盘上的同级数据的校验值写入校验 盘,读取时进行即时校验。因此,当某块磁盘的数据块损坏, RAID4 可以通过校验值以及其他磁盘上的同级数据块进行数据重建。
  优点:提供了 非常好的读性能
​                缺点:单一的校验盘往往成为系统性能的瓶颈。写性能比较差。(RAID 4 在实际应用中很少见,主流存储产品也很少使用 RAID 4 保护。)

6、RAID 5

​                与RAID 3机制类似,但校验数据均匀分布在各数据硬盘上,RAID成员硬盘上同时保存数据和校验信息,数据块和对应的校验信息保存在不同硬盘上。RAID 5是最常用的RAID方式之一
​                RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性。但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。
​                注意:有效容量 RAID 5=(N-1)*单块盘大小,其中N为硬盘总数
组建RAID 5最少3块盘,允许坏一块盘

7、RAID 6

​                RAID 6技术是在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID 5等级。校验盘分为:横向校验盘和斜向校验盘
​                优点:快速的读取性能,更高的容错能力
​                缺点:很慢的写入速度,RAID控制器在设计上更加复杂,成本更高
​                适用场景:RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。

8、RAID 10

​                将镜像和条带进行两级组合的RAID级别,第一级是RAID 1,第二级为RAID 0
RAID 10也是一种应用广泛的RAID级别,磁盘利用率50%
优点:同时拥有RAID 0的超凡速度和RAID 1的数据高可靠性
缺点:CPU占用率高,而且磁盘的利用率比较低,这种新结构的可扩充性不好,成本高

三、RAID比较

RAID 等级RAID0RAID1RAID3RAID5RAID6RAID10别名条带镜像专用奇偶校验条带分布奇偶校验条带双重奇偶校验条带镜像加条带容错性无有有有有有冗余类型无有有有有有热备份选择无有有有有有读性能高低高高高高随机写性能高低低一般低一般连续写性能高低低低低一般需要磁盘数n≥12n (n≥1)n≥3n≥3n≥42n(n≥2)≥4可用容量全部50%(n-1)/n(n-1)/n(n-2)/n50%四、部署磁盘阵列

先移除全部新加的盘,再新添加4个盘

mdadm命令的常用参数以及作用
参数作用-a通知mdadm是否创建设备文件,并分配一个未使用的次设备号-n指定设备数量-l指定RAID级别-C创建-v显示过程-f模拟设备损坏-r移除设备-Q查看摘要信息-D查看详细信息-S停止RAID磁盘阵列-x备份盘数量lsblk查看新添的硬盘是否添加成功
# lsblk
NAME            MAJ:MIN RMSIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G0 disk
├─sda1            8:1    0    1G0 part /boot
└─sda2            8:2    0   19G0 part
├─centos-root 253:0    0   17G0 lvm/
└─centos-swap 253:1    0    2G0 lvm
sdb               8:16   0   20G0 disk
sdc               8:32   0   20G0 disk
sdd               8:48   0   20G0 disk
sde               8:64   0   20G0 disk
sr0            11:0    14.4G0 rom
# yum -y install mdadm
# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
把制作好的RAID磁盘阵列格式化为ext4格式
# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477056 blocks
523852 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
      32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
      4096000, 7962624

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
创建挂载点然后把硬盘设备进行挂载操作
# mkdir /mnt/RAID
# mount /dev/md0 /mnt/RAID
# df -h
文件系统               容量已用可用 已用% 挂载点
devtmpfs               1.9G   01.9G    0% /dev
tmpfs                  1.9G   01.9G    0% /dev/shm
tmpfs                  1.9G   12M1.9G    1% /run
tmpfs                  1.9G   01.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G2.0G   16G   12% /
/dev/sda1               1014M151M864M   15% /boot
tmpfs                  378M   0378M    0% /run/user/0
/dev/md0                  40G   49M   38G    1% /mnt/RAID
查看/dev/md0磁盘阵列的详细信息,并把挂载信息写入到配置文件中,使其永久生效。
# mdadm -D /dev/md0
/dev/md0:
         Version : 1.2
   Creation Time : Sun Dec 24 14:40:25 2023
      Raid Level : raid10
      Array Size : 41908224 (39.97 GiB 42.91 GB)
   Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
   Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sun Dec 24 15:19:22 2023
             State : active
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
   Spare Devices : 0

            Layout : near=2
      Chunk Size : 512K

Consistency Policy : resync

            Name : localhost:0(local to host localhost)
            UUID : dfea21e4:7f4a5550:44379f9b:5b332b40
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       16      0      active sync set-A   /dev/sdb
       1       8       32      1      active sync set-B   /dev/sdc
       2       8       48      2      active sync set-A   /dev/sdd
       3       8       64      3      active sync set-B   /dev/sde开机自动挂载
# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
# reboot
# dd < /dev/zero > file bs=256M count=4
记录了4+0 的读入
记录了4+0 的写出
1073741824字节(1.1 GB)已复制,3.80257 秒,282 MB/秒五、损坏磁盘阵列及修复

在确认有一块物理硬盘设备出现损坏而不能继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状态,可以发现状态已经改变。
# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
# mdadm -D /dev/md0
/dev/md0:
         Version : 1.2
   Creation Time : Sun Dec 24 14:40:25 2023
      Raid Level : raid10
      Array Size : 41908224 (39.97 GiB 42.91 GB)
   Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
   Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sun Dec 24 15:37:11 2023
             State : clean, degraded
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
   Spare Devices : 0

            Layout : near=2
      Chunk Size : 512K

Consistency Policy : resync

            Name : localhost:0(local to host localhost)
            UUID : dfea21e4:7f4a5550:44379f9b:5b332b40
            Events : 20

    Number   Major   Minor   RaidDevice State
       -       0      0      0      removed
       1       8       32      1      active sync set-B   /dev/sdc
       2       8       48      2      active sync set-A   /dev/sdd
       3       8       64      3      active sync set-B   /dev/sde

       0       8       16      -      faulty   /dev/sdb
在RAID 10级别的磁盘阵列中,当RAID 1磁盘阵列中存在一个故障盘时并不影响RAID 10磁盘阵列的使用。当购买了新的硬盘设备后再使用mdadm命令来予以替换即可,在此期间我们可以在/RAID目录中正常地创建或删除文件。由于我们是在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到RAID磁盘阵列中。
先热移除sdb
再添加sdb
# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0
# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
# mdadm -D /dev/md0
/dev/md0:
         Version : 1.2
   Creation Time : Sun Dec 24 14:40:25 2023
      Raid Level : raid10
      Array Size : 41908224 (39.97 GiB 42.91 GB)
   Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
   Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sun Dec 24 15:44:50 2023
             State : clean, degraded, recovering
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
   Spare Devices : 1

            Layout : near=2
      Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 26% complete

            Name : localhost:0(local to host localhost)
            UUID : dfea21e4:7f4a5550:44379f9b:5b332b40
            Events : 27

    Number   Major   Minor   RaidDevice State
       4       8       16      0      spare rebuilding   /dev/sdb
       1       8       32      1      active sync set-B   /dev/sdc
       2       8       48      2      active sync set-A   /dev/sdd
       3       8       64      3      active sync set-B   /dev/sde
# echo "/dev/md0    /mnt/RAID    ext4    defaults    0    0" >> /etc/fstab
# mount /dev/md0 /mnt/RAID

#查看是否修复成功
# df -h
文件系统               容量已用可用 已用% 挂载点
devtmpfs               1.9G   01.9G    0% /dev
tmpfs                  1.9G   01.9G    0% /dev/shm
tmpfs                  1.9G   12M1.9G    1% /run
tmpfs                  1.9G   01.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G3.0G   15G   18% /
/dev/md0                  40G   49M   38G    1% /RAID
/dev/sda1               1014M151M864M   15% /boot
tmpfs                  378M   0378M    0% /run/user/0
# lsblk
NAME            MAJ:MIN RMSIZE RO TYPE   MOUNTPOINT
sda               8:0    0   20G0 disk
├─sda1            8:1    0    1G0 part   /boot
└─sda2            8:2    0   19G0 part
├─centos-root 253:0    0   17G0 lvm    /
└─centos-swap 253:1    0    2G0 lvm   
sdb               8:16   0   20G0 disk
└─md0             9:0    0   40G0 raid10 /mnt/RAID
sdc               8:32   0   20G0 disk
└─md0             9:0    0   40G0 raid10 /mnt/RAID
sdd               8:48   0   20G0 disk
└─md0             9:0    0   40G0 raid10 /mnt/RAID
sde               8:64   0   20G0 disk
└─md0             9:0    0   40G0 raid10 /mnt/RAID
sr0            11:0    14.4G0 rom取消挂载

关闭RAID阵列
# mdadm -S /dev/md0
#必须清除成员磁盘当中阵列的超级块信息,这一步很重要!否则开机会重新做RAID


# 若显示如下信息
mdadm: Cannot get exclusive access to /dev/md0:Perhaps a running process, mounted filesystem or active volume group?

解决方案:
fuser -vm /dev/md0
                     用户   进程号 权限   命令
/dev/md0:            root   kernel mount /mnt/RAID
                     root       1335 ..c.. zsh
kill -9 1335
df -h
/dev/md0                  40G1.1G   37G    3% /mnt/RAID
umount /dev/md0


# mdadm --zero-superblock /dev/sd
#取消开机自动挂载,干掉那一行
# vim /etc/fstab
删除有md0那一行(很重要,没有这个磁盘或者目录,无法正常开机)
扩展

LINUX下彻底关闭某个RAID磁盘阵列
1、查看RAID磁盘阵列信息,确认要关闭哪个。(比如)
# cat /proc/mdstat
Personalities :
md0 : active raid10 sdb sdc sde sdd
      41908224 blocks super 1.2 512K chunks 2 near-copies

unused devices: <none>
2、卸载md0这个阵列的挂载点:
# umount /RAID
3、停止md0这个阵列,并释放与该阵列相关的所有资源:
# mdadm -S /dev/md0
mdadm: stopped /dev/md0
注意:如果在停止md0的阵列前,却没有把它卸载(umount)掉,会出现如下提示:
# mdadm -S /dev/md0
mdadm: Cannot get exclusive access to /dev/md0:Perhaps a running process, mounted filesystem or active volume group?
4、清除成员磁盘当中阵列的超级块信息,这一步很重要!
# mdadm --zero-superblock /dev/sd
5、删除或注释/etc/fstab上的挂载信息
vim /etc/fstab
6、删除或注释/etc/mdadm.conf对应的RAID信息:
vim /etc/mdadm.conf7、如果做完上面所有的操作后,发现/dev/下还有md0这个设备文件存在,直接rm -f /dev/md0即可
rm -rf /dev/md0六、磁盘阵列+备份盘

注意:还原快照先
部署RAID 5磁盘阵列时,需要用到4块硬盘。现在创建一个RAID 5磁盘阵列+备份盘。

# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
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/md0 started.

#参数-n 3代表创建这个RAID 5磁盘阵列所需的硬盘数,参数-l 5代表RAID的级别,而参数-x 1则代表有一块备份盘。当查看/dev/md0(即RAID 5磁盘阵列的名称)磁盘阵列的时候就能看到有一块备份盘在等待中了。# mdadm -D /dev/md0
/dev/md0:
         Version : 1.2
   Creation Time : Sun Dec 24 16:46:45 2023
      Raid Level : raid5
      Array Size : 41908224 (39.97 GiB 42.91 GB)
   Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
   Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sun Dec 24 16:48:31 2023
             State : clean
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
   Spare Devices : 1

            Layout : left-symmetric
      Chunk Size : 512K

Consistency Policy : resync

            Name : localhost:0(local to host localhost)
            UUID : ef77d022:cb8db5f6:6d692ea0:a84f7525
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       16      0      active sync   /dev/sdb
       1       8       32      1      active sync   /dev/sdc
       4       8       48      2      active sync   /dev/sdd

       3       8       64      -      spare   /dev/sde
将部署好的RAID 5磁盘阵列格式化为ext4文件,然后挂载到目录上,之后就可以使用了。
# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477056 blocks
523852 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
      32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
      4096000, 7962624

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
# echo "/dev/md0 /mnt/RAID ext4 defaults 0 0" >> /etc/fstab# mkdir /mnt/RAID
# mount /dev/md0 /mnt/RAID
# df -h
文件系统               容量已用可用 已用% 挂载点
devtmpfs               1.9G   01.9G    0% /dev
tmpfs                  1.9G   01.9G    0% /dev/shm
tmpfs                  1.9G   12M1.9G    1% /run
tmpfs                  1.9G   01.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G2.0G   16G   12% /
/dev/sda1               1014M151M864M   15% /boot
tmpfs                  378M   0378M    0% /run/user/0
/dev/md0                  40G   49M   38G    1% /mnt/RAID# lsblkNAME            MAJ:MIN RMSIZE RO TYPEMOUNTPOINTsda               8:0    0   20G0 disk├─sda1            8:1    0    1G0 part/boot└─sda2            8:2    0   19G0 part├─centos-root 253:0    0   17G0 lvm   /└─centos-swap 253:1    0    2G0 lvm   sdb               8:16   0   20G0 disk└─md0             9:0    0   40G0 raid5 /mnt/RAIDsdc               8:32   0   20G0 disk└─md0             9:0    0   40G0 raid5 /mnt/RAIDsdd               8:48   0   20G0 disk└─md0             9:0    0   40G0 raid5 /mnt/RAIDsde               8:64   0   20G0 disk└─md0             9:0    0   40G0 raid5 /mnt/RAIDsr0            11:0    14.4G0 rom
把硬盘设备/dev/sdb移出磁盘阵列,然后迅速查看/dev/md0磁盘阵列的状态
# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
# mdadm -D /dev/md0
/dev/md0:
         Version : 1.2
   Creation Time : Sun Dec 24 16:46:45 2023
      Raid Level : raid5
      Array Size : 41908224 (39.97 GiB 42.91 GB)
   Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
   Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sun Dec 24 18:28:52 2023
             State : clean, degraded, recovering
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 1
   Spare Devices : 1

            Layout : left-symmetric
      Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 10% complete

            Name : localhost:0(local to host localhost)
            UUID : ef77d022:cb8db5f6:6d692ea0:a84f7525
            Events : 23

    Number   Major   Minor   RaidDevice State
       3       8       64      0      spare rebuilding   /dev/sde
       1       8       32      1      active sync   /dev/sdc
       4       8       48      2      active sync   /dev/sdd

       0       8       16      -      faulty   /dev/sdb

来源:https://www.cnblogs.com/misakivv/p/17924731.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: RAID磁盘阵列