草庐IT

RAID技术图解(mdadm)

技术栈 2023-03-28 原文

一、概述

RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能数据冗余高可靠性的存储技术。RAID分为硬 RAID、全软 RAID、半软 RAID。

二、RAID类型

1)硬件磁盘阵列(Hardware RAID)

简单来说就是全部通过用硬件来实现RAID功能的就是硬RAID,比如:各种RAID卡,还有主板集成能够做的RAID都是硬RAID。

硬RAID全面具备了自己的RAID控制/处理与I/O处理芯片,甚至还有阵列缓冲(Array Buffer),对CPU的占用率以及整体性能中最有优势

2)软件磁盘阵列(Software RAID)

反而言之,通过用操作系统来完成RAID功能的就是软RAID,比如:在Linux操作系统下,用3块硬盘做RAID5。

直接通过软件层实现的RAID,所有功能都是操作系统(OS)与CPU来完成,可想而知这是效率最低的一种RAID

与硬RAID不同的是,软RAID的各个成员盘对于操作系统来说是可见的,但操作系统并不把各个成员盘呈现给用户,而只是把通过软件层配置好的虚拟RAID卷呈现给用户,使用户可以像使用一个普通磁盘一样使用RAID卷。

3)硬件辅助磁盘阵列(Hardware-Assisted RAID)

与硬 RAID 和 全软 RAID 相比,半软 RAID需要一张RAID卡,以及厂商所提供的驱动程序。

但是半软半硬RAID 缺乏自己的I/O 处理芯片,所以这方面的工作仍要由CPU 与驱动程序来完成。而且,半软半硬RAID 所采用的RAID 控制/处理芯片的能力一般都比较弱,不能支持高的RAID 等级

三、 RAID 主要优势有如下几点

大容量

这是 RAID 的一个显然优势,它扩大了磁盘的容量,由多个磁盘组成的 RAID 系统具有海量的存储空间。

高性能

RAID 的高性能受益于数据条带化技术。通过数据条带化, RAID 将数据 I/O 分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合 I/O 性能。

可靠性

可用性和可靠性是 依赖于RAID 的数据冗余特征。

可管理性

实际上, RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器;RAID 可以动态增减磁盘驱动器,可自动进行数据校验和数据重建,这些都可以 大大简化管理工作。

四、关键技术

1)镜像

镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。

对于 RAID 而言,采用镜像技术 典型地 将会同时在阵列中产生两个完全相同的数据副本,分布在两个不同的磁盘上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。

镜像技术可以从多个副本进行并发读取数据,提供更高的读 I/O 性能,但不能并行写数据,写多个副本会会导致一定的 I/O 性能降低。

2)数据条带

磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的 CPU 匹配。再者,单个磁盘驱动器性能存在物理极限, I/O 性能非常有限。

RAID 由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合 I/O ,有效提高了整体 I/O 性能,而且具有良好的线性扩展性。

3)数据校验

镜像具有高安全性、高读性能,但冗余开销太昂贵数据条带通过并发性来大幅提高性能,然而对数据安全性、可靠性未作考虑数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。相对镜像,数据校验大幅缩减了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性数据条带技术提供高性能数据校验提供数据安全性, RAID 不同等级往往同时结合使用这两种技术。

五、RAID 等级介绍

常见RAID有RAID0 、 RAID1 、RAID5 、 RAID10、RAID01 五种 RAID 等级。标准等级是最基本的 RAID 配置集合,单独或综合利用数据条带、镜像和数据校验技术。标准 RAID 可以组合,即 RAID 组合等级,满足 对性能、安全性、可靠性要求更高的存储应用需求。

1)RAID0

RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略

RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。

2)RAID1

RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。

RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高

3)RAID5

RAID5 应该是目前最常见的 RAID 等级,它在写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在并发写操作时的校验盘性能瓶颈问题。另外, RAID5 还具备很好的扩展性当阵列磁盘 数量增加时,并行操作量的能力也随之增长

RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。

4)RAID组合等级

目前在业界和学术研究中提到的 RAID 组合等级主要有 RAID00 、 RAID01 、 RAID10 、 RAID100 、 RAID30 、 RAID50 、 RAID53 、 RAID60 ,但实际得到较为广泛应用的只有 RAID01 和 RAID10 两个等级。所以这里只讲RAID01 和 RAID10。

1、RAID01 和 RAID10

RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像。

RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。

RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。 RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。 RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50%

2、RAID01和RAID10的区别

RAID01比较缺乏安全性,且故障时难以恢复,实际应用中几乎没有人会选择。
RAID10速度较快,故障容易恢复。

5)RAID 等级对比

类型 读写性能 安全性、可靠性 磁盘利用率 成本
RAID0 最好(因并行性而提高) 最差(完全无安全保障) 最高(100%) 最低
RAID1 读和单个磁盘无分别,写则要写两边 最高(提供数据的百分之百备份) 差(50%) 最高
RAID5 读:RAID5=RAID0(相近似的数据读取速度);写:RAID5<对单个磁盘进行写入操作(多了一个奇偶校验信息写入) RAID0与RAID1折中 RAID0>RAID5>RAID 1 RAID1>RAID5>RAID0
RAID10;RAID10 读:RAID10=RAID0;写:RAID10=RAID1 RAID10=RAID1 RAID10=RAID1(50%) RAID10=RAID1

六、实验

通常计算机功能既可以由硬件来实现,也可以由软件来实现。对于 RAID 系统而言,自然也不例外,它可以采用软件方式实现,也可以采用硬件方式实现,或者采用软硬结合的方式实现。硬RAID自己电脑无法实现,这里只讲软RAID实现。

软RAID实现(通过mdadm软件实现)

1)mdadm安装与介绍

1、安装

$ yum install -y mdadm

2、mdadm介绍

mdadm命令常见参数解释:

-a {yes|no} 自动为其创建设备文件
-n	指定设备数量
-l	指定RAID级别
-C	创建
-v	显示过程
-f	模拟设备损坏
-r	移除设备
-Q	查看摘要信息
-D	查看详细信息
-S	停止RAID磁盘阵列
-c 指定数据块大小(chunk)
-x 指定空闲盘(热备磁盘)个数,空闲盘(热备磁盘)能在工作盘损坏后自动顶替

2)RAID0实现

1、准备两块磁盘

/dev/sdb1
/dev/sdb2

2、创建raid

$ mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}

3、格式化

$ mkfs.ext4 /dev/md0

注意:在格式化时,可以指定-E选项下的stride参数指定条带是块大小的多少倍,有在一定程度上提高软RAID性能,如块默认大小为4k,而条带大小默认为64k,则stride为16,这样就避免了RAID每次存取数据时都去计算条带大小,如:

$ mkfs.ext4  -E stride=16 -b 4096 /dev/md0

其中stride=chunk/block,为2的n次方

4、挂载

$ mkdir /opt/raid0
$ mount /dev/md0 /opt/raid0
$ lsblk -f
$ 添加自动挂载
$ echo 'UUID=4ca46e4a-9308-4f3e-9542-f93de83bb0e3  /opt/raid0  ext4 defaults  0  0' >> /etc/fstab

3)AID1实现

1、准备两块磁盘

/dev/sdc
/dev/sdd

2、创建raid

$ mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sd{c,d}

3、格式化

$ mkfs.ext4 /dev/md1

注意:这个提示是说软raid不能用作启动分区。

4、挂载

$ mkdir /opt/raid1
$ mount /dev/md1 /opt/raid1
$ lsblk -f
$ 添加自动挂载
$ echo 'UUID=28171480-3db3-4b80-be78-e86693b5d8a2  /opt/raid1  ext4 defaults  0  0' >> /etc/fstab

4)RAID5实现

1、准备两块磁盘

/dev/sdc
/dev/sdd

2、创建raid

$ mdadm -C /dev/md5 -a yes -l 5 -n 3 /dev/sde{1,2,3}

3、格式化

$ mkfs.ext4  /dev/md5

4、挂载

$ mkdir /opt/raid5
$ mount /dev/md5 /opt/raid5
$ lsblk -f
$ 添加自动挂载
$ echo 'UUID=c617c439-641d-4347-9a37-c6c559f8abc5  /opt/raid5  ext4 defaults  0  0' >> /etc/fstab

5、增加热备磁盘

$ mdadm /dev/md5 -a /dev/sdf

【科普热备】

热备的概念是 平时不参与阵列,就是一块空盘,在阵列中某一块盘坏掉了 热备才顶上

七、管理模式

选项:-a(--add),-d(--del),-r(--remove),-f(--fail)

1)模拟损坏

$ mdadm /dev/md1 -f /dev/sdd

2)移除损坏的磁盘

$ mdadm /dev/md1 -r /dev/sdd

3)添加新的硬盘到已有阵列

$ mdadm /dev/md1 -a /dev/sdg

注意:

新增加的硬盘需要与原硬盘大小一致
如果原有阵列缺少工作磁盘(如raid1只有一块在工作,raid5只有2块在工作),这时新增加的磁盘直接变为工作磁盘,如果原有阵列工作正常,则新增加的磁盘为热备磁盘。

4)停止阵列

选项:-S = --stop

# 必须先取消挂载
$ umount /opt/raid1
$ mdadm -S /dev/md1

八、监控模式

选项:-F
不常用,不做详细说明。

九、增长模式,用于增加磁盘,为阵列扩容

选项:-G
示例,将上述raid5的热备磁盘增加到阵列工作磁盘中

$ mdadm -G /dev/md2  -n 4

注意:-n 4 表示使用四块工作磁盘
再次使用-D选项查看阵列详细信息如下:

$ mdadm -D /dev/md1

十、装配模式,软RAID是基于系统的,当原系统损坏了,需要重新装配RAID

选项:-A
示例:将上述已经停止的阵列重新装配:

$ mdadm -A /dev/md1 /dev/sdc /dev/sdd
$ mount /dev/md1 /opt/raid1

实现自动装配
mdadm运行时会自动检查/etc/mdadm.conf 文件并尝试自动装配,因此第一次配置raid后可以将信息导入到/etc/mdadm.conf 中,命令如下:

$ mdadm -Ds >/etc/mdadm.conf

有关RAID技术图解(mdadm)的更多相关文章

  1. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  2. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  3. ruby-on-rails - 用于门户的 Ruby 技术 - 2

    我刚刚看到whitehouse.gov正在使用drupal作为CMS和门户技术。drupal的优点之一似乎是很容易添加插件,而且编程最少,即重新发明轮子最少。这实际上正是Ruby-on-Rails的DRY理念。所以:drupal的缺点是什么?Rails或其他基于Ruby的技术有哪些不符合whitehouse.org(或其他CMS门户)门户技术的资格? 最佳答案 Whatarethedrawbacksofdrupal?对于Ruby和Rails,这确实是一个相当主观的问题。Drupal是一个可靠的内容管理选项,非常适合面向社区的站点。它

  4. iNFTnews | 周杰伦18年前未发布的作品Demo,藏在了区块链技术里 - 2

    当音乐碰上区块链技术,会擦出怎样的火花?或许周杰伦已经给了我们答案。8月29日下午,B站独家首发周杰伦限定珍藏Demo独家访谈VCR,周杰伦在VCR里分享了《晴天》《青花瓷》《搁浅》《爱在西元前》四首经典歌曲Demo背后的创作故事,并首次公布18年前未发布的神秘作品《纽约地铁》的Demo。在VCR中,方文山和杰威尔音乐提及到“多亏了区块链技术,现在我们可以将这些Demos,变成独一无二具有收藏价值的艺术品,这些Demos可以在薄盒(国内数藏平台)上听到。”如何将音乐与区块链技术相结合,薄盒方面称:“薄盒作为区块链技术服务方,打破传统对于区块链技术只能作为数字收藏的理解。聚焦于区块链技术赋能,在

  5. ruby - 使用哪种群发消息技术? - 2

    我感到有点困惑——大约24小时以来,我一直在考虑在我的项目中使用哪种组播技术。基本上,我需要的是:创建组(通过一些后端进程)任意客户端广播消息(1:N,N:N)(可能)直接消息(1:1)(重要)使用我自己的后端(例如,通过某种HTTPAPI)对客户端进行身份验证/授权能够通过后端进程(或服务器插件)踢出特定的客户端这是我要的:Ruby或Haxe中的后端相关流程JS+Haxe(Flash9)中的前端—在浏览器中,因此理想情况下通过80/443进行通信,但不一定。因此,这项技术必须能够在HaxeforFlash中轻松访问,最好是Ruby。我一直在考虑:RabbitMQ(或OpenAMQ)、

  6. 企业大数据发展面临问题之存算分离技术思考 - 2

    文章目录概述背景为何要存算分离优势**应用场景**存算分离产品技术流派华为JuiceFSHashDataXSKY概述背景Hadoop一出生就是奔存算一体设计,当时设计思想就是存储不动而计算(code也即是代码程序)动,负责调度Yarn会把计算任务尽量发到要处理数据所在的实例上,这也是与传统集中式存储最大的不同。为何当时Hadoop设计存算一体的耦合?要知道2006年服务器带宽只有100Mb/s~1Gb/s,但是HDD也即是磁盘吞吐量有50MB/s,这样带宽远远不够传输数据,网络瓶颈尤为明显,无奈之举只好把计算任务发到数据所在的位置。众观历史常言道天下分久必合合久必分,随着云计算技术的发展,数据

  7. 【华为OD技术面试 | 真八股 】MySQL联合索引,谈springIOC的理解,谈springAOP的理解,Erika和zookeeper等问题 - 2

    文章目录华为OD面试流程1.mysql数据库建了两个字段,且设置了联合索引,如果其中有一个字段为空会出现什么问题?2.谈谈springIOC的理解,有什么好处,解决了什么问题3.谈谈springAOP的理解,切面编程有没有实际应用,有哪些注解,作用是什么,有那些应用场景?4.Erika和zookeeper有了解过吗,作用是什么,主要解决了什么问题5.谈谈JDK、JRE、JVM的理解,区别是什么6.谈谈对泛型的理解7.JVM的组成华为OD面试流程机试:三道算法题,关于机试,橡皮擦已经准备好了各语言专栏,可以直接订阅。性格测试:机试技术一面(本专栏核心)技术二面(本专栏核心)主管面试定级定薪发of

  8. ChatGPT教程之深入了解魔术背后的技术 - 2

    解开谜团:深入探索ChatGPT的技术奇迹。ChatGpt无处不在,无论是在播客、博客、YouTube还是社交媒体上。当我注意到这项新技术如此受欢迎时,我决定试一试,我被震惊了!有很多关于ChatGpt及其魔力的博客,但在这篇博客中,我将深入探讨其内部技术及其工作原理!ChatGpt简介根据OpenAI,ChatGpt被描述为:“我们训练了一个名为ChatGpt的模型,它以对话方式进行交互。对话格式使ChatGpt可以回答后续问题、承认错误、挑战不正确的前提并拒绝不适当的请求。ChatGPT是InstructGPT的兄弟模型,它经过训练可以按照提示中的说明进行操作并提供详细的响应。”OpenA

  9. ruby-on-rails - rails 和重构,针对 vim 用户的建议工具和技术? - 2

    作为一个相当新的Rails开发人员,上周我第一次尝到了重构的滋味,我不得不重命名Controller和模型以更好地反射(reflect)我们正在使用的领域。我使用.NET多年,并认为Resharper之类的工具很容易重命名类。我想知道Rails界的人们如何缓解重构问题?我最感兴趣的是那些主要使用vim(或IDE以外的任何东西)的人。我最感兴趣的是:特定于rails的有效vim插件可能有助于流程内置的vim工具也可能有助于该过程我花了将近两个小时进行重构并希望提高效率,因此Rails专家的任何建议都会很棒。干杯。注意,我意识到这个问题类似于Whattoolsareavailablefor

  10. BigData/Cloud Computing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程 - 2

    BigData/CloudComputing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程目录一、云计算网站建设:部署与发布网站建设:简单动态网站搭建云服务器管理维护云数据库管理与数据迁移云存储:对象存储管理与安全超大流量网站的负载均衡二、大数据MOOC网站日志分析搭建企业级数据分析平台基于LBS的热点店铺搜索基于机器学习PAI实现精细化营销基于机器学习的客户流失预警分析使用DataV制作实时销售数据可视化大屏使用MaxCompute进行数据质量核查使用Quick BI制作图形化报表使用时间序列分解模型预测商品销量三、云安全云平台使用安全云上服务

随机推荐