文章目录
前言
RAID是英文Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。
组成磁盘阵列的不同方式称为RAID级别(RAID Levels)。在用户看起来,组成的磁盘组就像是一个硬盘,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的操作与单个硬盘一模一样。不同的是,磁盘阵列的存储速度要比单个硬盘高很多,而且可以提供自动数据备份。数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。
一:RAID磁盘阵列详解
RAID分为不同的等级,不同等级的RAID均在数据可靠性及读写性能上做了不同的权衡。
常用的RAID级别有以下几种:
RAID 0
RAID 1
RAID 5
RAID 6
RAID 1+0
1.1:RAID 0磁盘阵列介绍
RAID 1+0是RAID 1和RAID 0的结合,先做镜像,再做条带
兼顾了RAID 1的容错能力与RAID 0的条带化读写数据的优点,性能好,可靠性高。属于混合型RAID
N(偶数,N>=4)块盘两两镜像后,在组合成一个RAID 0,最多允许所有磁盘基组中的磁盘各损坏一个,但是不允许同一基组中的磁盘同时有坏的。
磁盘的利用率为N/2,
N/2块盘同时写入数据,N快盘同时读取数据
类似的混合RAID还有RAID 0+1,二者在读写性能上差别不大,但是在安全性上 RAID 1+0 要好于 RAID 0+1
1.2:RAID容错对比表
二:阵列卡介绍
2.1:阵列卡介绍
阵列卡全称为磁盘阵列卡,是用来实现RAID 功能的板卡
RAID卡一般分为硬RAID卡和软RAID卡两种
通过硬件来实现RAID功能的就是硬RAID,通常是哟I/O处理器,硬盘控制器,硬盘连接器和缓存等一些列组件构成
通过软件并使用CPU的RAID卡我们成为软RAID,因为软RAID占用CUP资源比较高,所以绝大部分的服务器设备都使用的硬RAID
不同的RAID卡支持的RAID功能不同,例如支持RAID 0,RAID 1,RAID 5,RAID1+0等
RAID卡的第一个重要功能就是他可以达到单个磁盘驱动器的几倍,几十倍甚至上百倍的速率,这也是RAID最初想要解决的问题
RAID卡的第二个重要功能就是提供容错能力,现在服务器基本上集成了RAID卡
2.2:RAID卡的接口类型
RAID卡的接口指的是支持的接口,目前有IDE 接口,SCSI接口,SATA接口和SAS接口
2.2.1:IDE接口
IDE的英文全称为“Integrated Drive Electronics”,即“电子集成驱动器”,属于并行接口。
它是把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器,这样使得硬盘接口的电缆数目与长度有所减少,从而数据传输的可靠性得到增强
IDE接口价格低廉,兼容性强
在实际的应用中,这种类型的接口随着接口技术的不断发展已经很少用了,逐渐被后续发展分支出更多类型的硬盘接口所取代。
2.2.2:SCSI接口
SCSI 的英文全称为“Small Computer System Interface”(小型计算机系统接口),是和IDE完全不同的接口,IDE接口是普通PC的标准接口,而SCSI是一种通用的接口标准,具备与不同类型外部设备进行通信的能力,是一种广泛应用于小型机上的高速数据传输技术
SCSI是个多任务接口,设有母线仲裁功能,挂在一个SCSI母线上的多个外部设备可以同时工作,并平等占有总线
SCSI接口可以同步或异步传输数据,同步传输数据可以达到10M/s,异步传输速率可以达到1.5M/s
SCSI接口的CPU占用率低,支持热插热拔,但价格较高,因此SCSI硬盘主要用于中,高端工作站中
2.2.3:SATA接口
SATA是“Serial ATA”的缩写,主要用在主板和大量存储设备之间传输数据。拥有这种接口的硬盘又叫串口硬盘,以采用串行方式传输数据
SATA总线使用了嵌入式时钟信号,使得其具备更强的纠错能力。如果发现数据传输中的错误会自动进行矫正,很大程度上提高了数据传输的可靠性,也是一种支持热拔热插的接口
2.2.4:SAS接口
SAS的英文全称为“Serial Attached SCSI”是新一代的SCSI技术,称为序列式SCSI
SAS可以看做是SATA与SCSI的结合体,是同时发挥两者的优势产生的,主要用在周边零件的数据传输上
和SATA硬盘相同,都是采用串行技术以获得更高的传输速度
SAS的接口技术可以向下兼容SATA设备
2.3:阵列卡的缓存
缓存(Cache)是RAID卡与外部总线交换数据的场所,是RAID卡电路板上的一块存储芯片,与硬盘盘片相比,具有极快的存取速度。RAID卡现将数据传送到缓存,再经由缓存和外边数据总线交换数据
缓存的大小与速度是直接关系到RAID卡的实际传输速度的重要因素,大缓存能够大幅度的提高数据命中率从而提高RAID卡整体性能
不同的RAID卡出厂时配备的内存容量不同,一般为几兆到数百兆容量不等,主要取决于磁盘阵列产品所应用的范围.
三. 软阵列的配置
我们需要用到mdadm工具创建RAID磁盘
因为我们做的是RAID,所以文件系统格式需要改为fd
mdadm命令是multiple devices admin的简称,它是linux下的一款标准的软件 RAID管理工具,可以管理linux软RAID,比如创建、调整、监控RAID。
mdadm命令能够诊断、监控和收集详细的阵列信息,是一个单独集成化的程序而不是一些分散程序的集合,因此对不同RAID管理命令有共通的语法。
mdadm命令能够执行几乎所有的功能而不需要配置文件(也没有默认的配置文件)。
语法格式:mdadm [参数]
常用模式参数:
create 创建一个新的RAID,每个设备都具有元数据(超级块)
build 创建或组合一个没有元数据(超级块)的RAID
assemble 组装以前创建的RAID的组件集成到一个活动RAID
manage 更改一个现有的RAID,比如添加新的备用成员和删除故障设备
misc 报告或修改各种RAID相关设备,比如查询RAID或者设备的状态信息、删除旧的超级块
grow 调整/重新塑造一个活动RAID,比如改变RAID容量或阵列中的设备数目。
monitor 监控一个或多个RAID的更改
incremental 添加设备到RAID中,或从RAID中删除设备。
常用参数:
-D 显示RAID设备的详细信息
-A 加入一个以前定义的RAID
-B 创建一个没有超级块的RAID设备
-F 选项监控模式
-G 更改RAID设备的大小或形态
-I 添加设备到RAID中,或从RAID中删除设备
-z 组建RAID1、RAID4、RAID5、RAID6后从每个RAID成员获取的空间容量
-s 扫描配置文件或/proc/mdstat以搜寻丢失的信息
-C 创建RAID设备,把RAID信息写入每个RAID成员超级块中
-v 显示RAID创建过程中的详细信息
-B 创建RAID的另一种方法,不把RAID信息写入每个RAID成员的超级块中
-l 指定RAID的级别
-n 指定RAID中活动设备的数目
-f 把RAID成员列为有问题,以便移除该成员
-r 把RAID成员移出RAID设备
-a 向RAID设备中添加一个成员
–re-add 把最近移除的RAID成员重新添加到RAID设备中
-E 查看RAID成员详细信息
-c 指定chunk大小,创建一个RAID设备时默认为512kb
-R 开始部分组装RAID
-S 停用RAID设备,释放所有资源
-x 指定初始RAID设备的备用成员的数量
–zero-superblock 如果RAID设备包含一个有效的超级块,该块使用零覆盖
常用的操作:
mdadm工具指令基本格式
[root@localhost ~]# mdadm -C -v 目录 -l级别 -n磁盘数量 设备 -x 热备盘
常用选项
l 指定级别
C 创建
v 指定目录
n 磁盘数量
查看RAID级别的两个方法
第一个方法
cat /proc/mdstat ‘//查看状态’
第二个方法
mdadm -D 目录 ‘//查看更详细信息’
3.1 :创建raid 0 实验
[root@shanan ~]# yum -y install mdadm 安装软件程序
设置文件格式为fd
[root@sha ~]# fdisk /dev/sdf
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x4dca0fbc 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@sha ~]# mdadm -C -v /dev/md0 -l0 -n2 /dev/sd[b-c]1 将B 和C做成raid 0
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@sha ~]# cat /proc/mdstat 查看信息
Personalities : [raid0]
md0 : active raid0 sdc1[1] sdb1[0]
41906176 blocks super 1.2 512k chunks
unused devices: <none>
[root@sha ~]# mdadm -D /dev/md0 查看md0详细信息
/dev/md0:
Version : 1.2
Creation Time : Tue Jun 30 16:34:02 2020
Raid Level : raid0
Array Size : 41906176 (39.96 GiB 42.91 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Jun 30 16:34:02 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name : sha:0 (local to host sha)
UUID : 53df5044:6136ca81:780469e8:2d5722d8
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
[root@sha ~]# mkfs.xfs /dev/md0 格式化md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@sha ~]#
[root@sha /]# mkdir /raid0 挂载 md0 到raid0
[root@sha /]# mount /dev/md0 /raid0
[root@sha /]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 50G 1.3G 49G 3% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.6M 901M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 146M 869M 15% /boot
/dev/mapper/centos-home xfs 47G 33M 47G 1% /home
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/md0 xfs 40G 33M 40G 1% /raid0
[root@sha /]#
3.2 : 创建raid1
[root@sha /]# mdadm -C -v /dev/md1 -l1 -n2 /dev/sd[d-e]1 -x1 /dev/sdf1 创建RAID 1 阵列
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 20953088K
Continue creating array? Y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@sha /]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdf1[2](S) sde1[1] sdd1[0]
20953088 blocks super 1.2 [2/2] [UU]
md0 : active raid0 sdc1[1] sdb1[0]
41906176 blocks super 1.2 512k chunks
unused devices: <none>
[root@sha /]# mdadm -D /dev/md1 查看md1 详细内容
/dev/md1:
Version : 1.2
Creation Time : Tue Jun 30 16:51:42 2020
Raid Level : raid1
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Jun 30 16:52:08 2020
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Name : sha:1 (local to host sha)
UUID : 88e8c675:78631a75:4d014fc1:90741fbd
Events : 17
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1
2 8 81 - spare /dev/sdf1
[root@sha /]# mkfs.xfs /dev/md1 初始化
meta-data=/dev/md1 isize=512 agcount=4, agsize=1309568 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5238272, 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
[root@sha /]# mkdir /raid1 挂载raid1
[root@sha /]# mount /dev/md1 /raid1
[root@sha /]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 50G 1.3G 49G 3% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.6M 901M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 146M 869M 15% /boot
/dev/mapper/centos-home xfs 47G 33M 47G 1% /home
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/md0 xfs 40G 33M 40G 1% /raid0
/dev/md1 xfs 20G 33M 20G 1% /raid1
3.3 : 创建raid5加热备盘
[root@sha ~]# mdadm -C -v /dev/md5 -l5 -n4 /dev/sd[g-j]1 -x1 /dev/sdk1 创建RAID 5,添加备用盘
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20953088K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@sha ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdj1[5] sdk1[4](S) sdi1[2] sdh1[1] sdg1[0]
62859264 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
md1 : active raid1 sdd1[0] sde1[1] sdf1[2](S)
20953088 blocks super 1.2 [2/2] [UU]
md0 : active raid0 sdc1[1] sdb1[0]
41906176 blocks super 1.2 512k chunks
unused devices: <none>
[root@sha ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Tue Jun 30 17:09:33 2020
Raid Level : raid5
Array Size : 62859264 (59.95 GiB 64.37 GB)
Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Tue Jun 30 17:10:25 2020
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : sha:5 (local to host sha)
UUID : 20d79ded:521bc65d:b6da51f9:312527d5
Events : 18
Number Major Minor RaidDevice State
0 8 97 0 active sync /dev/sdg1
1 8 113 1 active sync /dev/sdh1
2 8 129 2 active sync /dev/sdi1
5 8 145 3 active sync /dev/sdj1
4 8 161 - spare /dev/sdk1
[root@sha ~]# mdadm -f /dev/md5 /dev/sdg1 模拟其中一块硬盘损坏
mdadm: set /dev/sdg1 faulty in /dev/md5
[root@sha ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Tue Jun 30 17:09:33 2020
Raid Level : raid5
Array Size : 62859264 (59.95 GiB 64.37 GB)
Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Tue Jun 30 17:13:22 2020
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 25% complete
Name : sha:5 (local to host sha)
UUID : 20d79ded:521bc65d:b6da51f9:312527d5
Events : 24
Number Major Minor RaidDevice State
4 8 161 0 spare rebuilding /dev/sdk1 这时发现备用盘自动顶上了
1 8 113 1 active sync /dev/sdh1
2 8 129 2 active sync /dev/sdi1
5 8 145 3 active sync /dev/sdj1
0 8 97 - faulty /dev/sdg1 模拟损坏的盘
[root@sha /]# mkdir /raid5
[root@sha /]# mkfs.xfs /dev/md5 初始化
meta-data=/dev/md5 isize=512 agcount=16, agsize=982144 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=15714304, imaxpct=25
= sunit=128 swidth=384 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=7680, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@sha /]# mount /dev/md5 /raid5 挂载
[root@sha /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 50G 1.3G 49G 3% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.6M 901M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 146M 869M 15% /boot
/dev/mapper/centos-home xfs 47G 33M 47G 1% /home
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/md5 xfs 60G 33M 60G 1% /raid5
3.4 :创建raid1+0
思路:先创建两个raid1 ,再由两个raid1组成raid0
[root@sha dev]# mdadm -C -v /dev/md12 -l1 -n2 /dev/sdn1 /dev/sdo1 先创建第一个raid1
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 20953088K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md12 started.
[root@sha dev]# mdadm -C -v /dev/md11 -l1 -n2 /dev/sdl1 /dev/sdm1 创建第二个raid1
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 20953088K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md11 started.
[root@sha dev]# mdadm -C -v /dev/md100 -l0 -n2 /dev/md12 /dev/md11 组合创建raid0
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md100 started.
[root@sha dev]# mdadm -D /dev/md100
/dev/md100:
Version : 1.2
Creation Time : Tue Jun 30 18:20:16 2020
Raid Level : raid0
Array Size : 41871360 (39.93 GiB 42.88 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Jun 30 18:20:16 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name : sha:100 (local to host sha)
UUID : 3d96ee4d:6810bbad:1405a3af:9792c8df
Events : 0
Number Major Minor RaidDevice State
0 9 12 0 active sync /dev/md12
1 9 11 1 active sync /dev/md11
[root@sha dev]# mdadm -C -v /dev/md12 -l1 -n2 /dev/sdn1 /dev/sdo1
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 20953088K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md12 started.
[root@sha dev]# mkfs.xfs /dev/md100 格式化
meta-data=/dev/md100 isize=512 agcount=16, agsize=654208 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10467328, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5112, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@sha dev]# cd /
[root@sha /]# mount /dev/md100 /raid10 挂载
[root@sha /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 50G 1.3G 49G 3% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.7M 901M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 146M 869M 15% /boot
/dev/mapper/centos-home xfs 47G 33M 47G 1% /home
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/md5 xfs 60G 33M 60G 1% /raid5
/dev/md100 xfs 40G 33M 40G 1% /raid10
raid6 方法和 raid 5 类似,不过其硬盘大于等于4块,容量 等于 (n-2)/n,最大损坏范围2块可复原,这里不再介绍。