一、RAID概述

RAID(Redundant Array of Independent Disks)即独立冗余磁盘阵列

磁盘阵列就是、由很多块廉价磁盘 组成的一个容量巨大的卷组、然后在使用不同级别的RAID来提升数据的读写效率、保证数据的安全性

磁盘阵列的样式包括:

1、外接式磁盘阵列柜

2、内接式磁盘阵列卡

3、软件的方式来实现


1)RAID级别

RAID的级别很多、目前以有的RAID磁盘阵列多达十几种、而常见的包括:RAID0、RAID1、RAID5、RAID10

1、RAID0-(分条)

RAID0就是将多块硬盘(至少两块)通过软件或者是硬件的方式串联在一起 组成一个庞大的卷组

然后将数据依次写入到各个物理硬盘中、这样的话 数据的读写效率 可以得到很大的提升

优点:因为是条带化、所以数据的读写效率 得到了很大的提升

缺点:无容错效果、一块盘损坏将导致整个系统的数据受到损坏

2、RAID1-(镜像)

RAID技术 就是将两块或者两块以上的硬盘绑定在一起、写入数据的时候 将数据同时写入到多块硬盘上面

当中如果有一块硬盘发生故障 就立即以热交换模式 来恢复数据正常使用 可将另一块盘上的数据 理解为副本

优点:因为是镜像数、所以具有冗余性

缺点:磁盘的利用率得以降低、写的性能有所变慢

3、RAID5-(奇偶校验)

RAID5技术就是通过将数据的奇偶校验信息保存到不同硬盘中、而不是单独保存在一块硬盘上面

这样做的最大好处就是一块盘损坏之后、不至于出现致命缺陷 为何呢 因为硬盘设备出现问题之后

我们可以通过 奇偶校验信息来重建损坏的数据、如下图所示 Parity的地方存储的就是 数据校验信息

优点:兼顾了 读写效率、数据安全这两者 冗余类型为奇偶校验

缺点:成本是一方面、另一方面就是 一块硬盘出现故障以后、整个系统的性能 肯定会有所降低

4、RAID10-(分条+镜像)

从名字我们可以看出来、RAID10技术就是 RAID0+RAID1的一个结合体、部署RAID10至少需要四块盘

最基础的理念就是、先两两制作成RAID1 来保证系统和数据的安全性、然后在RAID1的基础上 部署RAID0

以此来进一步提高硬盘设备的读写效率、这样的话 只要坏的不是同一组中的所有硬盘 那数据丢失概率不大

优点:兼顾 RAID0和RAID1的特点、在不考虑成本的情况下 RAID10的效率要高于RAID5

缺点:还是以上这个说法、价格相对较高 但是我们要知道的是 数据的价值 远远超过了硬盘的价值


二、Linux实现软RAID

因为RAID0和RAID1的效果 均可以在 RAID10里面 体现出来、所以这边的话 我就不单独做了

在部署之前 我们先来看一下使用什么来实现?

在Linux系统里面、阵列的管理和配置 需要用到 mdadm命令、使用yum 安装即可 yum -y install mdadm

以下为mdadm的常用参数:

-C:    创建

-a:    检测设备名称

-v:    显示过程信息

-l:    指定RAID 级别

-n:    指定设备数量

-x:    指定热备磁盘

-D:    查看详细信息

-c:    指定数据块大小

-f:    模拟设备损坏

-r:    移除设备

-Q:    查看摘要信息

-S:    停止磁盘阵列

===================================================

1)准备工作

因为是虚拟机、所以我们先来快速的添加 四块硬盘、如下所示

2)创建软RAID

如下所示:设备名称为md10、硬盘数量为4、RAID的级别为10

[root@node1 ~]# mdadm -C /dev/md10 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde

3)格式化阵列

格式化的命令为:mkfs -t 类型 设备名称

如下所示、我将格式化刚刚所创建的 md10

[root@node1 ~]# mkfs -t ext4 /dev/md10		#格式化的类型为 ext4

4)使用与验证软RAID

使用之前、我们先创建一个目录用来挂载使用

如下所示:先创建目录、然后挂载、最后将挂载信息写入到配置文件使其开机自动挂载

[root@node1 ~]# mkdir /share												#创建对应的挂载目录
[root@node1 ~]# mount /dev/md10 /share										#挂载
[root@node1 ~]# echo "/dev/md10 /share ext4 defaults 0 0" >> /etc/fstab 	#将信息写入配置文件
[root@node1 ~]# mount -a
[root@node1 ~]# df -hT | tail -1
/dev/md10                     ext4       20G   45M   19G    1% /share

演示的话也看不出其性能、除非是真实的生产环境、不过RAID1的特点 可以测试出来

测试的话就是将一块或者两块硬盘 将其移除、然后在测试数据是否可以读取和写入

如下所示:我将使用 -r选项 来模拟硬盘设备故障、然后测试数据是否可以 正常的写入和读取、最后添加一块新的磁盘到阵列里面

[root@node1 ~]# mdadm /dev/md10 -f /dev/sdb				#模拟磁盘损坏
mdadm: set /dev/sdb faulty in /dev/md10

然后 再次查看状态信息、如下所示我们可以看到、活跃的和正在工作的磁盘只有三个、然后损坏了一个

但是这并不影响我们的数据存储、如下所示

虽然说不会影响数据的正常使用、但是系统性能肯定还是会有所降低、所以我们在添加一块硬盘到阵列

如下所示:我们将刚刚所移除的 /dev/sdb设备 添加回来、然后再次查看阵列状态

注意:添加之前先重启、不然系统会提示设备繁忙

[root@node1 ~]# mdadm /dev/md10 -a /dev/sdb
mdadm: added /dev/sdc

再次来查看、如下所示、我们可以看到已经恢复正常


三、磁盘阵列+备份盘

我们都知道 RAID 1/5/10具有容错效果、一块磁盘坏掉并不影响我们数据的正常使用、如果运气不好、所有磁盘全部损坏、那业务就得暂停了

那能不能预防这种事故的发生呢?能。我们可以使用RAID备份盘技术来预防这种事故的发生

那什么是备份盘呢?首先我们得准备一块空间足够的硬盘、然后在服务器上面做好相应的配置(使用mdadm命令)

配置完成之后、这块硬盘就没它什么事情了、平时它处于空闲状态(类似双机热备)一旦阵列中有硬盘出现故障、它就直接顶替上去

1)实现磁盘阵列+备份盘

我们首先来部署RAID5、因为刚刚我没有演示、在配置RAID5的同时、使用 mdadm命令中的 -x 选项 来指定备份盘的数量

配置完成以后、我们需要:创建目录、挂载、开启挂载、然后使用 -f 选项模拟故障、在这个出故障的时候、我们查看阵列状态、看看那个备份盘 是否 从备用变成了活跃

1、准备工作

因为我刚刚做了RAID10、但是这种热备盘技术与RAID1并不兼容、所以我们得把环境重塑一下

还是一样、在虚拟里面添加三块硬盘、哦 不对 、添加四块 为毛??因为还有一块我们需要用来做热备盘

提示:这样得话就是:/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde 、然后我们使用/dev/sde来做备份盘

2、部署RAID5

注意:如下所示 -x 后面指定的就是热备盘的数量、我这就一个、所以值为1

[root@node1 ~]# mdadm -C /dev/md5 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
[root@node1 ~]# mkfs -t ext4 /dev/md5
[root@node1 ~]# mkdir /share
[root@node1 ~]# mount /dev/md5 /share
[root@node1 ~]# echo "/dev/md5 /share ext4 defaults 0 0" >> /etc/fstab
[root@node1 ~]# mount -a
[root@node1 ~]# df -hT | tail -1
/dev/md5   ext4    40G   49M   38G  1% /share

3、查看阵列状态

如下图所示:我们可以看到、工作数量为4、但是活跃的为3、然后在往下看、可以看见 sde处于备用状态

4、验证备份盘技术

下面我们使用 -f 选项来移除一块磁盘、就sdd吧、如下所示

[root@node1 ~]# mdadm /dev/md5 -f /dev/sdd			#移除/dev/sdd设备
mdadm: set /dev/sdd faulty in /dev/md5

然后再次来查看阵列状态、我们会看到 sdd处于失败状态、然后sde顶上去了、并且已经同步了数据 、如下所示:

【只是为了打发时间】

独立磁盘冗余阵列-RAID的更多相关文章

  1. RAID 独立磁盘冗余阵列 - redundant array of independent disks

    RAID:  RAID全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想是把多个磁盘组合起来,组合一个磁盘阵列组,使得性能大幅提高. RAID ...

  2. RAID(独立磁盘冗余阵列)简介

    RAID(独立磁盘冗余阵列) 在大数据技术出现之前,人们就需要面对这些关于存储的问题,对应的解决方案就是RAID技术. RAID(独立磁盘冗余阵列)技术主要是为了改善磁盘的存储容量,读写速度,增强磁盘 ...

  3. RAID : 独立磁盘冗余阵列(Redundant Array of Independent Disks)

    RAID 分为不用的等级(RAID0 - RAID5),以满足不同的数据应用需求. RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术. AID ...

  4. RAID(独立磁盘冗余阵列)

    Raid ​ RAID 独立磁盘冗余阵列,在本科学习时候学习过,记不清是组成原理还是操作系统,当时理解的不太清楚,现在研究生期间做存储相关项目,涉及到了Raid,于是查各种博客,为了以后便于后期查阅, ...

  5. 磁盘冗余阵列之RAID10的配置

    1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏导致数据丢 ...

  6. 磁盘冗余阵列之RAID5的配置

    1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏导致数据丢 ...

  7. 磁盘冗余阵列之RAID5、RAID10

    RAID技术主要有以下三个基本功能: (1).通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度. (2).通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机 ...

  8. linux系统中RAID5磁盘冗余阵列配置(5块磁盘)

    RAID5:需要至少三块(含)硬盘,兼顾存储性能.数据安全和储存成本. 如图所示”parity”块中保存的是其他硬盘数据的奇偶校验信息(并非其他硬盘的数据),以数据的奇偶校验信息来保证数据的安全,RA ...

  9. linux系统中RAID10磁盘冗余阵列配置

    介绍:RAID10:需要至少四块(含)硬盘,兼具速度和安全性,但成本很高,RAID10用两个磁盘做RAID0,用其他两个做RAID1当备份. 配置流程: 第一步:在原有基础上为磁盘再填入五块磁盘(至少 ...

随机推荐

  1. Linux Cgroup浅析

    cgroup从2.6.4引入linux内核主线,目前默认已启用该特性.在cgroup出现之前,只能对一个进程做资源限制,比如通过sched_setaffinity设置进程cpu亲和性,使用ulimit ...

  2. asp.net core 3.x 模块化开发之HostingStartup

    我们希望将一个项目(dll)看做一个模块/插件,一个模块往往需要在应用启动时做一些初始化工作,比如向IOC容器添加一些服务,为应用配置对象添加自己的数据源:也希望在应用关闭时做一些收尾工作,asp.n ...

  3. 《深入浅出话数据结构》系列之什么是B树、B+树?为什么二叉查找树不行?

    本文将为大家介绍B树和B+树,首先介绍了B树的应用场景,为什么需要B树:然后介绍了B树的查询和插入过程:最后谈了B+树针对B树的改进. 在谈B树之前,先说一下B树所针对的应用场景.那么B树是用来做什么 ...

  4. 求树上任意一点所能到达的最远距离 - 树上dp

    A school bought the first computer some time ago(so this computer's id is 1). During the recent year ...

  5. Redis系列(二):Redis的5种数据结构及其常用命令

    上一篇博客,我们讲解了什么是Redis以及在Windows和Linux环境下安装Redis的方法, 没看过的同学可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. 本篇博客我们来 ...

  6. 用canvas绘制标准的五星红旗

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 隐隐约约 听 RazorEngine 在 那里 据说 生成代码 很 美。

    这只是 一个开始 ....

  8. 团队第一次作业(软工C#造梦厂)

    一.团队简介 a.团队名称:软工C#造梦厂 b.队员列表 姓名 学号 张旭(组长) 201731024123 周成杰 201731024136 邹扬锋 201731024134 赵俊安 2017310 ...

  9. Golang - 指针与引用

    ​ Golang有指针 , 那么一切数据都是值传递吗 ? 都需要用户进行指针传递吗, 其实不然, 对于Go语言, 虽然有指针, 但是其也有引用传递. 是不是很绕, 因为引用传递就是指针传递哇 . 我们 ...

  10. Spring注解开发系列Ⅳ --- 属性赋值

    在Spring框架中,属性的注入我们有多种方式,我们可以通过构造方法注入,可以通过set方法注入,也可以通过p名称空间注入,方式多种多样,对于复杂的数据类型比如对象.数组.List集合.map集合.P ...