RAID概述

RAID技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果。

最常见的RAID磁盘阵列的方案是RAID 0RAID 1RAID 5RAID 10这4种。

RAID 10技术是RAID 1+RAID 0技术的一个“组合体”,先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。

RAID 10磁盘阵列至少4块硬盘来组建。

如下磁盘阵列部署实践基于RHEL8 + VMWare虚拟机进行操作。

使用mdadm命令创建、调整、监控和管理RAID设备。

部署磁盘阵列

第一步: 创建磁盘阵列。

[root@zhangsan ~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@zhangsan ~]#

参数解读:

  • 由于是基于虚拟环境部署的磁盘阵列,所以并不真正存在硬件形式的磁盘阵列卡,故使用-C参数表示创建一个软件RAID阵列卡
  • -v 参数显示创建的过程,/dev/md0为创建后的RAID磁盘阵列的名称
  • -n 4 表示使用4块硬盘来部署这个RAID磁盘阵列
  • -l 10 表示RAID 10方案
  • /dev/sdb /dev/sdc /dev/sdd /dev/sde 为4块硬盘设备名

命令执行期间可以用-D参数进行查看进度,也可以用-Q参数查看简要信息:

[root@zhangsan ~]# mdadm -Q /dev/md0
/dev/md0: 39.97GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.
[root@zhangsan ~]#

第二步: 把制作好的RAID磁盘阵列格式化为Ext4格式。

[root@zhangsan ~]# mkfs.ext4 /dev/md0
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: 7819e2ed-91c1-46b9-8cd4-d7c390970965
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@zhangsan ~]#

第三步: 创建挂载点,挂载磁盘阵列。

[root@zhangsan ~]# mkdir /RAID
[root@zhangsan ~]# mount /dev/md0 /RAID
[root@zhangsan ~]# df -h
...省略其他信息...
/dev/md0 40G 49M 38G 1% /RAID
[root@zhangsan ~]#

最后,查看/dev/md0磁盘阵列设备的详细信息,确认RAID级别(Raid Level)、阵列大小(Array Size)和总硬盘数(Total Devices)都是否正确。

[root@zhangsan ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Dec 29 19:28:35 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 : Thu Dec 29 19:32:29 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 : zhangsan.com:0 (local to host zhangsan.com)
UUID : 3c00cdbe:d9b5858c:862ad54c:061d0563
Events : 23 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@zhangsan ~]#

如果想让创建好的RAID磁盘阵列能够一直提供服务,不会因每次的重启操作而取消,那么一定要记得将挂载信息添加到/etc/fstab文件中,这样可以确保在每次重启后RAID磁盘阵列都是有效的。

[root@zhangsan ~]# vim /etc/fstab
...省略其他信息...
/dev/md0 /RAID ext4 defaults 0 0

磁盘阵列损坏及修复

一旦硬盘发生故障,服务器上相应的指示灯也会变成红灯(或者变成一直闪烁的黄灯)。

在确认有一块物理硬盘设备出现损坏而不能再继续正常使用后,应该使用mdadm命令将其移除。

在虚拟机环境模拟硬盘设备故障:

# 使用mdadm命令的-f参数模拟硬盘损坏
[root@zhangsan ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@zhangsan ~]#

查看磁盘阵列状态:

[root@zhangsan ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Dec 29 19:28:35 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 : Thu Dec 29 19:37:40 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 : zhangsan.com:0 (local to host zhangsan.com)
UUID : 3c00cdbe:d9b5858c:862ad54c:061d0563
Events : 25 Number Major Minor RaidDevice State
- 0 0 0 removed
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 0 8 16 - faulty /dev/sdb
[root@zhangsan ~]#

显然,硬盘设备(/dev/sdb)损坏之后,查看RAID磁盘阵列的状态,可以发现状态已经改变。

此时可以使用mdadm命令的-r参数将故障盘移除。

# 使用mdadm命令的-r参数移除故障硬盘
[root@zhangsan ~]# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0
[root@zhangsan ~]#

再次查看磁盘阵列状态:

[root@zhangsan ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Dec 29 19:28:35 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 : 3
Persistence : Superblock is persistent Update Time : Thu Dec 29 19:40:37 2022
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0 Layout : near=2
Chunk Size : 512K Consistency Policy : resync Name : zhangsan.com:0 (local to host zhangsan.com)
UUID : 3c00cdbe:d9b5858c:862ad54c:061d0563
Events : 26 Number Major Minor RaidDevice State
- 0 0 0 removed
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@zhangsan ~]#

RAID 10级别的磁盘阵列中,当RAID 1磁盘阵列中存在一个故障盘时并不影响整体RAID 10磁盘阵列的使用。

当购买了新的硬盘设备后再使用mdadm命令予以替换即可,在此期间可以在磁盘阵列挂载目录/RAID中正常地创建或删除文件。

更换硬盘后再次使用-a参数进行添加操作,系统默认会自动开始数据的同步工作。

# 使用mdadm命令的-a参数添加新硬盘
[root@zhangsan ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@zhangsan ~]#

使用-D参数即可看到整个过程和进度(用百分比表示):

[root@zhangsan ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Dec 29 19:28:35 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 : Thu Dec 29 19:45:01 2022
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1 Layout : near=2
Chunk Size : 512K Consistency Policy : resync Rebuild Status : 2% complete # 添加新硬盘设备之后数据同步的执行进度 Name : zhangsan.com:0 (local to host zhangsan.com)
UUID : 3c00cdbe:d9b5858c:862ad54c:061d0563
Events : 32 Number Major Minor RaidDevice State
4 8 16 0 spare rebuilding /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@zhangsan ~]#

删除磁盘阵列

首先,umount磁盘阵列。

[root@zhangsan ~]# umount /RAID
[root@zhangsan ~]#

其次,停止磁盘阵列。

# 使用mdadm命令的-S参数或者--stop参数停止磁盘阵列
[root@zhangsan ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@zhangsan ~]#

最后,卸载磁盘阵列中的磁盘。

[root@zhangsan ~]# mdadm --misc --zero-superblock /dev/sdb
[root@zhangsan ~]# mdadm --misc --zero-superblock /dev/sdc
[root@zhangsan ~]# mdadm --misc --zero-superblock /dev/sdd
[root@zhangsan ~]# mdadm --misc --zero-superblock /dev/sde

RAID 10磁盘阵列实践的更多相关文章

  1. 部署RAID 10

    额外添加4块硬盘,用于搭建RAID 10 检查linux的磁盘 [root@local-pyyu ~]# fdisk -l |grep '/dev/sd[a-z]' 磁盘 /dev/sda:21.5 ...

  2. 图解RAID 0, RAID 1, RAID 5, RAID 10

    RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失 ...

  3. SSD阵列卡方案优化:考虑使用RAID 50替代RAID 10

    最近一直在研究RAID 50,因为牺牲一半的容量的RAID 10代价实在太大了,而且它提供的可用性也并不是百分百的,我们首先来看下RAID 10的可用性分析: 以同等容量的不同RAID方式作为案例分析 ...

  4. Dell R720上的系统安装问题的解决办法(关于RAID建立磁盘阵列的技术)

    摘要:本篇是本人在搭建大数量存储.搜索环境时,对于使用Dell PowerEdge R720 and R720xd作为服务器所遇到的一些问题进行的总结. 开始时,我们使用Dell提供的安装光盘(蓝色) ...

  5. 模拟示例raid 5(5块磁盘 3块做raid 2块做备份 ) raid 10(5块磁盘) 修改版

    RAID5:需要至少三块(含)硬盘,兼顾存储性能.数据安全和储存成本. RAID10:需要至少四块(含)硬盘,兼具速度和安全性,但成本很高. raid 10(5块磁盘) 1.添加硬盘设备(添加5块) ...

  6. 什么是RAID(磁盘阵列)

    RAID全称Redundant Array of Independent Disk,即独立冗余磁盘阵列.RAID技术由加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同 ...

  7. RAID冗余磁盘阵列的创建

    RAID 0 :条带化,数据被拆分到多个驱动中,写速度最快,但并没有数据镜像或校验信息. RAID 1 :镜像化,完全磁盘镜像,在独立磁盘上创建数据的两份拷贝,这个级别提供最好的数据安全,但写速度慢. ...

  8. Raid 10配置流程(五块磁盘)

    Raid 10配置流程(五块磁盘) 1.在虚拟机中再添加5块硬盘.  2.使用mdadm命令创建raid10,名称为“/dev/md0” -C代表创建操作,-v显示创建过程,-a yes检查RAID名 ...

  9. 高效DevOps的10项实践

    高效DevOps的10项实践 原文链接: http://www.drdobbs.com/architecture-and-design/top-10-practices-for-effective-d ...

  10. 如何在LSI MegaRAID BIOS里设定RAID 10与Hot Spare

    1. 同时按下 ”Ctrl + H” 进入MegaRAID WebBIOS 画面,可以看到所有物理硬盘 (Physical Drives) 的信息.请在左边视窗点选“Configuration Wiz ...

随机推荐

  1. [转帖]一个小操作,SQL 查询速度翻了 1000 倍

    https://tidb.net/book/tidb-monthly/2022/2022-04/usercase/sql-1000 背景介绍​ 某一天早上来到公司,接到业务同学反馈,线上某个SQL之前 ...

  2. 结论&定理大全

    定理 1:包含 \(0\) 与 \(2^k-1\) 的按位与或空间和 \(k\) 个点的有传递性的有向图形成双射 证明: 空间->传递闭包:对于任意两个位 \(i,j\),若某个数包含 \(i\ ...

  3. css 动画 div顺时针方向移动,

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. go 1.21:cmp

    标准库 cmp 原文在这里 go 1.21 新增 cmp 包提供了与有序变脸比较相关的类型和函数. Ordered 定义如下: type Ordered interface { ~int | ~int ...

  5. .net5发布到Linux指南

    目录 Aspnetcore api 服务发布指南 一. 搭建nginx服务器 下载安装gcc编译库 下载安装pcre正则表达式库 下载安装openssl安全加密库 下载安装zlib解压库 下载解压并编 ...

  6. 【5】OpenCV2.4.9实现图像拼接与融合方法【SURF、SIFT、ORB、FAST、Harris角点 、stitch 】

    相关文章: [1]windows下安装OpenCV(4.3)+VS2017安装+opencv_contrib4.3.0配置 [2]Visual Studio 2017同时配置OpenCV2.4 以及O ...

  7. UDP通信 [补档-2023-07-22]

    UDP通信 6-1 简介 ​ UDP通信是面向无链接的,不稳定,不可靠,不安全的一种通信方式.TCP在通信前发送方会向接收方进行三次握手链接,然后确认双方链接后才会进行数据传输,最后四次挥手保证链接关 ...

  8. 天玑9300大战骁龙8 Gen3:十余项数据实测 到底谁才是安卓之王?

    一.前言:全大核天玑9300正面硬钢骁龙8 Gen3 究竟谁才是安卓芯片之王? 今年,两家移动芯片厂商都开始放大招了,骁龙首发Cortex-X4超大核,联发科也不甘示弱,初次将"全大核&qu ...

  9. 17.5 稀疏调拨的内存映射文件--《Windows核心编程》

    原文链接:https://www.likecs.com/show-306421749.html,原文中代码是C++MFC程序,更详细.本文是C语言测试代码. (1)稀疏文件(Sparse File)定 ...

  10. Mac 上 redis 的安装方法

    1.由于需要用到编译,所以先安装xcode,注意利用appstore安装xcode后,记得打开xcode 点install,也可以建立一个macos项目,运行下 试下. 2. 去官网下载:https: ...