RAID磁盘阵列技术

1、RAID概述

RAID(Redundant Array of Independent Disk),从字面意思讲的是基于独立磁盘的具有冗余的磁盘阵列,其核心思想是将多块独立磁盘按不同方式组成一个逻辑磁盘,以此来提高其存储容量、提高性能或者提供数据备份的功能。按其组合的方式不同而分成不同级别的RAID。

RAID分为软件RAID和硬件RAID两类,在比较流行的操作系统中已经集成了软RAID功能,如常用的Windows、Linux系统都有软件RAID功能,在功能上,软件RAID与硬件RAID一样,但是由于软件RAID没有独立的硬件控制设备,所以其性能不如硬件RAID,但是其实现比硬件RAID简单,不需要额外的硬件支持。硬件RAID通常需要有RAID卡,而RAID卡自带有独立的控制部件和内存,所以不会占用系统资源。目前大部分主板都已经集成了RAID卡。

2、什么是RAID?

  • RAID(Redundatnt Array of lndependent Disks),全称为:独立磁盘冗余阵列

RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘 更高的存储性能 和提供 数据备份技术

  • 常见的RAID级别别有以下几种:

    RAID 0 、 RAID 1、 RAID 5、RAID 10

RAID 0、1、5、10方案技术对比

RAID级别 硬盘数量 硬盘利用率 是否有校验 保护能力 写性能
RAID0 N N 单个硬盘的N倍
RAID1 N(偶数) N/2 允许一个设备故障 需写两对存储设备,互为主备
RAID5 N≥3 (N-1)N 允许一个设备故障 需写计算校验
RAID10 N≥4(偶数) N/2 允许两个基组各坏一个 N/2块盘同时写入

注意:其中N代表硬盘总数

3、RAID级别详解

3.1 RAID 0(不含校验与冗余的条带存储)

RAID 0技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入各个物理硬盘中。这样一来,在最理想的状态下,硬盘设备的读写性能会提升数倍,但是若任意一块硬盘发生故障,将导致整个系统的数据都受到破坏。通俗来说,RAID 0技术能够有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力

3.2 RAID 1(不含检验的镜像存储)

RAID 1技术 是把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。但在读取数据的时候,操作系统可以分别从两块硬盘中读取信息,因此理论读取速度的峰值可以是硬盘数量的倍数。另外,平时只要保证有一块硬盘稳定运行,数据就不会出现损坏的情况,可靠性较高。

3.3 RAID 5(数据块级别的分布式检验条带存储)

RAID 5 最少需要3块磁盘组成,使用的是硬盘切割(Disk Striping)技术。两块磁盘为数据的存储,一块磁盘为校验数据,数据存储的盘的数据读写和RAID 1(分布式存储)是一样的,但是有校验机制,所以写的速度相对RAID 0较差一点,读取的速度很高。任何一个磁盘数据丢失或损坏,都不会导致整个数据丢失,因为有校验机制的盘会通过其它没有损坏的盘计算出损坏的盘内容数据。

3.4 RAID 10(镜像与条带存储)

RAID 10技术是RAID 1+RAID 0技术的一个“组合体”,RAID 10需要至少4块硬盘来组建,其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。RAID 10技术继承了RAID 0的高读写速度和RAID 1的数据安全性。

4、RAID实战

准备

安装CentOS 8操作系统主机,并添加4块20 GB硬盘。

命令

mdadm命令用于创建、调整、监控和管理RAID设备,语法格式为“mdadm 参数 硬盘名称”。

mdadm命令的常用参数和作用

-D 显示RAID设备的详细信息
-A 加入一个以前定义的RAID
-B 创建一个没有超级块的RAID设备
-F 选项监控模式
-G 更改RAID设备的大小或形态
-I 添加设备到RAID中,或从RAID中删除设备
-z 组建RAID1、RAID4、RAID5、RAID6后从每个RAID成员获取的空间容量
-s 扫描配置文件或/proc/mdstat以搜寻丢失的信息
-C 把RAID信息写入每个成员超级块中
-v 显示RAID创建过程中的详细信息
-B 不把RAID信息写入每个成员的超级块中
-l 指定RAID的级别
-n 指定RAID中活动设备的数目
-f 把RAID成员列为有问题,以便移除该成员
-r 把RAID成员移出RAID设备
-a 向RAID设备中添加一个成员
--re-add 把最近移除的RAID成员重新添加到RAID设备中
-E 查看RAID成员详细信息
-c 创建一个RAID设备时默认为512kb
-R 开始部分组装RAID
-S 停用RAID设备,释放所有资源
-x 指定初始RAID设备的备用成员的数量
--zero-superblock 如果RAID设备包含一个有效的超级块,该块使用零覆盖

4.1 RAID 0部署

实验环境

RAID级别 磁盘 热备盘
raid0 sdb,sdc
# 安装mdadm
[root@localhost ~]# yum -y install mdadm # 创建raid0
[root@localhost ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sd[b,c]
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started. # 查看阵列信息
[root@localhost ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=85c13218:1975466f:a1d59df8:b4833594
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Aug 16 11:21:04 2022
Raid Level : raid0
Array Size : 41908224 (39.97 GiB 42.91 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent Update Time : Tue Aug 16 11:21:04 2022
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0 Layout : -unknown-
Chunk Size : 512K Consistency Policy : none Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 85c13218:1975466f:a1d59df8:b4833594
Events : 0 Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc # 将RAID信息保存到配置文件
[root@localhost ~]# mdadm -Dsv > /etc/mdadm.conf # 格式化
[root@localhost ~]# mkfs.xfs /dev/md0
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
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@localhost ~]# mkdir /raid0
[root@localhost ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc raid0 root run sbin srv sys tmp usr var # 进行挂载
[root@localhost ~]# mount /dev/md0 /raid0/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 876M 0 876M 0% /dev
tmpfs 895M 0 895M 0% /dev/shm
tmpfs 895M 8.7M 887M 1% /run
tmpfs 895M 0 895M 0% /sys/fs/cgroup
/dev/mapper/cs-root 17G 1.9G 16G 11% /
/dev/sda1 1014M 195M 820M 20% /boot
tmpfs 179M 0 179M 0% /run/user/0
/dev/md0 40G 319M 40G 1% /raid0 # 查找md0UUID
[root@localhost ~]# blkid /dev/md0
/dev/md0: UUID="52e21055-43a3-442e-b649-110de8d92071" BLOCK_SIZE="512" TYPE="xfs" # 将挂载写入到/etc/fstab中,实现永久挂载, 开机自动挂载
[root@localhost ~]# vim /etc/fstab
......
UUID="52e21055-43a3-442e-b649-110de8d92071" /raid0 xfs defaults 0 0
...... # 解除挂载
[root@localhost ~]# umount /raid0/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 876M 0 876M 0% /dev
tmpfs 895M 0 895M 0% /dev/shm
tmpfs 895M 8.7M 887M 1% /run
tmpfs 895M 0 895M 0% /sys/fs/cgroup
/dev/mapper/cs-root 17G 1.9G 16G 11% /
/dev/sda1 1014M 195M 820M 20% /boot
tmpfs 179M 0 179M 0% /run/user/0 # 加载fstab配置文件, 同时检测语法是否有错误
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 876M 0 876M 0% /dev
tmpfs 895M 0 895M 0% /dev/shm
tmpfs 895M 8.7M 887M 1% /run
tmpfs 895M 0 895M 0% /sys/fs/cgroup
/dev/mapper/cs-root 17G 1.9G 16G 11% /
/dev/sda1 1014M 195M 820M 20% /boot
tmpfs 179M 0 179M 0% /run/user/0
/dev/md0 40G 319M 40G 1% /raid0

4.2 RAID1 部署

实验环境

RAID级别 磁盘 热备盘
raid1 sdb,sdc sdd

1)创建RAID1

2)添加1个热备盘

3)模拟磁盘故障,自动顶替故障盘

4)从raid1中移除故障盘

# 创建raid1
[root@localhost ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sd[b,c,d]
// -C 创建 -v 详细信息 -l阵列级别 -n 阵列成员数量 -x阵列备用盘数量
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 20954112K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started. # 将RAID信息保存到配置文件
[root@localhost ~]# mdadm -Dsv > /etc/mdadm.conf # 查看RAID阵列信息
[root@localhost ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Tue Aug 16 10:41:44 2022
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent Update Time : Tue Aug 16 10:43:29 2022
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 : c371a1b7:49be4a4f:9d0c47c1:ca740e5d
Events : 17 Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc 2 8 48 - spare /dev/sdd # 格式化
[root@localhost ~]# mkfs.xfs /dev/md1
meta-data=/dev/md1 isize=512 agcount=4, agsize=1309632 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=5238528, 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@localhost ~]# mkdir /raid1 # 进行挂载
[root@localhost ~]# mount /dev/md1 /raid1/ # 准备测试文件
[root@localhost ~]# cp /etc/passwd /raid1/ # 模拟损坏
[root@localhost ~]# mdadm /dev/md1 -f /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md1
# 查看阵列状态信息
[root@localhost ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Tue Aug 16 10:41:44 2022
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent Update Time : Tue Aug 16 10:51:21 2022
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 1
Spare Devices : 1 Consistency Policy : resync Rebuild Status : 11% complete Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : c371a1b7:49be4a4f:9d0c47c1:ca740e5d
Events : 20 Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
2 8 48 1 spare rebuilding /dev/sdd 1 8 32 - faulty /dev/sdc # 更新配置文件
[root@localhost ~]# mdadm -Dsv > /etc/mdadm.conf # 查看数据是否丢失
[root@localhost ~]# ls /raid1/
passwd
[root@localhost ~]# cat -n /raid1/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
...... # 移除损坏设备
[root@localhost ~]# mdadm -r /dev/md1 /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md1 # 添加一块新热备盘
[root@localhost ~]# mdadm -a /dev/md1 /dev/sde
mdadm: added /dev/sde # 查看阵列状态信息
[root@localhost ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Tue Aug 16 11:03:51 2022
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent Update Time : Tue Aug 16 11:07:31 2022
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 : fccb9296:7e443ff9:0b0b3537:d7b43b6e
Events : 54 Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
2 8 48 1 active sync /dev/sdd 3 8 64 - spare /dev/sde

4.3 RAID 5部署

实验环境

RAID级别 磁盘 热备盘
raid5 sdb,sdc,sdd sde

1)创建RAID5,添加1个热备盘,指定chunk大小为32K

-X或--spare- devicds= 指定阵列中备用盘的数量

-C或--chunk=设定阵列的块chunk块大小,单位为KB

2)停止阵列,重新激活阵列

3)使用热备盘,扩展阵列容量,从3个磁盘扩展到4个

# 创建raid5
[root@localhost ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 -c 32 /dev/sd[b,c,d,e]
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started. # 查看阵列状态信息
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Tue Aug 16 14:06:04 2022
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 : Tue Aug 16 14:06:10 2022
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2 Layout : left-symmetric
Chunk Size : 32K Consistency Policy : resync Rebuild Status : 9% complete #同步状态,同步完,此行消失。 Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 6b7d5927:032f6b93:7e0638b1:5e9dec9f
Events : 2 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 spare rebuilding /dev/sdd 3 8 64 - spare /dev/sde # 将RAID信息保存到配置文件
[root@localhost ~]# mdadm -Dsv > /etc/mdadm.conf # 确认数据同步
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Tue Aug 16 14:06:04 2022
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 : Tue Aug 16 14:07:49 2022
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 : 6b7d5927:032f6b93:7e0638b1:5e9dec9f
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 # 扩展RAID5磁盘阵列
[root@localhost ~]# mdadm -G /dev/md5 -n 4 -c 32 # 确认数据同步
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Tue Aug 16 14:06:04 2022
Raid Level : raid5
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 : Tue Aug 16 14:10:20 2022
State : clean, reshaping
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0 Layout : left-symmetric
Chunk Size : 32K Consistency Policy : resync Reshape Status : 26% complete
Delta Devices : 1, (3->4) Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 6b7d5927:032f6b93:7e0638b1:5e9dec9f
Events : 50 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 3 active sync /dev/sde # 停止MD5阵列
[root@localhost ~]# mdadm -Dsv > /etc/mdadm.conf #停止前,一定要先保存配置文件
[root@localhost ~]# mdadm -D /dev/md5 #停止前,请确认数据已经同步完(同步不完成,有时会无法激活)
......
Consistency Policy : resync #数据已经同步完
......
[root@localhost ~]# mdadm -S /dev/md5 #-S 停止阵列
mdadm: stopped /dev/md5 # 激活MD5阵列
[root@localhost ~]# mdadm -As #-A 激活磁盘阵列 s扫描配置文件得到阵列信息
mdadm: /dev/md5 has been started with 4 drives.

备注

1)停止前,一定要先保存配置文件

2)阵列只有在正常状态下才能扩容,降级及重构时不允许扩容。对于raid5来说,只能增加成员盘,不能减少;而对于raid1来说,可以增加成员盘,也可以减少。

3)要等所有数据同步后,新增加的磁盘空间才会在md5空间中有数据变化

4.4 RAID 10 部署

实验环境

RAID级别 磁盘 热备盘
raid10 分区:sdb1,sdb2,sdb3,sdb4

备注:

1)--zero-superblock:清除设备上的MD超级块

2)如更换的RAID卡与原卡规格型号相同,则不会有什么问题;若两卡规格型号不同,需重新安装新卡驱动程序。若驱动程序差别不大,RAID盘组合顺序正常,硬盘原数据可正确读写;若驱动程序结构差别大,则可能发生读写错误。

# 创建raid10
[root@localhost ~]# mdadm -C -v /dev/md10 -l 10 -n 4 /dev/sd[b,c,d,e]
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: partition table exists on /dev/sdb
mdadm: partition table exists on /dev/sdb but will be lost or
meaningless after creating array
mdadm: size set to 20954112K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started. # 查看阵列状态信息
[root@localhost ~]# mdadm -D /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Tue Aug 16 14:57:53 2022
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 : Tue Aug 16 14:57:53 2022
State : clean, resyncing
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0 Layout : near=2
Chunk Size : 512K Consistency Policy : resync Resync Status : 4% complete #同步状态,同步完,此行消失。 Name : localhost.localdomain:10 (local to host localhost.localdomain)
UUID : 6c6b4207:a0b0cc25:6df948a3:4997c88c
Events : 0 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 # 将RAID信息保存到配置文件
[root@localhost ~]# mdadm -Dsv > /etc/mdadm.conf # 确认数据同步
[root@localhost ~]# mdadm -D /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Tue Aug 16 14:57:53 2022
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 : Tue Aug 16 15:01:21 2022
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0 Layout : near=2
Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:10 (local to host localhost.localdomain)
UUID : 6c6b4207:a0b0cc25:6df948a3:4997c88c
Events : 17 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 # 查看阵列信息
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid10]
md10 : active raid10 sde[3] sdd[2] sdc[1] sdb[0]
41908224 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU] unused devices: <none> # 格式化阵列
[root@localhost ~]# mkfs.ext4 /dev/md10
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: 16833119-5f99-4104-a324-1c4fd0aeaf6b
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624 Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done # 挂载阵列
[root@localhost ~]# mkdir /raid10 #创建挂载点
[root@localhost ~]# mount /dev/md10 /raid10/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 876M 0 876M 0% /dev
tmpfs 895M 0 895M 0% /dev/shm
tmpfs 895M 8.7M 887M 1% /run
tmpfs 895M 0 895M 0% /sys/fs/cgroup
/dev/mapper/cs-root 17G 1.9G 16G 11% /
/dev/sda1 1014M 195M 820M 20% /boot
tmpfs 179M 0 179M 0% /run/user/0
/dev/md10 40G 49M 38G 1% /raid10 # 编辑/etc/fstab永久挂载阵列
[root@localhost ~]# vim /etc/fstab
....
UUID="16833119-5f99-4104-a324-1c4fd0aeaf6b" /raid10 ext4 defaults 0 0
.....
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 876M 0 876M 0% /dev
tmpfs 895M 0 895M 0% /dev/shm
tmpfs 895M 8.7M 887M 1% /run
tmpfs 895M 0 895M 0% /sys/fs/cgroup
/dev/mapper/cs-root 17G 1.9G 16G 11% /
/dev/sda1 1014M 195M 820M 20% /boot
tmpfs 179M 0 179M 0% /run/user/0
/dev/md10 40G 49M 38G 1% /raid10 # 模拟磁盘损坏及修复
//模拟/dev/sdc损坏
[root@localhost ~]# mdadm /dev/md10 -f /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md10 [root@localhost ~]# mdadm -D /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Tue Aug 16 14:57:53 2022
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 : Tue Aug 16 15:14:52 2022
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.localdomain:10 (local to host localhost.localdomain)
UUID : 6c6b4207:a0b0cc25:6df948a3:4997c88c
Events : 19 Number Major Minor RaidDevice State
0 8 16 0 active sync set-A /dev/sdb
- 0 0 1 removed
2 8 48 2 active sync set-A /dev/sdd
3 8 64 3 active sync set-B /dev/sde 1 8 32 - faulty /dev/sdc #查看raid状态,缺了一个U,说明4个盘有一个down了
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid10]
md10 : active raid10 sde[3] sdd[2] sdc[1](F) sdb[0]
41908224 blocks super 1.2 512K chunks 2 near-copies [4/3] [U_UU] unused devices: <none> #移除/dev/sdc
[root@localhost ~]# mdadm /dev/md10 -r /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md10 #通过lsblk以及mdadm -D /dev/md0命令可以查看一下情况
[root@localhost ~]# mdadm /dev/md10 -r /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md10
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─cs-root 253:0 0 17G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─md10 9:10 0 40G 0 raid10 /raid10
sdc 8:32 0 20G 0 disk #已经离开阵列
sdd 8:48 0 20G 0 disk
└─md10 9:10 0 40G 0 raid10 /raid10
sde 8:64 0 20G 0 disk
└─md10 9:10 0 40G 0 raid10 /raid10
sr0 11:0 1 9G 0 rom #现在假设/dev/sdc已经修复,重新加回到阵列里
[root@localhost ~]# mdadm /dev/md10 -a /dev/sdc
mdadm: added /dev/sdc # 四个U,表示4块盘都正常了
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid10]
md10 : active raid10 sdc[4] sde[3] sdd[2] sdb[0]
41908224 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU] unused devices: <none> # 更新配置文件
[root@localhost ~]# mdadm -Dvs /dev/md10 > /etc/mdadm.conf

注意

mdadm运行时会自动检查/etc/mdadm.conf 文件并尝试自动装配,因此第一次配置raid后可以将信息导入到/etc/mdadm.conf中,如果不生成mdadm.conf文件,mdadm会尝试自己加载raid,最后可能会出现把raid生成到/dev/md*里

RAID磁盘阵列技术的更多相关文章

  1. RAID磁盘阵列及CentOS7系统启动流程(week2_day3)--技术流ken

    RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便宜的磁盘,以硬件( ...

  2. 使用RAID与LVM磁盘阵列技术。

    7.2 LVM逻辑卷管理器 前面学习的硬盘设备管理技术虽然能够有效地提高硬盘设备的读写速度以及数据的安全性,但是在硬盘分好区或者部署为RAID磁盘阵列之后,再想修改硬盘分区大小就不容易了.换句话说,当 ...

  3. RAID与LVM磁盘阵列技术

    RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列) RAID概念: RAID技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,并把数据 ...

  4. Linux 就该这么学 CH07 使用RAID和LVM磁盘阵列技术

    1 RAID (独立冗余磁盘阵列) RAID 技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,并把数据切割成多个区段之后分别存在各个不同的物理硬盘设备上,然后利用分散读写计数来提升磁盘 ...

  5. 第7章 使用RAID与LVM磁盘阵列技术

    章节简述: 您好,此章节为新增加的知识内容,正在努力的排版完善,预习2016年9月中旬完成,感谢您的支持,QQ群:340829. 7.1  磁盘冗余阵列 1988年由加利福尼亚大学伯克利分校发表的文章 ...

  6. RAID磁盘阵列学习笔记

    RAID是“Redundant Array of Independent Disk”的缩写,中文意思是独立冗余磁盘阵列.简单地解释,就是将N台硬盘通过RAID Controller(分Hardware ...

  7. linux lvm管理扩展 RAID磁盘阵列管理

    LVM逻辑卷将多个物理分区/磁盘从逻辑上组合成一个更大的整体,从其中划分出不同的逻辑分区,逻辑分区的大小可以根据需要扩大,缩减!!!!/boot用来存放引导文件,不要基于LVM创建 PV(物理卷)物理 ...

  8. RAID磁盘阵列及CentOS7系统启动流程

    磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意,,数据读取无影响.将数据切割成许多区段,分别存放在各个硬盘 ...

  9. 末学者笔记--Linux中RAID磁盘阵列及centos7启动过程

    <一>RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便 ...

随机推荐

  1. 浅谈Javascript单线程和事件循环

    单线程 Javascript 是单线程的,意味着不会有其他线程来竞争.为什么是单线程呢? 假设 Javascript 是多线程的,有两个线程,分别对同一个元素进行操作: function change ...

  2. GraphX 图计算实践之模式匹配抽取特定子图

    本文首发于 Nebula Graph Community 公众号 前言 Nebula Graph 本身提供了高性能的 OLTP 查询可以较好地实现各种实时的查询场景,同时它也提供了基于 Spark G ...

  3. 点亮Arduino内置的LED灯

    更新记录 2022年4月16日:本文迁移自Panda666原博客,原发布时间:2021年9月3日. 15块软妹币的板子镇楼. 上一篇配置好了开发环境,然后就开始搞第一个小灯的实验了. 原理相当的简单, ...

  4. Xilinx DMA的几种方式与架构

    DMA是direct memory access,在FPGA系统中,常用的几种DMA需求: 1. 在PL内部无PS(CPU这里统一称为PS)持续干预搬移数据,常见的接口形态为AXIS与AXI,AXI与 ...

  5. Pytorch实现波阻抗反演

    Pytorch实现波阻抗反演 1 引言 地震波阻抗反演是在勘探与开发期间进行储层预测的一项关键技术.地震波阻抗反演可消除子波影响,仅留下反射系数,再通过反射系数计算出能表征地层物性变化的物理参数.常用 ...

  6. 关于webstorm打开HTML文件出现404错误的情况

    第一种情况是你的端口号错误.你可以到设置里面找到调试器(第四个可以展开的按钮里面),找到端口号,把端口号改成8080(默认),再勾选旁边的按钮(可以接受外部链接). 你的文件命名方式不对,最好的文件名 ...

  7. Spring Data JPA系列4——Spring声明式数事务处理与多数据源支持

    大家好,又见面了. 到这里呢,已经是本SpringData JPA系列文档的第四篇了,先来回顾下前面三篇: 在第1篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring ...

  8. zabbix主动式和被动式

    推荐: zabbix我们使用主动式,主动式的话,可以把压力都分散到agent上,压力小. 1: zabbix主动式和被动式是相对于agent来说的. zabbix server去获取zabbix ag ...

  9. Docker Buildx使用教程:使用Buildx构建多平台镜像

    写在前边 记录一下前阵子在X86_64平台使用Docker Buildx构建多平台镜像的办法,包含但不限于构建ARM镜像. 构建环境 软件名 版本 Ubuntu 18.04.2 LTS Docker ...

  10. 记一次重复造轮子(Obsidian 插件设置说明汉化)

    杂谈 #Java脚本 因本人英语不好在使用Obsidian时,一些插件的设置英文多令人头痛.故有写一个的翻译插件介绍和设置脚本的想法.看到有些前人写的一下翻译方法,简直惨目忍睹.竟然要手动.这个应该写 ...