Linux Centos stream9 mdadm

RAID(Redundant Array of Independent Disk独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能,能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。

一、raid基础

磁盘阵列是由很多磁盘,以硬件(RAID卡)或软件(MDADM)形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一起,提升整个磁盘系统效能。

1.RAID机制

通过使用多硬盘并行工作的方式来提高硬盘的IO性能。

RAID有三个关键技术:镜像:提供了数据的安全性;条带(块大小也可以说是条带的粒度),它的存在的就是为了提高I/O性,提供了数据并发性;数据的校验:提供了数据的安全。

2.RAID级别

RIAD分为多种,称之为RAID level,RAID共有7级:RAID0~RIAD6

常用的RAID级别有:RAID0、RAID1、RAID5、RAID6、RAID10

类型

读写性能

可靠性

磁盘利用率

成本

RAID0

最好

最低

100%

较低

RAID1

读正常;写2份数据

50%

RAID5

读:近似RAID0

写:多了校验

RAID0<RAID5<RAID1

(n-1)/n

RAID0<RAID5<RAID1

RAID6

读:近似RAID0

写:多了双重校验

RAID6>RAID5

RAID6<RAID5

RAID6>RAID1

RAID10

读:RAID10=RAID0 写:RAID10=RAID1

50%

最高

  • 每种操作系统都有软件RAID的实现
  • 在Linux中软件RAID通过mdadm这个命令(程序包)实现
  • mdadm支持的RAID级别有:RAID0、RAID1、RAID4、RAID5、RAID6
  • mdadm可以基于多块硬盘、分区或逻辑卷创建软件RIAD
  • 创建好的软件RAID对应/dev/mdn,n为第几个RAID,如第一个创建的RAID为/dev/md0,第二个为/dev/md1
  • RAlD的信息保存在/proc/mdstat文件中;通过mdadm命令也可查看

3.RAID实现

a.硬件RIAD

通过用硬件来实现RAID功能的就是硬RAID,独立的RAID卡,主板集成的RAID芯片都是硬RAID。

RAID卡就是用来实现RAID功能的板卡,通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列零组件构成的。不同的RAID卡支持的RAID功能不同。支持RAlD0、RAID1、RAID4、RAID5、RAID10不等。不同品牌的RAID卡会有不同的功能与操作方法。我们不作分析评价。

b.软件RAID

软RAID运行于操作系统底层,将SCSI或者IDE控制器提交上来的物理磁盘,虚拟成虚拟磁盘,再提交给管理程序来进行管理。软RAID有以下特点:

  1. 占用内存空间
  2. 占用CPU资源
  3. 如果程序或者操作系统故障就无法运行

由于利用系统资源管理操作RAID,会占用宝贵的资源,软RAID逐渐被硬RIAD取代。学习软RAID原理与操作,深刻理解硬RIAD的底层逻辑,有助于提高硬RIAD应用水平。

本文主要讨论软RAID。在学习与训练之前,需要安装mdadm(不同版本安装命令有变化)、查看mdadm版本(mdadm -V)和浏览帮助(man mdadm)。

二、mdadm命令

mdadm命令来自于英文词组“ultiple devices admin”的缩写,其功能是用于管理RAID磁盘阵列组。作为Linux系统下软RAID设备的管理神器,mdadm命令可以进行创建、调整、监控、删除等全套管理操作。

1.帮助信息

在终端命令行录入mdadm –help,查看一下命令帮助

命令行录入man mdadm,查看一下命令mdadm的帮助文档

NAME

       mdadm - manage MD devices aka Linux Software RAID

SYNOPSIS

       mdadm [mode] <raiddevice> [options] <component-devices>

DESCRIPTION

       RAID devices are virtual devices created from two or more real block devices.  This allows multiple devices……

版本查看与升级

2.语法格式

mdadm命令的格式是:mdadm 【模式】【磁盘阵列】【参数】设备名

SYNOPSIS

       mdadm [mode] <raiddevice> [options] <component-devices>

3.常用模式

mdadm has several major modes of operation:

模式

功能

Assemble

激活预先配置的磁盘阵列

Build

创建一个没有超级快的RAID设备

Create

创建一个新的阵列组

Follow or Monitor

选择监控模式

Grow

改变RAID设备的大小或形态

4.基本参数

mdadm的参数较多,常用的列表如下。

参数

相同参数表达

主要功能

-A

--assemble

激活预先配置的磁盘阵列

-B

--build

创建一个没有超级快的RAID设备

-C

--create

创建一个新的阵列组

-F

--follow

选择监控模式

-G

--grow

改变RAID设备的大小或形态

-s

--scan

扫描配置文件或/proc/mdstat得到阵列缺失部分

-D

--detail

显示/打印磁盘阵列设备的详细信息

-f

--fail

将设备状态定为故障,以便移除该成员

-a

--add

添加新的设备到阵列组

-r

--remove

移除设备

-l

--level=

设定磁盘阵列的级别

-n

--raid-devices=

指定阵列成员(分区/磁盘)的数量

-x

--spare-devices=

指定阵列中备用盘的数量

-c

--chunk=

设定阵列的块大小,单位为kb

-S

--stop

停止阵列组

-h

--help

帮助

-V

--version

查看版本

-v

--verbose

对于正在发生的,显示详细信息

-f

--force

强制操作(非特定模式下)

5.重要操作

创建raid、查看状态、停用、重启、标记某盘失效、移除失效盘、添加备用盘、格式化、挂载、卸载。

三、应用案例

我们创建三个磁盘阵列:RAID0、RAID1和RAID5。

需要提前添加一块20G硬盘,用fdisk分区,每个区2G。我们用二个分区创建RAID0,二个分区创建RAID1。重点讨论创建RAID5:共使用四个分区,其中一个是备用分区。

1.创建RAID

创建RAID0

        mdadm -Cv /dev/md1 -l1 -n2 /dev/sdb[12]

创建RAID1

        mdadm -Cv /dev/md0 -l0 -n2 /dev/sdb[35]

创建RAID5

        mdadm -Cv /dev/md5 -l5 -n3 -x1 /dev/sdb[6789]

        -C  创建一个新的RAID

        -v  显示创建过程信息

        -l  指定要创建的RAID级别

        -n  指定硬盘的数量

        -x  指定备用盘

创建raid需要的分区是/dev/sdb6等,可以分开写,也可以用正则表示。

/dev/sdb[6789]也可以写作/dev/sdb{6..9},或者/dev/sdb{6,7,8,9}

2.查看状态及信息

        /proc/mdstat文件记录了所有raid信息:

查看指定RAID的详细信息

        mdadm -D /dev/md5

3.创建配置文件

创建好RAID之后,我们需要创建一个配置文件,下次开机启用后创建的raid信息不丢失,启动RAID设备也方便(没有配置文件,停用RAID后再次启动很复杂)。

默认情况下,没有RAID设备配置文件,我们可以在/etc目录下创建一个,名称为mdadm.conf

        mdadm -D --scan –verbose >> /etc/mdadm.conf

也可以简写命令:

        mdadm -Dsv >> /etc/mdadm.conf

        -D 显示详细信息(只包括raid信息)

        -s 扫描所有raid设备

        -v 列出所有详细信息(包括物理磁盘/分区信息)

查看配置文件

创建配置文件后,执行mdadm命令时会出现提示:

centos7、centos8和ubuntu22.04中都不出现该提示,仅此版本存在

我们修改配置文件,把name的值更改一下:“guo:*”(guo是服务器主机名)改为仅保留后面的数字

修改后再重新执行命令,就不再出现提示了。

4.创建文件系统

与正常用磁盘/分区,或者逻辑卷相同,格式化执行同样命令:

        mkfs.xfs  /dev/md5

ubuntu22.04不支持该命令,需要安装新的软件包。支持命令格式:mkfs  –t xfs /dev/md5

5. 挂载

创建文件系统之后就可以挂载使用了:

        mount /dev/md5 /mnt/md5

6.管理操作

a.停用

不再使用raid,可以停用。

        mdadm –S /dev/md5

b.重启

停用的raid,可以重新启用。

        mdadm -A /dev/md5

使用配置文件启动阵列时,mdadm会查询配置文件中的设备和阵列内容,然后启动运行所有能运行RAID阵列。如果指定阵列的设备名字,则只启动对应的阵列。

没有配置文件,要在命令中添加上阵列的设备名字或阵列的UUID。

        mdadm -A /dev/md5 /dev/sdb[6789]

        mdadm -A /dev/md5 –uuid=71d152a0:bf55ac0f:1f43aa07:576c73be

c.模拟失效

查看/dev/md5信息

        mdadm -D /dev/md5

可以看到三个分区正在使用,而/dev/sdb9备用。

我们可以模拟/dev/sdb6失效:

        mdadm /dev/md5 -f /dev/sdb6

命令执行后,再次查看

备用盘正在使用,/dev/sdb6失效。

d.观察raid内部变化

linux中有一个命令watch可以查看文件的变化:

        watch -n 2 ‘cat /proc/mdstat’

        -n 2指定观察的间隔时间2秒

我们打开两个终端,分开执行。

在watch命令窗口,查看信息:

我们模拟/dev/sdb6失效,可观察中间的变化:

可以看到数据正在重写。完成后的效果:

e.移走失效盘

失效盘需要更换,就先移走

        mdadm /dev/md5 -r /dev/sdb6

观察一下/proc/mdstat文件的变化:

没有了备用盘,需要再添加一个盘

        mdadm  -a /dev/md5 /dev/sdb10

再次查看

备用盘已在线。

f.卸载

一个raid设备不需要了,可以卸载。主要步骤:

备份数据;取消挂载;标记所有成员盘失效;移除失效盘;停用raid设备;擦除磁盘信息;删除配置文件相关内容;删除/etc/fstab文件中相关内容。

标记所有成员盘失效

移除失效盘

停用raid设备

擦除磁盘信息

可以训练直接停用raid,一次删除多个磁盘信息。

小结

1.保存RAID信息很重要。如果不做信息的保存,重启系统后raid不能被自动识别。

2.低版本mdadm,需要在配置文件录入设备列表,如DEVICE /dev/sdb /dev/sdc /dev/sdd[123]等,而4.2版本的mdadm不再需要添加此项内容。如果希望有详细设备信息,可以执行命令生成配置文件:

        mdadm -Dsv >> /etc/mdadm.conf

3.在centos stream9版本中,不能标记所有活动盘失效,会提示某些盘在使用。可以停止raid后,直接擦除盘中信息,再进行另外的训练与使用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pnpm安装以及管理多个nodejs版本

官网 https://pnpm.io/zh/ https://www.pnpm.cn/ nodejs安装包 https://nodejs.org/download/release/ windows安装 iwr https://get.pnpm.io/install.ps1 -useb | iex重新打开一个新的控制台&#xff0c;输入pnpm -v ubuntu下安装 curl -fsSL https://get.pnpm.io/insta…

​​​​​​​MD5加密原理

MD5是以512位的分组来处理输入的信息&#xff0c;并且将每一分组又划分成16个32 位的子分组&#xff0c;经过了一系列的处理后&#xff0c;算法的输出由四个32位的分组组成&#xff0c;将这 四个32位的分组结合后将生成一个128位的散列值。详细的MD5加密算法流程如 图6-13所示…

【lesson9】高并发内存池Page Cache层释放内存的实现

文章目录 Page Cache层释放内存的流程Page Cache层释放内存的实现 Page Cache层释放内存的流程 如果central cache释放回一个span&#xff0c;则依次寻找span的前后page id的没有在使用的空闲span&#xff0c;看是否可以合并&#xff0c;如果合并继续向前寻找。这样就可以将切…

oracle数据库索引失效情况总结

场景&#xff1a; 在开发中有时候遇到某个表中的列明明是创建了索引&#xff0c;但查询时却发现索引失效。 环境&#xff1a; 下面是工作流activiti中的两张表act_hi_procinst、act_hi_taskinst关系是一对多&#xff08;一个流程包含多个流程环节&#xff09;&#xff0c;一个…

【乳腺肿瘤诊断分类及预测】基于自适应SPREAD-PNN概率神经网络

课题名称&#xff1a;基于自适应SPREAD-PNN的乳腺肿瘤诊断分类及预测 版本日期&#xff1a;2023-06-15 运行方式: 直接运行PNN0501.m 文件即可 代码获取方式&#xff1a;私信博主或QQ&#xff1a;491052175 模型描述&#xff1a; 威斯康辛大学医学院经过多年的收集和整理&…

使用Python和HTTP代理进行API请求

Python&#xff0c;这个简单易学又功能强大的编程语言&#xff0c;在网络爬虫、数据分析、自动化任务等领域都有着广泛的应用。而当我们需要从外部网站获取数据时&#xff0c;API&#xff08;应用程序接口&#xff09;就成了我们的得力助手。但有时候&#xff0c;某些网站会对A…

机器学习_15_贝叶斯算法

文章目录 1 贝叶斯定理相关公式2 朴素贝叶斯算法2.1 朴素贝叶斯算法推导2.2 朴素贝叶斯算法流程 3 高斯朴素贝叶斯4 伯努利朴素贝叶斯5 多项式朴素贝叶斯6 贝叶斯网络6.1 最简单的一个贝叶斯网络6.2 全连接贝叶斯网络6.3 “正常”贝叶斯网络6.4 实际贝叶斯网络&#xff1a;判断…

陪女朋友学习计算机二级之数据库笛卡尔积和自然连接

数据库中的基本关系运算 交 和数学中的交集类似&#xff0c;但是需要相同的表模式 如果俩个表有相同的关系模式如表1为&#xff08;ID&#xff0c;姓名&#xff0c;学号&#xff09;表2为ID&#xff0c;姓名&#xff0c;学号&#xff09; 表1 表2 交之后就可以变成 并 和数…

SpringBoot数据访问复习

SpringBoot数据访问复习 数据访问准备 引入jdbc所需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency> 原理分析 导入的启动器引入了两个…

计算机软件能力认证考试CCF-202312-1 仓库规划

#自己跑的测试没问题&#xff0c;不知道为啥就是不能满分 原理比较绕&#xff0c;就是让数组中一行不断地与其他行进行比较&#xff0c;最终得到各自的索引 #include <iostream> using namespace std; int main() {int n;int m;cin>>n>>m; int array[n][m];…

点击图形查看

使用zabbix查看监控图像信息&#xff0c;发现会有中文乱码现象。 解决方法如下&#xff1a; 1.拷贝windows文字文件到服务器上 C:\Windows\Fonts目录下拷贝自己需要的中文语言文件 2.修改配置文件 vim /usr/share/zabbix/include/defines.inc.php 81行 define(ZBX_GRAPH_F…

iview DatePicker 日期选择组件在弹窗中使用transfer,导致选择日期弹窗会关闭的问题

背景&#xff1a;在弹窗里面使用日期选择组件&#xff0c;选择组件的面板被弹窗遮挡了部分&#xff0c;所以需要使用transfer属性&#xff0c;但是使用之后组件面板插入body中了&#xff0c;面板的事件会导致弹窗关闭。 解决方案&#xff1a; 添加上transfer属性和指定的date-…

高级FPGA开发之基础协议PCIe

基础协议之PCIe部分 一、TLP包的包头 在PCIe的系统中&#xff0c;tlp包的包头的结构有许多部分是相似的&#xff0c;通过掌握这些常规的包头&#xff0c;能帮助理解在PCIe总线上各个设备之间如何进行数据的收发。 通用的字段 通用字段作用Fmt决定了包头是3DW还是3DW&#xff…

软件测试学习笔记-测试用例的编写

7中测试分类 按照阶段可划分单元测试、集成测试、系统测试、验收测试。代码可见度划分黑盒测试、灰盒测试、白盒测试 单元测试&#xff1a;针对源代码的测试 集成测试&#xff1a;针对接口进行测试 系统测试&#xff1a;针对功能和非功能的测试 验收测试&#xff1a;公测、内测…

中科方德桌面操作系统的安装方法

原文链接&#xff1a;中科方德桌面操作系统的安装方法 大家好&#xff01;继我们之前介绍了如何在VMware Workstation上安装统信UOS、麒麟OS及麒麟信安操作系统之后&#xff0c;今天我为大家带来一篇全新的教程——在VMware Workstation上安装中科方德桌面操作系统的详细步骤。…

《云原生安全攻防》-- 容器安全风险分析

在本节课程中&#xff0c;我们将提供一个全面的视角&#xff0c;来深入探讨容器环境下的安全风险&#xff0c;帮忙大家建立起容器环境下安全风险的整体认知。 在这个课程中&#xff0c;我们将学习以下内容&#xff1a; 容器技术概述&#xff1a;什么是容器技术以及它解决了什么…

task2:Verilog编写的设计模块在模块内部直接调用task

Verilog编写的设计模块在模块内部直接调用task 1&#xff0c;概念2&#xff0c;模块设计2.1&#xff0c;RTL设计2.2&#xff0c;tb测试代码2.3&#xff0c;sim仿真输出 参考文献&#xff1a; 1&#xff0c;练习七-在Verilog中使用任务task 1&#xff0c;概念 在模块设计中&…

【Docker进阶】镜像制作-用快照制作Docker镜像

进阶一 docker镜像制作 文章目录 进阶一 docker镜像制作1. 镜像制作及原因2. Docker镜像制作的方式3. 快照制作镜像 1. 镜像制作及原因 镜像制作是因为某种需求&#xff0c;官方的镜像无法满足需求&#xff0c;需要我们通过一定手段来自定义镜像来满足要求。 制作镜像往往有…

STM32--SPI通信协议(2)W25Q64简介

一、W25Q64简介 1、W25Qxx中的xx是不同的数字&#xff0c;表示了这个芯片不同的存储容量&#xff1b; 2、存储器分为易失性与非易失性&#xff0c;主要区别是存储的数据是否是掉电不丢失&#xff1a; 易失性存储器&#xff1a;SRAM、DRAM&#xff1b; 非易失性存储器&#xff…

0基础学习VR全景平台篇第141篇:如何制作卫星航拍全景

大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 很多人都看过或者拍摄过航拍全景&#xff0c;其效果相比于普通的地拍的确有着更加震撼的拍摄效果&#xff0c;但是受限于无人机高度&#xff0c;以及禁飞区等等限制&#xff0c;导致很多大场景无法展示完全&a…