独立磁盘冗余阵列-RAID
一、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的更多相关文章
- RAID 独立磁盘冗余阵列 - redundant array of independent disks
RAID: RAID全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想是把多个磁盘组合起来,组合一个磁盘阵列组,使得性能大幅提高. RAID ...
- RAID(独立磁盘冗余阵列)简介
RAID(独立磁盘冗余阵列) 在大数据技术出现之前,人们就需要面对这些关于存储的问题,对应的解决方案就是RAID技术. RAID(独立磁盘冗余阵列)技术主要是为了改善磁盘的存储容量,读写速度,增强磁盘 ...
- RAID : 独立磁盘冗余阵列(Redundant Array of Independent Disks)
RAID 分为不用的等级(RAID0 - RAID5),以满足不同的数据应用需求. RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术. AID ...
- RAID(独立磁盘冗余阵列)
Raid RAID 独立磁盘冗余阵列,在本科学习时候学习过,记不清是组成原理还是操作系统,当时理解的不太清楚,现在研究生期间做存储相关项目,涉及到了Raid,于是查各种博客,为了以后便于后期查阅, ...
- 磁盘冗余阵列之RAID10的配置
1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏导致数据丢 ...
- 磁盘冗余阵列之RAID5的配置
1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏导致数据丢 ...
- 磁盘冗余阵列之RAID5、RAID10
RAID技术主要有以下三个基本功能: (1).通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度. (2).通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机 ...
- linux系统中RAID5磁盘冗余阵列配置(5块磁盘)
RAID5:需要至少三块(含)硬盘,兼顾存储性能.数据安全和储存成本. 如图所示”parity”块中保存的是其他硬盘数据的奇偶校验信息(并非其他硬盘的数据),以数据的奇偶校验信息来保证数据的安全,RA ...
- linux系统中RAID10磁盘冗余阵列配置
介绍:RAID10:需要至少四块(含)硬盘,兼具速度和安全性,但成本很高,RAID10用两个磁盘做RAID0,用其他两个做RAID1当备份. 配置流程: 第一步:在原有基础上为磁盘再填入五块磁盘(至少 ...
随机推荐
- Linux Cgroup浅析
cgroup从2.6.4引入linux内核主线,目前默认已启用该特性.在cgroup出现之前,只能对一个进程做资源限制,比如通过sched_setaffinity设置进程cpu亲和性,使用ulimit ...
- asp.net core 3.x 模块化开发之HostingStartup
我们希望将一个项目(dll)看做一个模块/插件,一个模块往往需要在应用启动时做一些初始化工作,比如向IOC容器添加一些服务,为应用配置对象添加自己的数据源:也希望在应用关闭时做一些收尾工作,asp.n ...
- 《深入浅出话数据结构》系列之什么是B树、B+树?为什么二叉查找树不行?
本文将为大家介绍B树和B+树,首先介绍了B树的应用场景,为什么需要B树:然后介绍了B树的查询和插入过程:最后谈了B+树针对B树的改进. 在谈B树之前,先说一下B树所针对的应用场景.那么B树是用来做什么 ...
- 求树上任意一点所能到达的最远距离 - 树上dp
A school bought the first computer some time ago(so this computer's id is 1). During the recent year ...
- Redis系列(二):Redis的5种数据结构及其常用命令
上一篇博客,我们讲解了什么是Redis以及在Windows和Linux环境下安装Redis的方法, 没看过的同学可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. 本篇博客我们来 ...
- 用canvas绘制标准的五星红旗
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 隐隐约约 听 RazorEngine 在 那里 据说 生成代码 很 美。
这只是 一个开始 ....
- 团队第一次作业(软工C#造梦厂)
一.团队简介 a.团队名称:软工C#造梦厂 b.队员列表 姓名 学号 张旭(组长) 201731024123 周成杰 201731024136 邹扬锋 201731024134 赵俊安 2017310 ...
- Golang - 指针与引用
Golang有指针 , 那么一切数据都是值传递吗 ? 都需要用户进行指针传递吗, 其实不然, 对于Go语言, 虽然有指针, 但是其也有引用传递. 是不是很绕, 因为引用传递就是指针传递哇 . 我们 ...
- Spring注解开发系列Ⅳ --- 属性赋值
在Spring框架中,属性的注入我们有多种方式,我们可以通过构造方法注入,可以通过set方法注入,也可以通过p名称空间注入,方式多种多样,对于复杂的数据类型比如对象.数组.List集合.map集合.P ...