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. [转帖]一、Kafka Tool使用

    一.Kafka Tool使用 1.添加cluster 2.开启SASL_PLAINTEXT 如果kafka 开启SASL_PLAINTEXT认证(用户名和密码认证) 3.高级设置 如果设置的是SASL ...

  2. [转帖]echo 输出不换行-e \c

    http://www.my889.com/i/1952 在shell中,echo输出会自动换行.有时候在循环中不希望echo输出换行.代码实现如下: 1 echo -e " \c" ...

  3. [转帖]linux删除文本文件空白行

    linux删除文本文件空白行https://www.zhihu.com/people/chen-kai-84-54-75 sed命令 在Linux中,可以使用sed命令批量删除文本中的空白行.以下是一 ...

  4. Vant中List列表下拉加载更多

    van-list上只有一层父级元素div,多了可能下拉加载出不来:或者更多 <template> <div class="scholl-declarepage"& ...

  5. vim 从嫌弃到依赖(16)——宏

    终于到了我第二喜欢的vim功能了(当然了,最喜欢的是.命令).我原本计划在介绍完.命令之后介绍宏,以便让各位小伙伴们能了解到vim对于重复操作进行的强大的优化.但是由于宏本身跟寄存器息息相关,所以还是 ...

  6. vim 从嫌弃到依赖(0)——概述

    最近我想开一个新的系列,记录我使用vim的相关心得.初次接触vim是在大学操作系统实践课程中,跟着Linux一块进行学习的.当初我是百般嫌弃它的,想要进行编辑还要按下其他键,我想要移动光标居然还的切换 ...

  7. TienChin 开篇-运行 RuoYiVue

    开篇 目的: 让大家随心所欲的 DIY 若依的脚手架 不会涉及到太多基础知识 踊跃提问(不懂得地方大家提问我会根据提问,后续一一解答疑惑) 下载 RuoYiVue Gitee: https://git ...

  8. BoostAsyncSocket 异步反弹通信案例

    Boost 利用ASIO框架实现一个跨平台的反向远控程序,该远控支持保存套接字,当有套接字连入时,自动存储到map容器,当客户下线时自动从map容器中移除,当我们需要与特定客户端通信时,只需要指定客户 ...

  9. 教你用Java实现动态调色板

    案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用Java编程实战案例,做一个动态调色板.案例界面会出现三个滑动组块以及对应的数值,通过移动滑块可以改变颜色区域的显示.通过实 ...

  10. Google_Book_20Things.前言以及前四项学习笔记

    20 THINGS I LEARNED ABOUT BROWSERS AND THE WEB Illustrated by Christoph Niemann. Written by the Goog ...