一、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相对于单个磁盘的优点如图:
1.2、RAID 0的工作原理
RAID 0又称条带(strping),是最早出现的RAID模式。
所需磁盘数量:只需要两块以上磁盘(容量大小最好相同)即可,是组建RAID中最简单的一种形式。
特点:成本低,可以提高整个磁盘的性能和吞吐量。RAID 0并没有提供冗余或错误修复能力,速度快。
任何一个磁盘的损坏都将损坏全部数据,磁盘利用率为100%,RAID 0工作原理如图:
1.3、RAID 1的工作原理
RAID 1又称镜像(mirroring),需要两块磁盘以上。
原理:把一个磁盘的数据镜像到另一个磁盘上。也就是说,数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件(同步)。
RAID容量大小等于两个组成RAID的磁盘中容量最小的磁盘的容量,数据有冗余,在存储时同时写入两块磁盘,实现了数据备份。
磁盘利用率为50%,即两块100GB的磁盘构成RAID 1只能提供100Gb的可用空间,RAID 1工作原理如图:
1.4、RAID 5的工作原理
需要三块或三块以上磁盘,提供热备盘实现故障的恢复。当损坏一块磁盘时,不影响正常使用,但如果同时损坏两块磁盘,则数据都会损坏,空间利用率为(n−1)/n,n为磁盘块数。相当于三块磁盘中,两块用来块存储数据,另一块作为热备,当RAID 5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5工作原理如图:
RAID 5奇偶校验——异或运算。RAID 5用相对简单的异或逻辑运算(相同为0,相异为1)进行校验,如表。
A值 | B值 | Xor结果 |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
几个方案对比下来,RAID 5的性价比是最适合的,如图所示:
1.5、RAID硬盘失效处理
RAID磁盘失效一般有两种处理方法:热备和热插拔。
1.热备(HotSpare)
(1)定义:当冗余的RAID组中某个磁盘失效时,在不干扰当前RAID系统正常使用的情况下,用RAID系统中另外一个正常的备用磁盘自动顶替失效磁盘,及时保证RAID系统的冗余性。
(2)全局式:备用磁盘为系统中所有的冗余RAID组共享。
(3)专用式:备用磁盘为系统中某一组冗余RAID组专用。
热备盘由系统中两个RAID组共享,可自动顶替任何一个RAID中的失效磁盘,如图所示为全局热备的示例:
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级别[选项] 磁盘设备名。
2.2、实验环境
2.2.1、搭建RAID 0
搭建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
(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 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