我们知道单个磁盘存储数据的容量是有限的,为了让磁盘的容量增大,我们可以将多个较小的磁盘组合在一起,形成一个较大的磁盘装置,这就是RAID(独立式磁盘阵列),RAID不仅可以提高数据的存储容量,也可以提高数据保护功能,不同级别的RAID,所提供的的功能各不一样。

RAID常见的级别有RAID0,RAID1,RAID5,RAID10,RAID01,RAID5,RAID50

下面逐个介绍这些级别的工作原理。

RAID0:首先将磁盘分成等量的数据块(CHUNK),然后在将存储的数据切分成符合CHUNK大小的块,依次放在每一个磁盘上。以条带的形式均匀的存储在阵列中的每一个磁盘上。

存储方式如图所示:

所谓条带的大小就是通过CHUNK的大小除以block的大小得到的。默认CHUNK为64k。

RAID0具有以下特性:

1、至少有2块磁盘才能组合成RAID,最好相同的磁盘

2、数据被均匀的存储在每一个磁盘上,因此读写性能提升

3、这样存储的数据不具有冗余性,因此其中任意一个磁盘损坏,数据就坏了。

4、磁盘的利用率为100%

RAID1:由于RAID0没有提供数据的冗余机制,因此当其中一个磁盘损坏了,数据就恢复不了了。而RAID1的存储机制与RAID不同,RAID1则是通过镜像冗余的方式,将一份数据同时存储在两个磁盘上。这样当其中一块磁盘损坏了,还可以通过另一个磁盘来工作。

存储方式如下:

RAID1将具有以下特性:

1、至少有2块磁盘组合成RAID1,最好磁盘相同

2、由于数据时保存在每一个磁盘上的,因此磁盘的写性能下降,读性能提升

3、这种存储方式具有冗余性

4、磁盘的空间利用率为50%

从上面知道,RAID0不具有冗余性,当一个磁盘损坏,所有数据也就损坏了。而RAID1虽然具有冗余性,但是磁盘的利用率下降了,磁盘的写性能也下降了。那么可不可以将RAID0和RAID1组合起来使用,同时具有RAID0和RAID1的特性呢?

将RAID0和RAID1组合起来的整列有2中RAID10和RAID01

RAID10:就是先将磁盘组合成RAID1,再讲RAID0组合成RAID0。

存储方式如下:

RAID10具有以下的特性:

1、至少4颗磁盘才能组成。,因为RAID1和RAID0至少要两个磁盘才能组成。

2、因为RAID1的原因,因此性能下降,读性能提升

3、由于RAID1的原因,因此这样组合具有冗余性

4、磁盘利用率为50%

RAID01:现将磁盘组合成RAID0,再将RAID0组合成RAID1

存储方式如下:

RAID5:将至少需要三个磁盘才能组合成RAID5,其中一个磁盘用来存放同位检查码的,且以轮循的方式存放在每一个磁盘上。而数据则是均匀等量的依次存放在其他磁盘上。

当其中某一个磁盘损坏了,可以利用同位检查码来恢复另一个磁盘的数据。

存储方式为如下:

RAID5具有以下特性:

1、由于其中一个磁盘要存放同位检查码,因此至少需要三个磁盘才能形成RADI5

2、由于同位检查码的存在,因此磁盘的写性能下降,读性能提升

3、由于可以用同位检查码来恢复磁盘的数据,因此具有冗余性

4、磁盘的空间利用率为(n-1)/n

RAID50:将磁盘先组合成RAID5,再将组合成的RAID5组合成RAID0

RAID50将具有以下特性:

1、由于RAID5的原因,因此需要至少6颗磁盘才能组合成RAID50

2、由于有同位检查码,因此磁盘写性能下降,读性能提升

3、具有冗余功能

4、磁盘利用率为(n-2)/n

另外还有一种磁盘组合机制jobd技术

jbod:就是将多个磁盘堆叠形成一个大的逻辑磁盘,且当第一个磁盘容量用完时,才使用第二个磁盘。

因此jbod具有以下特性:

1、至少需要2颗磁盘才可以组合成jbod

2、数据是从第一个磁盘依次存储的,因此读写性能没有提升

3、没有提供冗余机制,当其中一块磁盘损坏时,数据就会损坏

4、磁盘利用率为100%

上面主要介绍了几种常见级别的RAID原理,RAID可以通过硬件和软件来组合成,那么硬件RAID和软件RAID有什么区别呢?

硬件RAID:有专门的RAID控制处理器和I/O处理芯片来完成RAUD任务的,不需要占用主机CPU的资源

软件RAID:通过软件来仿真达到磁盘阵列的功能,因此没有第三方控制处理器和I/O芯片来处理,其功能

主要靠CPU来完成。

软件RAID是依靠mdadm这套软件来完成的,他可以将任何块设备文件做成RAID。使用mdadm命令可以将两个以上分区或者磁盘做成我们所想要的磁盘阵列。

由于软件RAID是仿真的,因此创建的RAID装置名为系统的装置文件:/dev/md{0,1,2...}

而硬件RAID的装置文件名为/dev/sd[a-p]

在这里不讲述如何创建硬件RAID,只讲述如何创建软件RAID。由于软件RAID是依靠mdadm软件来完成的,因此在这里只介绍如何使用mdadm来组合磁盘达到磁盘阵列的功能。

mdadm是一个模式化的命令,因此在mdadm环境下有多种模式来管理磁盘阵列。

madam的模式有一下几种:

创建模式、管理模式、监控模式、增长模式、装配模式

在创建模式下的mdadm的语法格式为:

mdadm [option] 分区或磁盘

-C,--create:用来创建RAID

-l #,--level=#:指定RAID的级别

-n #,--raid-devices=#:指定创建RAID的设备个数

-a yes|no,--auto=yes|no:是否自动为其创建RAID文件,即/dev/md0

-c #,--chunk=#:指定CHUNK的大小,默认为64k

-x #,--spare-devices=#:指定空闲的磁盘个数

在管理模式下的mdadm的语法格式:

linux硬件 软件raid,linux学习之路之磁盘阵列RAID及硬件RAID和软件RAID的区别相关推荐

  1. 电脑计算机需要学什么软件有哪些,哪些电脑软件是大学生学习必备的呢?电脑里应该装哪些软件?...

    哪些电脑软件是大学生学习必备的呢?电脑里应该装哪些软件? 一.Word. 大学生需要在大学里面掌握一些word的基本技巧,毕竟这款软件是大学生在大学里面经常需要使用到的.有些专业的大学生需要经常的写一 ...

  2. android开发用百度识别图片格式,Android开发学习之路-机器学习库(图像识别)、百度翻译...

    对于机器学习也不是了解的很深入,今天无意中在GitHub看到一个star的比较多的库,就用着试一试,效果也还行.比是可能比不上TensorFlow的,但是在Android上用起来比较简单,毕竟Tens ...

  3. ZYNQ学习之路13.创建PetaLinux工程

    在前面的学习中,我们知道如何根据PetaLinux BSP设计去创建一个工程,现在,我们结合Vivado设计我们自己PetaLinux系统. 开发环境:Ubuntu16 64bit, PetaLinu ...

  4. 《软件需求》学习笔记

    为什么80%的码农都做不了架构师?>>>    <软件需求>学习笔记 前几天读了Karl E.Wiegers<软件需求>,书的内容写得非常好.我这里谈谈读了此 ...

  5. linux硬件 软件raid,Linux下软件RAID的实现

    作为网络操作系统, 冗余磁盘阵列(Redundant Array of Inexpensive Disks,简称RAID)功能是必备的功能之一.从Linux 2.4内核开始,Linux就提供软件RAI ...

  6. linux 学习之路

    很多同学接触Linux不多,对Linux平台的开发更是一无所知. 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机IT行业从业人员, 掌握Linux是一种很重要的谋生资源与手段. 下来我将 ...

  7. Linux学习之路(持续补充中......)

    Linux学习之路 Linux的基础知识 第一章:Linux的概述以及系统安装及使用 第一节:简单了解一下Linux发展历史与历程 Linux是一种自由.开源的类UNIX操作系统. linux 的创始 ...

  8. linux之学习之路

    很多同学接触Linux不多,对Linux平台的开发更是一无所知. 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机IT行业从业人员, 掌握Linux是一种很重要的谋生资源与手段. 下来我将 ...

  9. alin的学习之路(Linux系统编程:一)(Linux基础命令)

    alin的学习之路(Linux系统编程:一)(Linux基础命令) 1.Linux学习准备 操作系统的作用 向上给用户提供简单的操作计算机硬件的方式 对下管理硬件 承上启下 程序运行在操作系统上,程序 ...

  10. Python学习之路(六)——Linux编程

    这里写目录标题 操作系统 1. 常见的操作系统 2. 操作系统的定义 虚拟机软件 1. 虚拟机软件的介绍 2. 虚拟机的介绍 3. 虚拟机软件的安装说明 Ubuntu操作系统 1. Ubuntu操作系 ...

最新文章

  1. JAVA 判断Socket 远程端是否断开连接
  2. Doris FE配置参数(全面)
  3. python︱用asyncio、aiohttp实现异步及相关案例
  4. ubuntu18.04 有线未托管解决
  5. 对象行为型 - 模版方法模式
  6. FISCO BCOS 同态加密 实例
  7. 文件另存为GBK编码格式
  8. 手机充当电脑摄像头:无他相机和DroidCam
  9. IIS配置MIME类型
  10. 什么是软件研发费用定额?
  11. RISC-V架构能否引领物联网时代?
  12. ajax请求有多少种写法,Ajax 请求的三种写法
  13. 进行小红书营销,怎样拉入更多的客户?
  14. C++ Reference: Standard C++ Library reference: C Library: cstdio: printf
  15. 一般云服务器支持多少并发,一般云服务器支持是多大并发?
  16. 5.22 综合案例2.0-4G远程遥控车DEMO(2.2版本接口有更新)
  17. matlab打印函数disp如何不换行
  18. Hive sql常用语句
  19. ZOJ2604-DP
  20. 对象认知全提升,成为 JS 高手

热门文章

  1. kafka常用的操作命令
  2. spring mvc 基础学习
  3. Mysql 如何做双机热备和负载均衡 (方法一)
  4. .NET : 如何动态根据一个业务实体类型创建XSD架构文件
  5. 推荐 ADO.NET Entity Framework (EDM) 相关技术文章
  6. 程序员有了孩子,老大叫玲玲,老二叫玲依,老三叫...
  7. 几个清华和北邮学霸公众号,值得学习
  8. R与Python手牵手:数据探索性分析案例展示
  9. [Python 应用:爬虫] Selenium 之 XPath 语法
  10. Python全栈之路Day22