首页 > 其他分享 >RAID的原理与搭建

RAID的原理与搭建

时间:2022-12-27 17:07:46浏览次数:40  
标签:RAID mdadm dev 磁盘 原理 root localhost 搭建

一、RAID概念

磁盘阵列( Redundant Arrays of Independent Disks,RAID)有“独立磁盘构成的具有冗余能力的阵列”之意。RAID是由很多价格较便宜的磁盘组合成的一个容量巨大的磁盘组,用以提升整个磁盘系统效能。利用这项技术可将数据切割成许多区段,分别存放在各个磁盘上,RAID还能利用同位检查( Parity Check),在磁盘组中任意一个磁盘发生故障时,仍可读出数据,在数据重构时,可将数据经计算后重新存入新磁盘中。

注意:RAID可以预防数据丢失,但是它并不能完全保证数据不会丢失,所以使用RAID的同时还是需要注意备份重要的数据。

RAID的创建有两种方式:软RAID(通过操作系统实现)和硬RAID(使用RAID卡实现);在企业中常用的RAID类型是RAID1、RAID5和RAID10。不过随着云技术的高速发展,供应商一般可以把硬件问题解决掉。

1.1、RAID常见的类型

RAID类型

最低磁盘个数

空间利用率

各自的优缺点

级别

说明

RAID 0

条带

2+

100%

读写速度快,不容错

RAID 1

镜像

2

50%

读写速度一般,容错

RAID 5


带奇偶校验的条带

3+


(n-1)/n

读写速度快,容错,允许坏一块盘

RAID 6

带奇偶校验的条带集,双校验

4+


(n-2)/n

读写快,容错,允许坏两块盘

RAID 10

RAID 1的安全+RAID 0的高速

4


50%

读写速度快,容错

RAID 50

RAID 5的安全+RAID 0的高速

6


(n-2)/n

读写速度快,容错

RAID的三个关键技术如下。

镜像:提供了数据的安全性。

条带:为了提高I/O,提供了数据并发性。

数据的校验:提供了数据的安全性

RAID相对于单个磁盘的优点如图:

RAID的原理与搭建_raid

1.2、RAID 0的工作原理

RAID 0又称条带(strping),是最早出现的RAID模式。

所需磁盘数量:只需要两块以上磁盘(容量大小最好相同)即可,是组建RAID中最简单的一种形式。

特点:成本低,可以提高整个磁盘的性能和吞吐量。RAID 0并没有提供冗余或错误修复能力,速度快。

任何一个磁盘的损坏都将损坏全部数据,磁盘利用率为100%,RAID 0工作原理如图:

RAID的原理与搭建_raid_02

RAID的原理与搭建_raid_03

1.3、RAID 1的工作原理

RAID 1又称镜像(mirroring),需要两块磁盘以上。

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

RAID容量大小等于两个组成RAID的磁盘中容量最小的磁盘的容量,数据有冗余,在存储时同时写入两块磁盘,实现了数据备份。

磁盘利用率为50%,即两块100GB的磁盘构成RAID 1只能提供100Gb的可用空间,RAID 1工作原理如图:

RAID的原理与搭建_raid_04

RAID的原理与搭建_raid_05

1.4、RAID 5的工作原理

需要三块或三块以上磁盘,提供热备盘实现故障的恢复。当损坏一块磁盘时,不影响正常使用,但如果同时损坏两块磁盘,则数据都会损坏,空间利用率为(n−1)/n,n为磁盘块数。相当于三块磁盘中,两块用来块存储数据,另一块作为热备,当RAID 5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5工作原理如图:

RAID的原理与搭建_raid_06

RAID 5奇偶校验——异或运算。RAID 5用相对简单的异或逻辑运算(相同为0,相异为1)进行校验,如表。

A值

B值

Xor结果

0

0

0

1

0

1

0

1

1

1

1

0

几个方案对比下来,RAID 5的性价比是最适合的,如图所示:

RAID的原理与搭建_raid_07

1.5、RAID硬盘失效处理

RAID磁盘失效一般有两种处理方法:热备和热插拔。

1.热备(HotSpare)

(1)定义:当冗余的RAID组中某个磁盘失效时,在不干扰当前RAID系统正常使用的情况下,用RAID系统中另外一个正常的备用磁盘自动顶替失效磁盘,及时保证RAID系统的冗余性。

(2)全局式:备用磁盘为系统中所有的冗余RAID组共享。

(3)专用式:备用磁盘为系统中某一组冗余RAID组专用。

热备盘由系统中两个RAID组共享,可自动顶替任何一个RAID中的失效磁盘,如图所示为全局热备的示例:

RAID的原理与搭建_raid_08

2.热插拔(HotSwap)

定义:在不影响系统正常运转的情况下,用正常的物理磁盘替换RAID系统中的失效磁盘。

二、RAID常用类型搭建和使用,以及注意事项

2.1、RAID的实现方式

互动:做RAID,是在装系统之前还是之后?

答:先做RAID再装系统,一般服务器启动时,有进入配置RIAD的提示,比如,按下Ctrl+L/H/M组合键进入配置RAID界面。

1.硬RAID:使用RAID卡实现磁盘是接在RAID卡上的,由它统一管理和控制,数据也是由它来进行分配和维护的。RAID卡有自己的CPU,处理数据的速度比较快,不需要消耗主机的CPU资源。

2.软RAID:通过操作系统实现Linux内核中有一个md(multiple devices)模块在底层管理RAID设备,它会在应用层提供一个工具mdadm。mdadm是Linux下用于创建和管理软件RAID的命令。mdadm命令使用格式:mdadm[选项]RAID设备句RAID级别[选项] 磁盘设备名。

RAID的原理与搭建_raid_09

2.2、实验环境

RAID的原理与搭建_raid_10

2.2.1、搭建RAID 0

RAID的原理与搭建_raid_11

搭建RAID 0的具体步骤如下:

(1)创建RAID 0,创建后的设备名为/devmd,目标磁盘为/dev/sdb、/dev/sdc。

[root@localhost ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

(2)查看/dev/md0设备信息。

[root@localhost ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=d8878e99:60ab6e83:7062e8d1:f3100e9c
You have new mail in /var/spool/mail/root
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Oct 27 04:20:04 2021
Raid Level : raid0
Array Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Update Time : Wed Oct 27 04:20:04 2021
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Chunk Size : 512K

Consistency Policy : none

Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : d8878e99:60ab6e83:7062e8d1:f3100e9c
Events : 0

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf

(3)对/dev/md0设备进行文件系统创建并挂载。

[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=163712 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2618880, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
You have new mail in /var/spool/mail/root
[root@localhost ~]# mkdir /raid0
[root@localhost ~]# mount /dev/md0 /raid0/
[root@localhost ~]# df -Th /raid0/
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 xfs 10G 33M 10G 1% /raid0

(4)开机自动挂载。

[root@localhost ~]# blkid /dev/md0
/dev/md0: UUID="1a501bbe-95ba-4e2f-938c-73fa32df429e" TYPE="xfs"
[root@localhost ~]# echo "UUID=1a501bbe-95ba-4e2f-938c-73fa32df429e /raid0 xfs defaults 0 0" >> /etc/fstab

2.2.2、搭建RAID 1

以下实验当中使用sdd、sde两块磁盘搭建RAID 1,并添加1个热备盘sdf,实验将模拟磁盘故障,实现用热备盘自动顶替故障盘,然后从RAID 1中移出故障盘,实验具体步骤如下。

(1)创建RAID 1,创建后的设备名为/dev/md1,目标磁盘/dev/sdd、/dev/sde、/dev/sdf。

[root@localhost ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sd[d,e,f]
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? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

(2)将RAID信息保存到配置文件。

[root@localhost ~]# mdadm -Dsv > /etc/mdadm.conf

(3)查看RAID信息。

[root@localhost ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Wed Oct 27 04:34:08 2021
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 : Wed Oct 27 04:34:34 2021
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1

Consistency Policy : resync

Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : 12601934:5e1683aa:1b7de66a:1538aaf0
Events : 17

Number Major Minor RaidDevice State
0 8 48 0 active sync /dev/sdd
1 8 64 1 active sync /dev/sde

2 8 80 - spare /dev/sdf

(4)在/dev/md1设备上创建文件系统。

[root@localhost ~]# mkfs.xfs /dev/md1
meta-data=/dev/md1 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
You have new mail in /var/spool/mail/root
[root@localhost ~]# mkdir /raid1
[root@localhost ~]# mount /dev/md1 /raid1

(5)准备测试文件。

[root@localhost ~]# cp /etc/passwd /raid1

下面模拟RAID 1中数据盘/dev/sde出现故障,观察/dev/sdf热备盘能否自动顶替故障盘。

[root@localhost raid1]# mdadm /dev/md1 -f /dev/sde
mdadm: set /dev/sde faulty in /dev/md1

(6)查看/dev/md1设备信息。

[root@localhost raid1]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Wed Oct 27 04:34:08 2021
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 : Wed Oct 27 04:39:43 2021
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 1
Spare Devices : 1

Consistency Policy : resync

Rebuild Status : 72% complete

Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : 12601934:5e1683aa:1b7de66a:1538aaf0
Events : 32

Number Major Minor RaidDevice State
0 8 48 0 active sync /dev/sdd
2 8 80 1 spare rebuilding /dev/sdf

1 8 64 - faulty /dev/sde

(7)更新配置文件。

[root@localhost raid1]# mdadm -Dsv > /etc/mdadm.conf

(8)查看数据是否丢失。

[root@localhost raid1]# ls /raid1
passwd

(9)移除损坏的设备。

[root@localhost ~]# mdadm -r /dev/md1 /dev/sde
mdadm: hot removed /dev/sde from /dev/md1

(10)查看/dev/md1设备信息。

[root@localhost ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Wed Oct 27 04:34:08 2021
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 : 2
Persistence : Superblock is persistent

Update Time : Wed Oct 27 04:44:00 2021
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Consistency Policy : resync

Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : 12601934:5e1683aa:1b7de66a:1538aaf0
Events : 39

Number Major Minor RaidDevice State
0 8 48 0 active sync /dev/sdd
2 8 80 1 active sync /dev/sdf

(11)添加一块新的热备盘。

[root@localhost ~]# mdadm -a /dev/md1 /dev/sde
mdadm: added /dev/sde

2.2.3、搭建RAID 5

RAID的原理与搭建_raid_12

(1)创建RAID 5。

创建RAID 5,创建后的设备名为/dev/md5,目标磁盘为/dev/sdg,/dev/sdh,/dev/sdi,/dev/sdj,其中1个磁盘作为热备盘。

[root@localhost ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 -c 32 /dev/sd{g,h,i,j}
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: size set to 5237760K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

mdadm命令选项说明如下。

-x或--spare-devicds=:指定RAID中热备盘的数量。

-c或--chunk=:设定RAID的chunk的大小,单位为KB。

(2)查看/dev/md5设备信息。

[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Wed Oct 27 05:07:16 2021
Raid Level : raid5
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Wed Oct 27 05:07:42 2021
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1

Layout : left-symmetric
Chunk Size : 32K

Consistency Policy : resync

Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 6c6bbd34:68604c43:58e7f57e:e18634a9
Events : 18

Number Major Minor RaidDevice State
0 8 96 0 active sync /dev/sdg
1 8 112 1 active sync /dev/sdh
4 8 128 2 active sync /dev/sdi

3 8 144 - spare /dev/sdj #热备盘

(3)停止/dev/md5设备。

[root@localhost ~]# mdadm -Dsv > /etc/mdadm.conf #停止前先保存配置文件
[root@localhost ~]# mdadm -D /dev/md5 #停止前确认数据已经同步完成
Consistency Policy : resync #数据已经同步完成
[root@localhost ~]# mdadm -S /dev/md5 #停止/dev/md5设备
mdadm: stopped /dev/md5

(4)激活/dev/md5设备。

[root@localhost ~]# mdadm -As
mdadm: /dev/md5 has been started with 3 drives and 1 spare.

(5)扩展/dev/md5设备。

将热备盘增加到/dev/md5设备中,使/dev/md5设备中可以使用的磁盘数量为4块。

[root@localhost ~]# mdadm -G /dev/md5 -n 4 -c 32
[root@localhost ~]# mdadm -Dsv > /etc/mdadm.conf #保存配置文件

选项说明:-G或 –grow选项改变阵列大小或形态。

备注:RAID只有在正常状态下才能扩容,降级及重构时不允许扩容。对于RAID 5来说,只能增加成员盘,不能减少。而对于RAID 1来说,可以增加成员盘,也可以减少。

[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Wed Oct 27 05:07:16 2021
Raid Level : raid5
Array Size : 15713280 (14.99 GiB 16.09 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Wed Oct 27 05:14:36 2021
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 32K

Consistency Policy : resync

Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 6c6bbd34:68604c43:58e7f57e:e18634a9
Events : 51

Number Major Minor RaidDevice State
0 8 96 0 active sync /dev/sdg
1 8 112 1 active sync /dev/sdh
4 8 128 2 active sync /dev/sdi
3 8 144 3 active sync /dev/sdj

2.2.4、搭建RAID 10

RAID的原理与搭建_raid_13

搭建RAID 10的具体步骤如下。

(1)对磁盘进行分区。

[root@localhost ~]# fdisk /dev/sdk
[root@localhost ~]# ls /dev/sdk*
/dev/sdk /dev/sdk1 /dev/sdk2 /dev/sdk3 /dev/sdk4

(2)创建RAID 10,创建后的设备名为/dev/md10,目标磁盘为/dev/sdk1,/dev/sdk2,/dev/sdk3,/dev/sdk4。

[root@localhost ~]# mdadm -C -v /dev/md10 -l 10 -n 4 /dev/sdk[1-4]
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: /dev/sdk4 is not suitable for this array.
mdadm: create aborted

2.3、清除磁盘里的RAID信息

[root@localhost ~]# umount /dev/md0 /raid0 #如果已经挂载RAID,要先卸载
[root@localhost ~]# umount /dev/md1 /raid1 #如果已经挂载RAID,要先卸载
[root@localhost ~]# mdadm -Ss #停止RAID设备
[root@localhost ~]# rm -rf /etc/mdadm.conf #删除raid配置文件
[root@localhost ~]# mdadm --zero-superblock /dev/sdb #清除物理磁盘中的RAID标识
[root@localhost ~]# mdadm --zero-superblock /dev/sdc #清除物理磁盘中的RAID标识

参数:--zero-superblock:清除设备中的MD超级块。

标签:RAID,mdadm,dev,磁盘,原理,root,localhost,搭建
From: https://blog.51cto.com/zengyi/5972972

相关文章

  • Hyperf框架环境搭建
    https://hyperf.wiki/2.2/#/README1.PHP7.2以上查看PHP:php-vcurl127.0.0.1:9501查看是否装swoole:php--riswooleswoole并关闭了ShortName配置文件加入:upstr......
  • MyBatis框架搭建
    MyBatis搭建整体结构  1.导入jar包 mybatis-3.3.0.jarmybatis核心jar包 mysql-connect-xxx.jar mysql-jdbc驱动包 junti.jar       ......
  • LNMP架构环境之Nginx项目1:搭建游戏网站
    1)配置站点目录cd/usr/share/nginx/rm-frhtml/通过SCP工具将gamme.zip上传到/usr/share/nginx/html/目录下#上传游戏程序unzipgame.zipcd /usr/share/nginx/sbin/2)......
  • 霍夫(圆)变换(hough Transform/hough cirlce Transform)原理和实现
    一、霍夫(圆)变换的广泛使用和简要历史霍夫变换是一种​​特征​​​提取方法,被广泛应用在图像处理和计算机视觉应用中。霍夫变换是用来辨别找出物件中的特征,例如:线条。他的......
  • 【Ubuntu搭建gitlab】gitlab搭建过程
    一、服务器硬件水平搭建gitlab服务器最低配置要求2核4G,低于这个配置的服务器运行效果很差二、安装依赖项sudoapt-getupdatesudoapt-getinstall-ycurlopenssh-s......
  • K8S集群环境搭建记录
    使用kubeadm工具搭建K8S一主二从集群,一个master和两个node。环境初始化1.检查系统版本:Centos版本要在7.5或之上[root@K8SMASTER~]#cat/etc/redhat-releaseCentOS......
  • 容斥原理
    \(\mathcalPreface\)可能容斥原理的公式等还是\(AK\IOI\)的巨佬讲得详细,大家可以看看这篇博客。这篇博客把我写得手废了。我这个里这接上公式:\[|\bigcup\limits_{i......
  • 【Mybatis技术专题】MybatisPlus自带强大功能之多租户插件实现原理和实战分析(3)
    ​​http://mp.baomidou.com/guide/tenant.html​​前提介绍一般的程序应用当使用者访问不同,并且进入相对应的程序页面,则会把用户相关数据传输到后台这里。在传输的时候需要......
  • 青龙面板搭建笔记
    1、安装docker进入宝塔页面,在商店搜索docker,选择第一个安装即可2、拉取青龙镜像dockerrun-dit\-v$PWD/ql/config:/ql/config\-v$PWD/ql/log:/ql/log\-v$PWD......
  • 【基于物理的渲染(PBR)白皮书】(二) PBR核心理论与渲染光学原理总结
    这是【基于物理的渲染(PBR)白皮书】系列的第二篇文章。按照既定规划,本文将主要关注基于物理的渲染的核心理论与渲染的光学原理,以在整个系列中起到理论支柱的作用。从本文内容......