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

RAID的早先设计理念为”redundant array of Inexpensive disks“即不贵的硬盘组,而现在的定义是”Redundant Array ofIndependent Disks“即独立的硬盘组,作用是防止硬盘物理损坏以及增加存储设备的吞吐量。RAID常见的组合有01510

RAID0:需要至少两块(含)硬盘,可以有效的提高硬盘的性能和吞吐量,但没有数据的冗余和错误修复能力。

将多块硬盘通过硬件或软件的方式串联在一起,成为一个大的卷集,将数据依次写入到各个硬盘中,这样性能会极大提升,但若任意一块硬盘故障则整个系统的数据都会受到破坏。

RAID1:需要至少两块(含)硬盘,可以有效的提高数据资料的安全性和可修复性,但成本却提高了。

实现原来是在数据写入硬盘时也会在另外一块闲置的硬盘上生成镜像文件,在不影响性能的情况下最大限度保证数据资料的可靠性,只要在一对镜像盘中还有一块硬盘可以使用,那么数据也不会丢失,具有很好的硬盘冗余能力,虽然对数据来讲绝对的安全,但成本却明显增加,磁盘利用率仅为50%。

RAID5:需要至少三块(含)硬盘,兼顾存储性能、数据安全和储存成本。

如上图所示”parity”块中保存的是其他硬盘数据的奇偶校验信息(并非其他硬盘的数据),以数据的奇偶校验信息来保证数据的安全,RAID5不以单独的硬盘来存放数据的奇偶校验信息,而是保存在各个磁盘上。

这样当任何一个硬盘损坏都可以根据其他硬盘上的奇偶校验信息来尝试重建损坏的数据,性能也很高,兼顾了存储性能、数据安全和存储成本,可以看作是RAID0与RAID1的折中方案。

RAID10:需要至少四块(含)硬盘,兼具速度和安全性,但成本很高。

继承了RAID0的快速与RAID1的安全,RAID1在这里提供了冗余备份的阵列,而RAID0则负责数据的读写阵列。

因这种结构的成本高,一般用于存放要求速度与差错控制的数据。
———————————————————————分割线——————————————————————
首先打开VMware页面,选择我们的虚拟机,点击编辑虚拟机设置,选择添加硬盘,添加五个,如下图所示步骤。

注:重复此步骤五次以后,会出现下图所示内容

打开虚拟机,打开终端,输入以下命令
mdadm -Cv /dev/md0  -n 3 -l 5 -x 2 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf

-C代表创建操作,-v显示创建过程,-n是用到的硬盘个数,-l是定义RAID的级别而后面写上要加入阵列的硬盘名称,-x是用于备份的磁盘个数。
如下图所示

下面用mdadm来查看阵列的详细信息
 输入命令:mdadm  -D  /dev/md0

然后我们需要将磁盘阵列格式化为ext4格式,
输入命令:mkfs.ext4 /dev/md0

现在我们需要来进行创建挂载目录进行挂载输入命令:
mkdir /media/raid5
mount /dev/md0 /media/raid5

在桌面上可以看到图标,为了防止关机消失,所以我们设置命令来自动挂载,输入命令:

echo  “/dev/md0  /media/raid5  ext4 defaults  0  0”  >>  /etc/fstab

设置完成!

现在我们来进行raid0的配置,使用磁盘数为5

因为刚搭建完raid5,正在虚拟机上运行,所以我们来输入指令使得设备停用。
输入命令:umount /dev/md0
mdadm -S /dev/md0
mdadm: stopped /dev/md0
然后输入命令开始创建raid10的新阵列
输入命令:

mdadm -Cv /dev/md0 -a yes -n 5 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf

-C代表创建操作,-v显示创建过程,-a yes检查RAID名称,-n是用到的硬盘个数,-l是定义RAID的级别而后面写上要加入阵列的硬盘名称。  
其中需要输入y来确认建立阵列

然后我们将raid磁盘阵列格式化为ext4格式
输入命令:mkfs.ext4 /dev/md0

创建挂载目录
输入命令:mkdir /RAID
进行挂载
输入命令:mount /dev/md0 /RAID
查看磁盘挂载信息
输入命令:df -h
设置为自动挂载
设置命令:echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab

输入命令:mdadm -D /dev/md0查看磁盘阵列

最后,我们来模拟一下有一块硬盘损坏的情况,使用mdadm的-f参数将/dev/sdb移出阵列,输入mdadm /dev/md0 -f /dev/sdb
移除成功后,再次输入mdadm -D /dev/md0查看阵列状态,可以看到sdb已经消失,此时sdb被移除,失败状态。

好的,此次就写到这里了,有问题可以在评论区讨论。

Linux系统下RAID5和RAID10的磁盘阵列配置的更多相关文章

  1. redis在windows和Linux系统下的下载、安装、配置

    1.下载redis安装包 在redis的官网只有Linux系统下的安装包,微软的GitHub上有提供windows版本的redis安装包 redis中文网:http://www.redis.cn/ 微 ...

  2. LINUX系统下Java和Scala的环境配置

    最近,笔者在研究一个有关“自然语言处理”的项目,在这个项目中,需要我们用Spark进行编程.而Spark内核是由Scala语言开发的,所以在使用Spark之前,我们必须配置好Scala,而Scala又 ...

  3. linux系统下FTP服务器的安装和配置

    FTP是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.简单地说,支持FTP协议的服务器就是FTP服务器. PORT模式: 首先客户端开启一个非特权端口N(大 ...

  4. LINUX系统下安装PyCharm和annaconda3并配置

    以下是在ubantu18.04版本下的配置教程: Step 1 去PyCharm官网下载Linux版的PyChram安装压缩包 网址:https://www.jetbrains.com/zh-cn/p ...

  5. 在Linux系统下运行微信Web开发者工具

    微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...

  6. Vi (Unix及Linux系统下标准的编辑器)VIM (Unix及类Unix系统文本编辑器)

    Vi是Unix及Linux系统下标准的编辑器.学会它后,您将在Linux的世界里畅行无阻.基本上vi可以分为三种状态,分别是命令模式.插入模式,和底行模式. vi编辑器是所有Unix及Linux系统下 ...

  7. linux系统下的权限知识梳理

    下面对linux系统下的有关权限操作命令进行了梳理总结,并配合简单实例进行说明.linux中除了常见的读(r).写(w).执行(x)权限以外,还有其他的一些特殊或隐藏权限,熟练掌握这些权限知识的使用, ...

  8. linux系统下修改文件夹目录权限

    linux系统下修改文件夹目录权限 文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何 ...

  9. Linux系统下配置JDK环境变量

    刚申请了阿里云,平时很少接触Linux,特此记录一下Linux系统下安装JDK的步骤. 1.进入usr:cd /usr: 2.创建java文件夹:mkdir java: 3.将下载好的文件拷贝至jav ...

随机推荐

  1. MySQL索引知识点及面试常问题

    索引的功能 索引可以大幅增加数据库的查询的性能,在实际业务场景中,或多或少都会使用到. 但是索引是有如下 2 个代价的: 需要额外的磁盘空间来保存索引 对于插入.更新.删除等操作由于更新索引会增加额外 ...

  2. Spring cloud微服务安全实战-6-11sentinel之配置持久化

    规则的持久化问题.现在的规则都是在内存里的,我们要写一些代码来编一些规则.启动以后规则在内存里了.如果你配置里面有sentinel的dashboard,有流量经过客户端的时候,它会把规则同步给Dash ...

  3. 自定义Func方法支持out,ref参数

    默认的Func不支持Out,ref类型的参数,所以需要自定义个delegate func来满足需求.具体代码如下 public delegate TResult FuncEX<T1, T2, T ...

  4. ES6新增函数总结和range函数实现

    Array.from  类数组,Set,字符串转为数组 Array.of   不定参数转为数组 Array.prototype.fill(value,[start],[end]) 对数组在指定范围填充 ...

  5. 【446】Deep Learning

    ref: 深度学习基础介绍 机器学习19 神经网络NN算法 ref: 深度学习基础介绍 机器学习11 神经网络算法应用上 ref: 深度学习基础介绍 机器学习12 神经网络算法应用下 ref: 神经网 ...

  6. python web开发——django学习(二)orm介绍与model检查

    原始是这样连接数据库的: 现在改用django orm (1)先在setting里配置app (2)在modle.py里建model class UserMessage(models.Model): ...

  7. IDEA中MyBatis插件的安装及使用

    这个插件的好处就在于能自动关联mapper类与xml,让你可以快速的互相跳转,还能帮助你做简单的排错. 安装方法: 1.File→Settings→Plugins,输入mybatis plugin,本 ...

  8. 图像处理软件ImageJ

    ImageJ是一个基于java的公共的图像处理软件,它是由National Institutes of Health开发的.可运行于Microsoft Windows,Mac OS,Mac OS X, ...

  9. [LeetCode] 89. Gray Code 格雷码

    The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...

  10. mysql instr()函数

    1)instr()函数的格式  (俗称:字符查找函数) 格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串) 格式二:instr( strin ...