软件RAID配置实战(2个案例场景)

news2024/11/16 5:49:43

文章目录

  • 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" 

格式

  1. 创建新的 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 的磁盘分区列表。
  1. 显示 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/sec
      
unused 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.2
     Creation Time : Thu Oct 13 18:13:17 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 : Thu Oct 13 18:15:02 2022
             State : clean 
    Active Devices : 3  ---激活的设备
   Working Devices : 4  ---工作的设备
    Failed Devices : 0  ---不工作的设备
     Spare Devices : 1  ---空闲的设备

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : 192.168.233.21:5  (local to host 192.168.233.21)
              UUID : 3d950a02:3b0b3f96:f99f95ff:3149ae0b
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       4       8       49        2      active sync   /dev/sdd1

       3       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磁盘阵列

步骤

  1. 查看磁盘列表
fdisk -l 
  1. 创建分区,使用fdisk分别进入交互式界面并在交互式界面创建分区
fdisk /dev/sdf
fdisk /dev/sdg
fdisk /dev/sdh
fdisk /dev/sdi 

输入n创建新分区,默认分区p,默认起止扇区,最后w保存

使用lsblk可以查看分区列表
在这里插入图片描述

  1. 更改分区类型为“Linux raid autodetect”

使用fdiskz分别进入交互式界面为或者在分区时一次性完成

输入t改变分区系统ID,输入fd将分区类型更改为 “Linux raid autodetect”,该分区将被自动识别为 RAID 分区

:分区类型代码用来标识不同的文件系统和用途。每个分区类型都有一个对应的十六进制代码。如fd 代码表示分区类型为 “Linux raid autodetect”。可以通过输入 L 列出所有代码。

  1. 安装mdadm组件
yum install mdadm 

检查是否安装了组件

rpm -qa | grep "mdadm" 
  1. 创建RAID5磁盘阵列
mdadm -C -v /dev/md0 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1
  1. 查看创建进度
 cat /proc/mdstat  
  1. 查询详细信息
mdadm -D /dev/md5 
  1. 格式化新创建的阵列盘
mkfs.xfs /dev/md5
  1. 挂载新创建的磁盘文件
mount /dev/md5 /mnt/md5 
  1. 查看文件系统的磁盘空间使用情况
df -h 
  1. 模拟故障
mdadm /dev/md5 -f /dev/sdh1 
  1. 查看 RAID 状态
mdadm -D /dev/md5 
或
mdadm --detail /dev/md5 

此时可以看到有一个设备故障

  1. 恢复RAID阵列

(1)移除故障磁盘

mdadm /dev/md5 -r /dev/sdh1

(2)添加新的或修复的磁盘

mdadm /dev/md5 -a /dev/sdh1
  1. 检查恢复情况
 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 

步骤

  1. 更改分区类型为“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
  1. 创建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. 创建1组RAID0

使用刚创建的md0和md1创建1组RAID0,命名md10,至此组成RAID10

mdadm -Cv /dev/md10 -l0 -n2 /dev/md0 /dev/md1
  1. 查看详情信息

查看3个RAID阵列的详细信息,运行正常

mdadm -D /dev/md0
mdadm -D /dev/md1
mdadm -D /dev/md10

在这里插入图片描述
在这里插入图片描述

  1. 格式化新分区

格式化刚组成的RAID10分区,即md10

mkfs.xfs /dev/md10
  1. 模拟故障

可以使两块RAID1各挂1块,如md0的sdf2或sdg2和md1的sdh2或sdi2。

由于RAID0是基于两组RAID1创建的虚拟分区,因此测试其意义不大。

mdadm /dev/md0 -f /dev/sdg2
mdadm /dev/mdq -f /dev/sdi2
  1. 检查模拟的故障状态

经测试两组各挂了一块盘,RAID1组仍正常运行。

mdadm -D /dev/md0
mdadm -D /dev/md1

在这里插入图片描述

  1. 恢复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
  1. 检查恢复情况
 mdadm -D /dev/md0
 mdadm -D /dev/md1
 mdadm -D /dev/md10

经检查,新添加的磁盘重建阵列,稍等片刻恢复正常

  1. 挂载到系统
mount /dev/md10 /mnt/md10/

挂载到系统后即可正常使用RAID10磁盘阵列分区

  1. 检查磁盘信息

使用df -hT命令查看系统中所有文件系统的挂载信息和文件系统类型

df -hT

在这里插入图片描述

已成功挂载并且正常显示,一切正常

6、移除RAID阵列

  1. 卸载文件系统

    如果RAID阵列上有挂载的文件系统,需要先卸载它。

    使用umount /dev/mdX命令来卸载RAID设备上的文件系统。

  2. 移除RAID设备

    使用 mdadm -S /dev/mdX 停止RAID阵列。

    或者使用mdadm --remove /dev/mdX命令来移除RAID设备。

    从mdadm的配置中删除RAID设备的定义,但不会修改磁盘上的数据或分区。

  3. 清除超级块

    清除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

  4. 删除配置文件

    删除 rm -rf /etc/mdadm.conf


注:部分图片来源于网络,侵删。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1989982.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

031_java.util.concurrent.CopyOnWriteArrayList

继承体系 CopyOnWriteArrayList存在的目的是为了解决在高并发下list的读写。设计上希望只阻塞写行为&#xff0c;不会阻塞读行为。CopyOnWriteArrayList设计就基于此&#xff0c;在内部含有ReentrantLock用作修改时加锁&#xff0c;CopyOnWriteArrayList下有很多可以写方法&…

三种向量相似度计量方法——欧式距离、余弦相似度、皮尔逊相关系数

1、欧式距离 欧氏距离在机器学习可以清晰展示不同对象的相似程度。 欧式距离是最直观的距离度量方法之一&#xff0c;它衡量两个点之间的直线距离, 较小的欧式距离意味着较高的相似度。 分类——K近邻算法&#xff08;KNN&#xff09;&#xff1a;需要对一个新的样本进行分类…

IIS6 PUT漏洞

一.漏洞描述 IIS Server 在 Web 服务扩展中开启了 WebDAV &#xff0c;配置了可以写⼊的权限&#xff0c;造成任意⽂件上传 1.1环境搭建 环境 fofa&#xff1a;"IIS-6.0" 本地搭建2003 server 1.2漏洞复现 1.开启 WebDAV 和写权限&#xff1a; 1.3 漏洞复现 使…

随笔(三)——项目代码优化

文章目录 一、数据驱动的优化点0.项目技术1.需求说明2. 优化前3.优化后&#xff08;复杂版&#xff09;4.优化后&#xff08;可读性高版&#xff09; 二、使用循环遍历&#xff0c;减少if-else1.源代码2. 优化后3. 优点 一、数据驱动的优化点 0.项目技术 vue2 view design …

OpenAI 推出 gpt-4o-2024-08-06 模型 解析结构化输出功能 附体验平台

人工智能技术的边界再次被突破&#xff0c;OpenAI 社区迎来了 gpt-4o-2024-08-06 模型的问世&#xff0c;这不仅是一次技术的飞跃&#xff0c;更是对智能助手功能和可靠性的一次全面革新。 技术革新&#xff1a;gpt-4o-2024-08-06 模型的诞生 gpt-4o-2024-08-06 模型是 OpenA…

【深度学习】用Pytorch完成MNIST手写数字数据集的训练和测试

模型训练相关 思路&#xff1a; 导入数据集&#xff08;对数据集转换为张量&#xff09;加载数据集&#xff08;使数据集成为可以进行迭代&#xff09;搭建卷积模型进行模型训练&#xff08;每训练一轮查看一次在测试集上的准确率&#xff09;使用tensorboard进行可视化保存训…

MySQL3 DQL数据查询语言

DQL SQL-DQL重要地位简单查询selectjia简单查询数据准备别名(AS)消除重复行(DISTINCT去重)算数运算符0.优先级1.算数运算符2.比较运算符3.逻辑运算符4.位运算符 空值空值参与运算 条件查询普通条件查询特殊比较运算符BETWEEN...AND...INLIKEIS NULLleast&#xff0c;greatest运…

Unity补完计划 之 SpriteEditer SingleMode

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正 因为unity不只是3d需要&#xff0c;还有2d游戏需要大量编辑处理图片素材&#xff0c;所以需要了解Sprite&#xff08;精灵…

ASC格式的协议数据解析

函数来自RTT的AT组件 - at_client.c 例如&#xff0c;数据是 CGREG: 0,1&#xff0c;通过at_resp_parse_line_args_by_kw把1赋予link_stat。 简化从AT响应中提取信息的过程&#xff0c;使得编写与硬件通信的代码更加简洁和易于维护。 这么提数据也太方便了 at_resp_parse_l…

结构体练习作业

作业一:结构体数组存储学生信息(姓名&#xff0c;年龄&#xff0c;分数)&#xff0c;完成输入学生信息&#xff0c;输出学生信息&#xff0c;求学生成绩之和&#xff0c;求最低学生成绩。 .h文件 main.c .c文件 输入信息 输出信息 平均值 最低值 作业二:在堆区&#xff0c;申…

STC-ISP升级MCU

STC-ISP升级mcu步骤&#xff1a; 1、RS232线连接电脑&#xff0c;芯片型号选择STC8H8K64U 2、波特率选择115200 3、IRC频率选择24MHz 4、设置EEPROM大小为64K 如下图设置&#xff1a; 插上RS232选择相应的COM口&#xff1a; 我这里的COM口是COM5. 打开程序文件&#xff1…

揭秘Redis的“隐藏武器”:跳跃表的原理与应用

1. 引言 1.1 Redis的快速崛起 Redis&#xff0c;全名为Remote Dictionary Server&#xff0c;是一个开源的高性能键值对存储系统&#xff0c;它提供了多种类型的数据结构&#xff0c;如字符串、列表、集合、有序集合等。由于其高性能、持久化选项以及丰富的特性&#xff0c;Re…

【已解决】如何获取到DF数据里最新的调薪时间,就是薪资最高且时间最早?

问题说明&#xff1a; 前几天在Python最强王者交流群【群除我佬】问了一个Pandas处理的问题&#xff0c;这里拿出来给大家分享下。 看上去不太好理解&#xff0c;其实说白了&#xff0c;就是在工资最高里&#xff0c;再找时间最早的。 换句话说就是&#xff0c;这三个人&…

益九未来CEO曾宪军:创新引领,打造智能售货机行业新标杆

在智能零售行业迅速发展的今天&#xff0c;益九未来&#xff08;天津&#xff09;科技发展有限公司正以其创新精神和前瞻性的战略布局&#xff0c;引领着智能售货机市场的潮流。而这一切的背后&#xff0c;离不开总经理&#xff08;CEO&#xff09;曾宪军先生的卓越领导和远见卓…

人类预期寿命数据-1960至2022年(世界各国与中国各省)

数据简介&#xff1a;人类预期寿命是指在特定年龄出生的人群&#xff0c;按照当前的死亡率水平&#xff0c;预期平均能够存活的年数。预期寿命衡量一个国家和地区卫生健康状况、社会经济发展水平和生活条件的重要参数&#xff0c;这次数据包含世界各国&#xff08;1960-2022年&…

代理IP类型详细解析:那么多种协议的代理如何选?

代理IP已经成为跨境业务的得力工具&#xff0c;但是仍有许多新手小白在初次接触到代理IP服务商时&#xff0c;不知道具体如何选择代理IP类型&#xff0c;面对五花八门的代理类型名称&#xff0c;往往需要付出一定的试错成本才知道哪个适合自己的业务。今天就来给大家科普科普&a…

深度学习中的规范化-层规范化

文章目录 层规范化层规范化参数与公式normalized_shape传入一个整数接口函数LayerNorm计算手动计算 normalized_shape传入一个列表接口函数LayerNorm计算手动计算 层规范化 在批量规范化这篇文章里详细介绍了批量规范化在卷积神经网络里的使用&#xff0c;本篇文章将继续介绍另…

LVS中NAT模式和DR模式实战讲解

1DR模式 DR&#xff1a;Direct Routing&#xff0c;直接路由&#xff0c;LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行 转发&#xff0c;源MAC是DIP所在的接口的MAC&#xff0c;目标MAC是某挑选出的RS的RIP所在接口的MAC地址&#xff1b;源 IP/PORT&#xf…

C++:auto关键字、内联函数、引用、带默认形参值的函数、函数重载

一、auto关键字 在C中&#xff0c;auto关键字是一个类型说明符&#xff0c;用于自动类型推导。 使用 auto 关键字时&#xff0c;变量的类型 是在编译时由编译器 根据 初始化表达式 自动推导出来的。这意味着你 不能在 声明 auto 变量时 不进行初始化 声明 auto 变量时&#x…