RAID存储技术概述

1 数据存储架构

数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划,涵盖存储系统的布局、数据存储策略等,它明确数据如何存储、管理与访问,为数据的安全、高效使用提供支撑。

1.1 存储系统

  • 存储系统是计算机的重要组成部分之一,它是由计算机中一组存储设备、控制部件和管理信息调度的设备(硬件)和算法(软件)所构成的系统,所述存储设备主要用于保存程序和数据,存储设备是计算机存储系统的核心部件。
  • 存储系统负责对数据的读/写请求,也负责传输数据的任务。
  • 常见的存储系统主要由这三部分组成:主机系统、互连部件、存储设备。
    在这里插入图片描述

1.1.1 主机系统

  • 存储系统离不开一个主机系统,主机系统负责提出数据读/写请求,并完成操作系统和需要数据的应用程序之间的交互。
  • 从主机结构上来看,可以将主机系统的组成分为物理部件(硬件)和逻辑部件(软件)
  • 物理部件主要包括中央处理单元(CPU)、存储设备和输入/输出设备,逻辑部件主要包括操作系统、应用程序、文件系统、设备驱动以及数据库系统。
    在这里插入图片描述

1.1.2 互连部件

  • 在主机和存储设备之间存在着各种互连部件,包括连接主机与存储设备的互连物理部件,以及相应的互连逻辑部件
    • 互连物理部件:连接主机与存储设备的物理部件主要有总线、端口和线缆
    • 互连逻辑部件:互连的逻辑部件主要有通信协议,也可以将设备驱动程序包括进来。

1.1.3 存储设备

  • 存储设备包括负责数据存储的设备。
    如果从广义上来说,存储设备不仅包括可以保存数据的固态硬盘、机械硬盘(磁盘)、光盘、磁带等物理存储器,还应该包括专门为这些物理存储器服务的外部部件(如电源、风扇、固定机架等),以及相关协议、处理算法等存储逻辑部件。
  • 存储设备可以采用单盘(即单块磁盘)形式,也可以采用多盘形式。虽然如今单盘的容量能达到8TB、16TB甚至更高一些,但是这还是跟不上人们对数据需求快速增长的容量要求,也难以满足一些创新应用程序的发展需求,I/O性能相对较低。
  • 在一些复杂、较为严苛的使用环境下,单盘容易发生物理损坏导致数据丢失,单盘在存储数据会存在着一定的安全性隐患。

2 数据存储技术

2.1 数据冗余技术

  • 为解决单盘在某些应用场景下的不足,人们发明了RAID(Redundant Array of IndependentDisks,独立磁盘冗余阵列)技术,该项技术可简称为磁盘阵列,可以理解为通过组合多个磁盘提升性能与可靠性。
  • 冗余指系统的一些重要部件重复配置,当发生故障时冗余配置的部件可以介入并承担故障部件的工作,甚至可以对系统进行修复,有助于系统容错,保障业务持续稳定运行。
  • 数据冗余可增强数据可靠性,当部分数据丢失或损坏时能通过冗余数据恢复。还能提高数据访问性能,可从冗余副本并行读取数据。
  • RAID磁盘阵列的实质是将多个独立的硬盘通过RAID控制器(基于硬件和软件)结合成虚拟单个大容量的硬盘使用,从而实现比单盘更好的存储性能和更高的可靠性。
    在这里插入图片描述
  • 对于有大数据存储需求的家庭用户和中小型企业来说,RAID磁盘阵列是一种可靠和高效的存储扩容选择,在提高数据存取速度和提升存储容量的同时也提供了容错功能,采用汉明码校验或奇偶校验进行数据保护,确保数据的安全性,如果某一块硬盘出现问题,RAID磁盘阵列系统仍可以继续工作,不受损坏硬盘的影响。
  • 用新硬盘将损坏的硬盘置换后,利用磁盘阵列的同位检查的相关功能,还能将数据恢复到新硬盘。
  • 目前,RAID磁盘阵列技术的实现方式主要有两种:
    • 基于硬件的RAID磁盘阵列技术(俗称硬RAID)
      • 基于硬件的RAID磁盘阵列技术主要利用集成了微型处理器的硬件RAID适配卡。
      • 由于拥有独立的存储器和处理器,RAID适配卡可以独自计算奇偶校验信息并确定文件定位,减少对主机中央处理单元运算的依赖,从而有效提升了数据传输的速度,即基于硬件的RAID磁盘阵列能够独立于主机对存储子系统进行控制。
    • 基于软件的RAID磁盘阵列技术(俗称软RAID)
      • 基于软件的RAID磁盘阵列技术比较容易理解,将RAID磁盘技术整合到操作系统中,通过核心磁盘代码来实现RAID功能。
      • 一般来说,基于软件的RAID磁盘阵列比基于硬件的RAID磁盘阵列在工作性能上要弱一些,而在经济性要省钱一些。
      • 如今随着技术的不断发展及优化,两者的性能差距不再明显。
  • 根据RAID磁盘阵列对磁盘数据分布、校验方式及实施技术的不同,可以将磁盘阵列分为多个级别,分别为RAID 0、RAID 1、RAID 2、RAID3、RAID4、RAID 5、RAID 6、RAID 10。
  • 其中,RAID 0(条带化,提升性能但无冗余)、RAID1(镜像,有冗余)、RAID 3(一个冗余校验盘)、RAID5(分布式奇偶校验,兼顾性能与冗余)、RAID6级别较为常用。

2.1.1 RAID 0

  • RAID 0:( 无容错的条带化磁盘阵列)又称为Stripe或Striping
  • 磁盘阵列中组建最简单的一种形式,只需要至少两块硬盘即可
  • 通过智能磁盘控制器或使用操作系统的磁盘驱动程序以软件的方式(或其他类似技术)将多块硬盘并联起来形成一个虚拟的大硬盘,该大硬盘的可用容量等于所有硬盘的容量之和。
  • RAID 0采用数据分条(Data Stripping)技术来在可用硬盘上分布存放数据,即在RAID0系统中,数据被分段且分别存放在不同硬盘上,与单一的大容量硬盘相比,RAID 0的读写由几块硬盘同时并行处理,因而读写速度更快
  • 当有多个I/O请求且所需数据块分布在不同的硬盘上,那么便可以并行处理这些请求,则I/O请求的排队时间显著减少。
  • 条带化(Striping)是一种数据存储技术,通过将数据分散存储在多个磁盘上来提高读写性能,其工作原理为
  • 数据分块:数据被分割成小块(称为条带),这些条带被顺序写入到阵列中的每个磁盘34。
  • 并行读写:由于数据分布在多个磁盘上,系统可以同时从多个磁盘读取或写入数据,从而提高整体性能。
  • 优点:
    • 可以提升整个磁盘的性能,读写速度快,并且还能利用所有磁盘的存储空间。
    • RAID 0的硬盘空间使用率最高可达100%,因而其实现成本在所有磁盘阵列中是最低的。
  • 缺点:
    • 没有冗余和容错能力,一旦其中某一个磁盘出现故障,都会导致可能无法恢复完整的数据。
  • 应用场景:
    • 不适合存储重要数据的应用场合
    • 适合对可靠性要求不高、对读写性能要求高、非重要数据存储的应用场合。

2.1.2 RAID 0与LVM中VG的区别

RAID 0 和 LVM(Logical Volume Manager)中的卷组(VG)是两种不同的磁盘管理技术,它们在功能和应用场景上有显著的区别。

  • RAID 0
    • 定义:RAID 0,也称为条带化,是一种将数据分散存储在多个磁盘上的技术,以提高读写性能。
    • 数据冗余:RAID 0 不提供数据冗余,这意味着如果任何一个磁盘失败,所有数据都将丢失。
    • 性能:通过并行读写操作,RAID 0 可以显著提高数据访问速度。
    • 应用场景:适用于需要高性能但对数据安全性要求不高的场景,如视频编辑、图形设计等。
  • VG(卷组)
    • 定义:VG 是 LVM的一个组成部分,它将一个或多个物理卷(PV)组合成一个逻辑存储池。
    • 数据冗余:LVM本身不提供数据冗余,但可以在其上创建镜像(如使用LV 镜像)来实现冗余。
    • 性能:LVM 提供了逻辑卷的动态扩展和缩减,以及在线调整大小的能力,从而提高了磁盘管理的灵活性。
    • 应用场景:适用于需要灵活管理磁盘空间的场景,如服务器存储、数据库系统等。
  • RAID 0:侧重于提高存储性能,但不提供数据冗余,适合对性能要求高的场景。
  • VG(LVM):侧重于提高磁盘管理的灵活性,允许动态调整逻辑卷的大小,适合需要灵活存储管理的场景。

2.1.3 RAID 1

  • RAID 1加入了冗余能力,采用简单的镜像备份的方式实现数据的冗余,需要配置成对的独立硬盘,在两者上产生互为备份的数据,当将数据写在其中一个独立硬盘(不妨将该硬盘称为数据盘)上,同时该数据也会被同时写到相应的镜像盘上。
  • RAID 1中的数据盘和镜像盘是相对的,它们没有主从关系,可以相互镜像或恢复。
  • RAID 1的写入速度通常较慢,即比单块硬盘的写入速度要慢,这是因为RAID 1对两块硬盘的写入是并行的,并且在同时进行写入时还要比较两块硬盘中的数据。
  • 需要注意的是,在RAID 1系统中读数据,只能在性能较快的一块硬盘上进行而不会在两个硬盘上并行读取,这意味着当原始数据繁忙时,可以直接从速度更快的镜像拷贝中读取数据,所以RAID1在一定程度上可以提升读取性能。
    在这里插入图片描述
  • RAID 1在性能上没有RAID0那般好,但是总是保持一份完整的数据备份,是最为可靠且简单的一种阵列,当一个硬盘出现问题而失效时,系统可以自动切换到相应的镜像盘上进行读写操作。
  • 从RAID 1的磁盘阵列结构来看,镜像备份会占用一半的硬盘空间,硬盘空间使用率只有50%,故RAID1是磁盘阵列中单位成本最贵的。
  • 缺点:硬盘的利用率低,成本贵
  • 应用场景:主要用于存储重要数据,尤其适用于要求数据安全性很高且能够快速恢复被破坏数据的场合。

2.1.4 RAID 2

  • RAID 2是RAID 0的改良版,以汉明码(HammingCode)的方式将数据进行编码后分割为独立的位元,并将数据分别写入硬盘中。
  • 因为在数据中加入了错误修正码(ECC,ErrorCorrection Code),所以数据整体的容量会比原始数据大一些。
  • 汉明码
    • 原理:通过在数据位中插入多个校验位,每个校验位负责检测一部分数据位的错误情况。
    • 检错能力:能够检测并纠正单个错误,部分汉明码版本可以检测多个错误。
    • 纠错能力:
    • 可以纠正单个错误,提高了数据传输的可靠性。
    • 应用场景:广泛应用于内存(RAM)和其他需要高可靠性的数据存储和传输系统中

在这里插入图片描述

  • 前面四个盘是数据盘,后面三个盘是纠错码
  • 读数据时,能同时使用多个数据盘的带宽
  • 写数据时,除了写数据盘,还需要写校验盘,写性能会有下降
  • 因为存在数据纠错,所以在坏盘的情况下可以实现数据拯救
  • N块盘的RAID2的特性
    • 读性能不到原来的N倍,因为还有一部分是校验盘
    • 写性能会有下降,因为每次都要写校验盘,受限于校验盘的数量
    • 空间利用率小于100%,因为汉明码需要的冗余盘一般比数据盘的数量少 一共7块盘,4块数据盘,3块校验盘,如果数据盘满了,那么校验盘不会满,空间利用率只会利用7分之4
    • 根据汉明码位数的不同,能容忍的坏盘数不同,具体信息可以参考汉明码

2.1.5 RAID 3

  • RAID 3的数据存取方式和RAID2类似,与RAID2不同的是,RAID 3只需要一个冗余校验盘,而不管磁盘阵列的数目有多少。
  • 可以将RAID 3看做是在RAID2的基础上发展而来的,主要用了相对简单的奇偶校验代替相对复杂的汉明码校验,不需要多个冗余硬盘而是只需要单个冗余硬盘,从而大幅降低了成本。
    在这里插入图片描述
  • 奇偶校验
    • 原理:在数据位中增加一个校验位,使得数据位和校验位中1的总数为奇数(奇校验)或偶数(偶校验)。
    • 检错能力:只能检测出奇数个错误,无法检测偶数个错误。
    • 纠错能力:无法纠正错误,只能检测到错误的存在。
    • 应用场景:由于其简单性,常用于对数据传输可靠性要求不高的场景
    • 编码过程:当实际数据中“1”的个数为偶数的时候,校验位是“0”,反之校验位是“1”,换句话说,数据位(N位)和校验位(1位)组成的 编码数据(N+1位)中,将总共包含偶数个1。
    • 校验过程:检查编码数据(N+1位),如果其包含偶数个1,则校验通过
  • RAID 3存在的主要问题是做奇偶校验会消耗系统性能,令奇偶校验硬盘容易成为整个系统的瓶颈
  • 原因是RAID 3在进行数据写操作时除了会将数据分割到各个数据盘上进行写入,还会同时重写奇偶校验硬盘中的相关信息。
  • 如果应用程序需要经常需要执行大量写入操作的话,奇偶校验硬盘的负载将会很大,进而影响程序的运行速度,从而导致整个RAID系统的性能显著下降。
  • 应用场景:比较适合类似于视频编辑这类大文件类型且安全性要求较高的应用。

2.1.6 RAID 4

  • RAID 4和RAID 3比较像,数据都是使用数据分条技术进行分割后依次存放在多个硬盘中,奇偶校验码存放在专门的独立奇偶校验盘上,不同之处在于RAID4的条带较大,以数据块为单位进行数据分割RIAD3的条带较小,以位为单位进行数据分割
  • 在RAID 4中,在写入时要等一个硬盘写完后才能写下一个,同时较验数据也要同时写入奇偶校验盘,写入效率较差,而读取时也需要一个硬盘接着一个硬盘地进行数据读取,不过因其校验计算较为简单,不用进行位的计算,校验迅速,因而读取速度相对较快。
  • RAID 4的校验盘同样会容易形成性能的瓶颈,而且在遇到故障时,数据恢复的难度比RAID3要大得多,这种类型的磁盘阵列现在很少使用

2.1.7 RAID 5

  • RAID 5相当于RAID 0和RAID1的折中方案,并采用和RAID 4一样的数据分条方案,数据以块为单位进行分割并存放到各个硬盘上
  • 但RAID 5没有设置专门的奇偶校验硬盘,而是将数据和与其相对应的奇偶校验信息存储到各个硬盘上,但是这里有个规则就是奇偶校验信息和相对应的数据需要分别存储在不同的硬盘上。
  • 实现方式是数据在所有硬盘之间分条分布,并且每个数据块的奇偶校验块(P)也写入到同一条带上。
    在这里插入图片描述
  • 图中Ap-Dp 奇偶校验是放到和数据同一条带上的,如此一来,当其中某一个硬盘数据损坏了,并不会影响数据的完整性,此时可以利用其他硬盘上存储的数据和奇偶校验信息计算出损坏硬盘的数据内容,从而在替换硬盘中重建或恢复被损坏的数据。
  • RAID 5至少需要3个硬盘来组建磁盘阵列,可以允许坏一块硬盘。
  • 如果在未解决故障之前,又损坏了一个硬盘,那么磁盘阵列中的所有数据都将损坏,结果是灾难性的。
  • RAID 5在数据安全保障程度上比RAID1要低,但硬盘空间利用率比RAID 1要高,存储成本相对较低。
  • 在数据读取速度上,RAID 5与RAID 0接近,由于多了一个奇偶校验信息,数据写入速度比单个硬盘的写入速度略慢一些。
  • 总体而言,RAID 5读写性能较高,有校验机制,空间利用率高,是一种具有较高存储性能并且兼顾数据安全和存储成本的存储解决方案.。
  • RAID 5运用较多,但是如果RAID5的硬盘组成越多,则其安全性反而越低,遇到两块硬盘损坏,数据就难以找回了。

2.1.8 RAID 6

  • RAID 6相当于在RAID 5的基础上进行扩展而来的,增加了第2个独立的奇偶校验信息块,实现算法不同的双重奇偶校验。
  • 相当于对每个数据块提供两个校验保护措施,一个是分层校验,一个是总体校验,这两个校验码被分别写入到不同的两个硬盘来增强容错功能(但是,同时也减少硬盘的实际使用容量),数据冗余性更高了,在两块硬盘同时损坏的前提下,仍然可以保障数据恢复。
  • 相比RAID 5,RAID 6具有更高的容错能力(即数据冗余性好),同时其读取性能也比较优秀,
  • 但是写数据的性能较差,尤其是随机写入性能很差,因为不但要在每个硬盘上写入校验数据,还要在专门的校验硬盘上写入数据。
  • 至少需要4个硬盘来组成RAID 6磁盘阵列
  • 应用场景:
    • RAID 6的控制器设计复杂,成本高,不适合一般的中小型企业使用
    • 适合对数据安全级别较高的数据中心、信息中心等应用场合使用。

2.1.9 RAID 10(RAID1+0)

RAID 10实际上是RAID 0和RAID1结合应用的磁盘阵
在这里插入图片描述

  • 首先创建两个独立的RAID1,每个RAID 1均由两个磁盘组成,互为镜像磁盘,再将这两个独立的RAID 1组成一个RAID0,这样,当将数据往RAID 0磁盘阵列进行写入时,数据会被分段并并行写入到组成RAID 0的两个RAID1中,在每个RAID1中都将相应的分段数据在两个磁盘中同时写入以实现互为镜像备份。
  • RAID 10相当于一个条带区结构加上一个镜像结构,同时拥有RAID 0的快速和RAID1的数据高安全性,但是RAID 10对存储容量的利用率和RAID1一样只有50%,需要一般的硬盘空间用于存储冗余数据,硬盘的利用率较低,成本较贵。

2.1.10 RAID级别硬盘利用率

  • “D”指数据块
  • p“P”指校验块。
  • 对于灵活配置xD+yP的RAID策略,硬盘利用率=[x/(x+y)] ×100%
  • RAID 0:硬盘利用率为100%
  • RAID 1:2D:硬盘利用率约为50%
  • RAID 3:支持灵活配置,即支持2D+1P~13D+1P配置
    • 2D+1P:硬盘利用率约为66.67%
    • 4D+1Pb:硬盘利用率约为80%
    • 8D+1P:硬盘利用率约为88.89%
  • RAID 5
    • 支持灵活配置,即支持2D+1P~13D+1P配置
    • 2D+1P:硬盘利用率约为66.67%
    • 4D+1Pb:硬盘利用率约为80%
    • 8D+1P:硬盘利用率约为88.89%
  • RAID 6
    • 支持灵活配置,即支持2D+2P~26D+2P配置
    • 2D+2P:硬盘利用率约为50%
    • 4D+2P:硬盘利用率约为66.67%
    • 8D+2P:硬盘利用率约为80%
    • 16D+2P:硬盘利用率约为88.89%
  • RAID 10:硬盘利用率为50%
  • RAID 50
    • (2D+1P)x2:硬盘利用率约为66.67%
    • (4D+1P)x2:硬盘利用率约为80%
    • (8D+1P)x2:硬盘利用率约为88.89%

3 基于硬件的RAID磁盘阵列

  • 全部通过用硬件来实现RAID功能的就是硬RAID,比如:各种RAID卡,还有主板集成能够做的RAID都是硬RAID。
  • 所以硬 RAID 就是用专门的RAID控制器(RAID卡)将硬盘和电脑连接起来,RAID控制器负责将所有的RAID成员磁盘配置成一个虚拟的RAID磁盘卷。
  • 操作系统只能识别到由RAID控制器配置后的虚拟磁盘,而无法识别到组成RAID的各个成员盘。
  • 硬RAID全面具备了自己的RAID控制/处理与I/O处理芯片,甚至还有阵列缓冲(Array Buffer),对CPU的占用率以及整体性能中最有优势。

3.1 阵列卡(RAID控制器)

  • 硬 RAID 包含 RAID 卡和主板上集成的RAID芯片,服务器平台多采用RAID 卡。
  • RAID 卡组成:
    • RAID 核心处理芯片(RAID 卡上的CPU)
    • 端口
    • 缓存
    • 电池

3.2 阵列卡种类

  • IDE阵列卡
    • 以前主要用在一些数据重要或要接很多个硬盘的服务器与工作站电脑中,可以支持RAID0、1、0+1、3、5。现基本上已经淘汰了。
  • SATA阵列卡
    • 主要作用于大容量数据存储、网吧、数据安全等服务器领域,同时一些低端卡也满足了一些家用客户的需求,能够支持 RAID 0、1、0+1、5、6。
  • SCSI阵列卡
    • 使用在高端工作站或者是服务器中,可以支持很多块SCSI接口的硬盘。能够支持RAID0、1、0+1、3、5 。
    • 这种阵列卡性能很好速度很快当然价格也比较高。不过,现基本上已经淘汰了。
  • SAS阵列卡
    • 主要使用在一些高端工作站与服务器中,已经取代了昔日的SCSI接口,并且可以兼容SATA接口硬盘,能够支持 RAID 0、1、0+1、5 、50、6、60。

3.3 阵列卡缓存

  • 阵列卡缓存是阵列卡先将数据传输到缓存,再由缓存和外边数据总线交换数据的一种过程,实际指的是相对低速的硬盘盘片与相对高速的外部设备之间的缓冲器。
  • 阵列卡缓存的主要作用是,加快数据读写速度,提高磁盘的效用,避免不必要的等待时间,可以减少操作所带来的延迟提高系统性能得到更好的响应时间,所以阵列卡缓存的作用是非常大的。
  • Write Through和Write Back是阵列卡Cache的两种使用方式,也称为透写和回写
    • Write Through 透写:系统的写磁盘操作并不利用阵列卡的Cache,而是直接与磁盘进行数据的交互,写操作根本不使用缓存,数据总是直接写入磁盘,影响写入性能。
    • Write Back(Write Cache) 回写:利用阵列Cache作为系统与磁盘间的二传手,系统先将数据交给Cache,然后再由Cache将数据传给磁盘;数据不是直接被写入磁盘,而是写入缓存。从应用程序的角度看,比等待完成磁盘写入操作要快的多。因此,可以提高写性能。由控制器将缓存内未写入磁盘的数据写入磁盘。
  • 生产环境中的配置要根据具体的业务类型及环境进行配置
    • 如果有外置UPS电源,选Write Back
    • 如果没有外置电源,并且对数据安全性要求很高,不要求太高性能,就选Write Through
  • Write Back with BBU
    • 此是阵列卡配有Battery Backup模块元时的可选项,它的作用是用以在系统断电时保护Cache中的数据,避免断电造成中间数据的丢失。

3.4 RAID 电池

  • 作用:用以在系统断电时保护Cache中的数据,避免断电造成中间数据的丢失。
  • 在更换RAID卡电池之前,服务器虽然已经下线,无数据写入,但还有一部分数据存在RAIDcache中,并未写入硬盘中;但一般RAID卡电池坏掉后,RAID卡会自动将写缓存(即write back)禁止,变为writethrough方式,会使写性能有一定的下降,但不影响数据安全。
  • 若RAID电池和某块硬盘同时出现故障,应先更换RAID卡电池,待服务器重启成功,RAID卡工作正常后再更换故障的硬盘,最大限度保证数据安全。

4 基于软件的RAID磁盘阵列

4.1 mdadm工具

  • mdadm是一个在Linux系统中用于构建、管理和监控软件RAID阵列的工具。
  • 它提供了多种命令来创建、管理、监控RAID阵列,并且支持多种RAID级别,如RAID0、RAID1、RAID5等。
  • mdadm命令常见参数解释
    • -a {yes|no} 自动为其创建设备文件
    • -n 指定设备数量
    • -l 指定RAID级别
    • -C 创建
    • -v 显示过程
    • -f 模拟设备损坏
    • -r 移除设备
    • -Q查看摘要信息
      -** -D 查看详细信息**
    • -S 停止RAID磁盘阵列
    • -c 指定数据块大小(chunk)
    • -x 指定空闲盘(热备磁盘)个数,空闲盘(热备磁盘)能在工作盘损坏后自动顶替

4.2 实例

为 linux 服务器添加4 块SCSI 硬盘,使用mdadm软件包,构建 RAID5 磁盘阵列,提高磁盘存储的性能和可靠性。

4.2.1 创建分区并设置类型

  • 使用fdisk工具各划分出一块分区,依次为
    • /dev/sdb1
    • /dev/sdc1
    • /dev/sdd1
    • /dev/sde1
  • 将分区的类型 ID 均更改为fd。fd 分区类型对应“Linux raid autodetect”
    ,表示支持用于RAID磁盘阵列。

4.2.2 创建RAID设备

  • 使用 mdadm 命令创建 RAID,执行以下命令即可创建名称为md0的 RAID5
  • mdadm -Cv /dev/md0 -a yes -n4 -l5 /dev/sd[bcde]1
    • -C:等同于 create,表示新建
    • -v:显示创建过程中的信息
    • /dev/md0:创建 RAID5 的名称
    • -a:–auto,表示通知 mdadm 是否创建设备文件,并分配一个未使用的次设备号
    • yes:代表如果有什么设备文件没有存在的话就自动创建
    • -n:指定使用几块硬盘创建 RAID,n4 表示使用4 块硬盘创建RAID
    • -l:指定 RAID 的级别,l5 表示创建 RAID5
    • /dev/sd[bcde]1:指定四块磁盘分区

4.2.3 查看创建结果

# 通过磁盘分区查看
lsblk
# 查看简易信息
ls -l /dev/md0
# 查看磁盘阵列组成
cat /proc/mdstat
# 查看详细信息
mdadm -D /dev/md0

4.2.3 创建并挂载文件系统

# 格式化,创建文件系统
mkfs.xfs /dev/md0
# 创建挂载目录
mkdir /test/raid
# 挂载
mount /dev/md0 /test/raid/

设置永久挂载:vim /etc/fstab

4.2.4 RAID 阵列管理及设备恢复

  • 扫描查看磁盘阵列信息:mdadm -vDs
    • D:detail 的缩写,打印一个或多个磁盘阵列的详细信息
    • v:对正在发生的事情显示更详细的信息
    • s:扫描/proc/mdstat 中的阵列设备列表
  • 建立配置文件
    为了方便日后启动/停止RAID 阵列,可以创建一个配置文件来进行管理
# 使用默认配置文件
mdadm -vDs >> /etc/mdadm/mdadm.conf
# 使用自己创建的配置文件
mdadm -vDs > /etc/mdadm.conf
# 重新激活:-A
mdadm -A /dev/md0
mdadm -A --scan
  • 管理模式
# 模拟损坏
mdadm /dev/md0 -f /dev/sdb1
# 移除损坏的磁盘
mdadm /dev/md0 --remove /dev/sdb1
# 添加新的硬盘到已有阵列
mdadm /dev/md0 -a /dev/sdf1
  • 删除软raid
# 解挂载
umount /dev/md0
# 停止raid设备,相当于删除
mdadm -S /dev/md0
# 删除配置文件,如果之前写入了
rm -f /etc/mdadm.conf
# 取消自动挂载,如果之前设置了
vim /etc/fstab

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

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

相关文章

LRU 和 DiskLRU实现相册缓存器

我是写Linux后端的(golang、c、py),后端缓存算法通常是指的是内存里面的lru、或diskqueue,都是独立使用。 很少有用内存lru与disklru结合的场景需求。近段时间研究android开发,里面有一些设计思想值得后端学习。 写这…

可视化预警:如何让生产风险预警更高效?

你有没有遇到过这种情况? 明明设备已经开始发热报警,但操作人员还在继续运行; 或者某个参数已经接近危险值,却没人注意到; 甚至问题早就埋下了隐患,只是当时没发现…… 这些情况的背后,其实都…

【MPC-C++】qpOASES 源码编译与链接,编译器设置细节

qpOASES 源码编译与链接 克隆源码 git clone https://github.com/coin-or/qpOASES.gitcd qpOASES mkdir build cd build接下来是构建,有一些细节。 查看 CMakeLists.txt,发现如果不显示指定 CMAKE_BUILD_TYPE 构建版本,会自动编译 Release…

【11408学习记录】考研数学攻坚:行列式本质、性质与计算全突破

行列式 数学线性代数一、对象(元素):向量二、运算三、行列式3.1 第一种定义——行列式的本质定义3.2 行列式的性质性质1:行列互换,其值不变性质2:若行列式中某行(列)元素全为零&…

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…

小木的算法日记-线段树

🌳 线段树 (Segment Tree):玩转区间作的终极利器 你好,未来的算法大师! 想象一下,你正在处理一个巨大的数据集,比如某个电商网站一整天的用户点击流。老板突然问你:“下…

Day24 元组和OS模块

1、元组(有序 不可变 可重复) 管道工程中pipeline类接收的是一个包含多个小元组的列表作为输入。可以这样理解这个结构: (1) 列表 []: 定义了步骤执行的先后顺序。Pipeline 会按照列表中的顺序依次处理数据。之所以用列…

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…

Device Mapper 机制

Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…

crackme006

crackme006 名称值软件名称aLoNg3x.1.exe加壳方式无保护方式Serial编译语言Delphi调试环境Win10 64位使用工具x32dbg,ida pro,PEid,DarkDe4破解日期2025-06-05 脱壳 1. 先用PEid查壳 查到无壳 寻找Serial 查询到编程语言为Delphi 导出Delphi符号表信息到x32dbg&#xff0c…

Conda 创建新环境时报错 HTTP 502,如何解决?

Conda 创建新环境时报错 HTTP 502&#xff0c;如何解决&#xff1f; 最近在用 Conda 创建新环境时&#xff0c;突然遇到这样一个错误&#xff1a; CondaHTTPError: HTTP 502 BAD GATEWAY for url <https://mirrors.westlake.edu.cn/ANACONDA/cloud/conda-forge/linux-64/r…

2025最全TS手写题之partial/Omit/Pick/Exclude/Readonly/Required

随着 TS 在工作中使用的越来越广泛&#xff0c;面试的时候面试官也都会加上一两个 TS 的问题来了解候选人对于 TS 的熟悉程度&#xff0c;其中就有不少手写题目&#xff0c;比如笔者在字节的一次二面&#xff0c;面试官就问到了我如何实现一个 Pick&#xff0c;在小红书的一面&…

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…

LLMs之StructuredOutput:大模型结构化输出的简介、常用方案、前沿框架之详细攻略

LLMs之StructuredOutput&#xff1a;大模型结构化输出的简介、常用方案、前沿框架之详细攻略 目录 大模型结构化输出的简介 1、特点与难点 大模型结构化输出的常用方案及对比 1、前沿框架&#xff1a;vLLM 与 XGrammar 大模型结构化输出的案例应用 大模型结构化输出的简介…

Linux中shell流程控制语句

一、if条件控制 1.1 语法解读 单路决策 - 单分支if语句样式&#xff1a;if [ 条件 ]then指令fi特点&#xff1a;单一条件&#xff0c;只有一个输出 双路决策 - 双分支if语句样式&#xff1a;if [ 条件 ]then指令1else指令2fi特点&#xff1a;单一条件&#xff0c;两个输出 …

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…

数据结构-文件

文件是性质相同的记录的集合。 记录是文件中存取的基本单位&#xff0c;数据项是文件可使用的最小单位。 操作系统研究的文件是一维的无结构连续字符序列&#xff0c;数据库中研究的文件是带有结构的记录集合。 文件在外存上的4种基本组织方式&#xff1a;顺序、索引、散列、链…

前端开发面试题总结-CSS篇

文章目录 CSS面试高频问答1、CSS选择器的优先级2、CSS3新特性3、如何垂直水平居中盒子4、什么是重绘和重排5、px/em/rem/vw有什么区别6、rem布局的原理7、如何设置比12px还要小的字体8、CSS中隐藏元素的方式有哪些 CSS面试高频问答 1、CSS选择器的优先级 2、CSS3新特性 3、如何…

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…

解决ubuntu20.04无法唤醒的问题的一种方法

解决ubuntu20.04无法唤醒的问题的一种方法 我更改了三个个地方&#xff0c;目前不清楚是哪个地方起的作用&#xff0c;也可能都起作用了 修改的第一个地方 步骤 1: 获取 Swap 分区的 UUID 首先&#xff0c;你需要知道你的 swap 分区的 UUID。你可以使用以下命令来查找它&am…