文章目录
1. 什么是RAID???
磁盘阵列(Redundant Arrays of Independent Disks,RAID),
有“独立磁盘构成的具有冗余能力的阵列”之意。
磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。
1.1 功能
RAID技术主要有以下三个基本功能:
- 1.通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度。
- 2.通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机械寻道时间,提高数据存取速度。
- 3.通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。
1.2 优缺点
优点
提高传输速率。 RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)。在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。这也是RAID最初想要解决的问题。因为当时CPU的速度增长很快,而磁盘驱动器的数据传输速率无法大幅提高,所以需要有一种方案解决二者之间的矛盾。RAID最后成功了。
通过数据校验提供容错功能。普通磁盘驱动器无法提供容错功能,如果不包括写在磁盘上的CRC(循环冗余校验)码的话。RAID容错是建立在每个磁盘驱动器的硬件容错功能之上的,所以它提供更高的安全性。在很多RAID模式中都有较为完备的相互校验/恢复的措施,甚至是直接相互的镜像备份,从而大大提高了RAID系统的容错度,提高了系统的稳定冗余性。
缺点
RAID0没有冗余功能,
如果一个磁盘(物理)损坏,则所有的数据都无法使用。
RAID1磁盘的利用率最高只能达到50%(使用两块盘的情况下),是所有RAID级别中最低的。
RAID0+1以理解为是RAID 0和RAID 1的折中方案。RAID 0+1可以为系统提供数据安全保障,但保障程度要比 Mirror低而磁盘空间利用率要比Mirror高。
1.3 实现方法
软件RAID
使用基于主机的软件提供RAID功能,是在操作系统级上实现的,与硬件RAID相比,软件RAID具有成本低廉和简单直观的优点。但是,软件RAID有以下不足。
- 1.
性能:
软件RAID会影响系统整体性能。这是因为软件RAID 需要CPU 来执行RAID 计算。 - 2.
功能:
软件RAID支持有限的RAID 级别。 - 3.
兼容性:
软件RAID与主机操作系统绑定,因此,需要对软件RAID或操作系统升级进行兼容性验证,只有当RAID 软件和操作系统兼容时,才能对其进行升级,这会降低数据处理环境的灵活性。
硬件RAID
包括基于主机的硬件RAID和基于阵列的硬件RAID。基于主机的硬件RAID通常是将专用RAID控制器安装在主机上,并且所有磁盘驱动器都与主机相连,有的制造商还将RAID控制器集成到主板上。但是基于主机的硬件RAID 控制器在包含大量主机的数据中心环境下却不是高效的解决方案。而基于阵列的硬件RAID是使用外部硬件RAID控制器,它充当主机与磁盘之间的接口,将存储卷呈现给主机,主机将这些卷作为物理驱动器进行管理。硬件RAID控制器具有如下主要特点:
- 1.管理与控制磁盘聚合;
- 2.转换逻辑磁盘和物理磁盘之间的I/O请求;
- 3.在磁盘出故障时重新生成数据。
1.4 常见的RAID磁盘整列管理
raid0,raid1,raid5,raid10
raid0:最少两块盘
,大小一致,数据分割为若干份,相对应的磁盘进行读写操作
raid1:最少两块盘
,大小一致,数据拷贝若干份,每块磁盘都拥有完整的数据
raid10:最少四块盘
,先两两做raid1,再做raid0,成本较高
raid5:最少三块盘
,加入了奇偶校验
2. 案例目标
- 掌握RAID的构建,挂载和使用。
- 掌握RAID的基础运维。
2.1 案例分析
2.2 规划节点
IP | 主机名 | 节点 |
---|---|---|
192.168.100.10 | localhost | 控制节点 |
2.3 基础准备
使用VMWare Workstation软件安装CentOS 7.2操作系统,镜像使用提供的CentOS-7-x86_64-DVD-1511.iso,并添加1块50GB硬盘。YUM源使用提供的mdadm_yum文件夹。
3. 案例实施
3.1 创建raid 0
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 37.5G 0 part /
sdb 8:16 0 50G 0 disk
sr0 11:0 1 4G 0 rom /mnt/cd
配置本地YUM安装源,将提供的mdadm_yum文件夹上传至/opt目录
[root@localhost ~]# mv /etc/yum.repos.d/* /media/
[root@localhost ~]# vi /etc/yum.repos.d/yum.repo
[mdadm]
name=mdadm
baseurl=file:///opt/mdadm_yum/
gpgcheck=0
enabled=1
安装工具mdadm,使用已有YUM源进行安装,命令如下:
[root@localhost ~]# yum install -y mdadm
创建一个RAID 0设备:这里使用/dev/sdb做实验,将50G的硬盘使用fdisk命令划分为六块大小为1G的分区
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 37.5G 0 part /
sdb 8:16 0 50G 0 disk
├─sdb1 8:17 0 1G 0 part
├─sdb2 8:18 0 1G 0 part
├─sdb3 8:19 0 1G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 1G 0 part
├─sdb6 8:22 0 1G 0 part
└─sdb7 8:23 0 1G 0 part
sr0 11:0 1 4G 0 rom /mnt/cd
将/dev/sdb1和/dev/sdb2建立RAID等级为RAID 0的md0(设备名)。
[root@localhost ~]# mdadm -Cv /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
命令解析:
- C v:创建设备,并显示信息
- -l 0:RAID的等级为RAID 0
- -n 2:创建RAID的设备为2块
查看系统上的RAID,命令及返回结果如下
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb2[1] sdb1[0]
2095104 blocks super 1.2 512k chunks
unused devices: <none>
查看RAID详细信息,命令及返回结果如下
[root@localhost ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=c3408271:4e0f2eeb:63ce9fee:3eab8836
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Jun 7 20:44:43 2020
Raid Level : raid0
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun Jun 7 20:44:43 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : c3408271:4e0f2eeb:63ce9fee:3eab8836
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
对创建的RAID进行文件系统创建并挂载,命令如下
[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=256 agcount=8, agsize=65408 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=523264, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
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
[root@localhost ~]# mkdir /raid0
[root@localhost ~]# mount /dev/md0 /raid0/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 38G 867M 37G 3% /
devtmpfs 984M 0 984M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 17M 977M 2% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sr0 4.1G 4.1G 0 100% /mnt/cd
/dev/sda1 497M 103M 395M 21% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/md0 2.0G 33M 2.0G 2% /raid0
设置成开机自动挂载,命令如下
[root@localhost ~]# blkid /dev/md0
/dev/md0: UUID="6e4f56d3-5b0d-4bd3-b259-25ee205b325e" TYPE="xfs"
[root@localhost ~]# echo '6e4f56d3-5b0d-4bd3-b259-25ee205b325e /raid0 xfs defaults 0 0' >>/etc/fstab
删除RAID操作,命令如下
[root@localhost ~]# umount /raid0/
[root@localhost ~]# mdadm -S /dev/md0
[root@localhost ~]# rm -rf /raid0/
[root@localhost ~]# mdadm --zero-superblock /dev/sdb1
[root@localhost ~]# mdadm --zero-superblock /dev/sdb2
[root@localhost ~]# vi /etc/fstab
UUID=6e4f56d3-5b0d-4bd3-b259-25ee205b325e /raid0 xfs defaults 0 0 //删除此行
3.2 运维操作
利用磁盘分区新建4个磁盘分区,每个大小为1GB。用3个1GB的分区来模拟raid 5,加一个热备盘
[root@localhost ~]# mdadm -Cv /dev/md5 -l 5 -n 3 /dev/sdb5 /dev/sdb6 /dev/sdb7 --spare-device=1 /dev/sdb3
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 1047552K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
查看RAID的详细信息,命令如下
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Jun 8 06:59:04 2020
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Jun 8 06:59:10 2020
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 0a4c48ff:99999466:e7894a1d:0caa7f8c
Events : 18
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
3 8 19 - spare /dev/sdb3
- 模拟硬盘故障
[root@localhost ~]# mdadm -f /dev/md5 /dev/sdb5
mdadm: set /dev/sdb5 faulty in /dev/md5
查看RAID的详细信息,命令如下
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Jun 8 06:59:04 2020
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Jun 8 07:08:31 2020
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 38% complete
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 0a4c48ff:99999466:e7894a1d:0caa7f8c
Events : 26
Number Major Minor RaidDevice State
3 8 19 0 spare rebuilding /dev/sdb3
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
0 8 21 - faulty /dev/sdb5
从以上结果可以发现原来的热备盘/dev/sdb3正在参与RAID 5的重建,而原来的/dev/sdb5变成了坏盘。
热移除故障盘,命令如下:
[root@localhost ~]# mdadm -r /dev/md5 /dev/sdb5
mdadm: hot removed /dev/sdb5 from /dev/md5
查看RAID的详细信息,命令如下
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Jun 8 06:59:04 2020
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Jun 8 07:22:10 2020
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 0a4c48ff:99999466:e7894a1d:0caa7f8c
Events : 38
Number Major Minor RaidDevice State
3 8 19 0 active sync /dev/sdb3
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
把新的备份盘再添加到md5的阵列当中
[root@localhost ~]# mdadm -a /dev/md5 /dev/sdb5
mdadm: added /dev/sdb5
查看RAID的详细信息,命令如下
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Jun 8 06:59:04 2020
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Jun 8 07:30:52 2020
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 0a4c48ff:99999466:e7894a1d:0caa7f8c
Events : 39
Number Major Minor RaidDevice State
3 8 19 0 active sync /dev/sdb3
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
5 8 21 - spare /dev/sdb5
//这时会看见新的备份盘已经添加到md5的阵列当中
格式化RAID并进行挂载,命令如下
[root@localhost ~]# mkfs.xfs /dev/md5
meta-data=/dev/md5 isize=256 agcount=8, agsize=65408 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=523264, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
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
[root@localhost ~]# mkdir /raid5
[root@localhost ~]# mount /dev/md5 /raid5/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 38G 867M 37G 3% /
devtmpfs 984M 0 984M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 17M 977M 2% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sr0 4.1G 4.1G 0 100% /mnt/cd
/dev/sda1 497M 103M 395M 21% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/md0 2.0G 33M 2.0G 2% /raid0
/dev/md5 2.0G 33M 2.0G 2% /raid5
至此,服务器制作raid磁盘阵列并管理配置完毕