独立磁盘冗余阵列-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当备份. 配置流程: 第一步:在原有基础上为磁盘再填入五块磁盘(至少 ...
随机推荐
- Go 每日一库之 flag
缘起 我一直在想,有什么方式可以让人比较轻易地保持每日学习,持续输出的状态.写博客是一种方式,但不是每天都有想写的,值得写的东西. 有时候一个技术比较复杂,写博客的时候经常会写着写着发现自己的理解有偏 ...
- python中类的输出或类的实例输出为何是<__main__类名 object at xxxx>这种形式?
原因: __str__()这个特殊方法将对象转换为字符串的结果 效果图: 代码: # 定义一个Person类 class Person(object): """人类&qu ...
- vue的param和query两种传参方式及URL的显示
路由配置: // 首页 { path: '/home', name:'home', component:Home }, // 行情 { path: '/markets', name:'market', ...
- Linux中两个重要的基础服务
本文服务器基于centos7,客户端Windows10 FTP FTP(File Transfer Protocol),文件传输协议,是一个比较古老的基于TCP,用于不同计算机间传递文件的协议. 安装 ...
- 获取各类前几名数据的MYSQL写法
前几天,某在培训的朋友问我一个问题:查询每门功课成绩最好的前两名该怎么写. 这个问题虽然听起来挺简单,但是很有意思,于是我就新建了一张如下的表: stuNo为学号,stuScore为分数,course ...
- SpingMvc复杂参数传收总结
上一篇文章[javaWeb传收参数方式总结]总结了简单传收参数,这一篇讲如何传收复杂参数,比如Long[] .User(bean里面包含List).User[].List.List<Map< ...
- Java容器解析系列(13) WeakHashMap详解
关于WeakHashMap其实没有太多可说的,其与HashMap大致相同,区别就在于: 对每个key的引用方式为弱引用; 关于java4种引用方式,参考java Reference 网上很多说 弱引用 ...
- vscode打开文件,中文显示乱码(已解决)
之前使用vscode打开keil的文件后,发现显示乱码,网上查找资料发现大多是这种方法:将files.autoGuessEncoding改为true,但是并没有用. 发现第二种方法为:在vscode中 ...
- Shell考题初级篇
将当前目录下大于10K的文件转移到/tmp目录下 find . -type f -size +10k -exec mv {} /tmp \; 编写一个shell,判断用户输入的文件是否是一个字符设备文 ...
- Git详解之服务部署
前言 到目前为止,你应该已经学会了使用 Git 来完成日常工作.然而,如果想与他人合作,还需要一个远程的 Git 仓库.尽管技术上可以从个人的仓库里推送和拉取修改内容,但我们不鼓励这样做,因为一不留心 ...