zoukankan      html  css  js  c++  java
  • linux学习--RAID

      RAID(Redundant Array of Inexpensive Disks)称为廉价磁盘冗余阵列。RAID的基本想法是把多个便宜的小磁盘组合到一起,成为一个磁盘组,使性能达到或超过一个容量巨大,价格昂贵的磁盘。

      目前RAID技术大致分为两种:基于硬件的RAID技术和基于软件的RAID技术。其中在Linux下通过自带的软件就能实现RAID功能,这样便可以省去购买昂贵的硬件RAID控制器和附件就能极大的增强磁盘的IO性能和可靠性。由于是用软件去实现的RAID功能,所以它配置灵活,管理方便。同时使用软件RAID,还可以实现将几个物理磁盘合并成为一个更大的虚拟设备,从而达到性能改进和数据冗余的目的。当然基于硬件的RAID解决方案比基于软件RAID技术在使用性能和服务性能上稍胜一筹,具体表现在检测和修复多位错位的能力,错误磁盘自动检测和阵列重建等方面。在本节将详细讲述如何在linux服务器上创建和维护软RAID。

    RAID级别介绍

      随着RAID技术经过不断的发展,现已有RAID0到RAID6七种基本的RAID级别,同时还有RAID0和RAID1的组合形式,称为RAID10。其中的级别并不代表技术的高低,而RAID2和RAID4基本上不再使用了,RAID3则是由于实现起来太复杂也很少使用。目前这些常用的RAID级别在Linux内核都能够支持,本节就以Linux2.6的内核为例,在Linux2.6内核中的软RAID可支持以下级别:RAID0,RAID1,RAID4,RAID5,以及RAID6等。Linux2.6的内核除了支持以上几种RAID级别外,还可以支持LINEAR(线性模式)的软RAID,线性模式是将两个或更多的磁盘组合到一个物理设备中,磁盘不必具有相同的大小,在写入RAID设备是会首先填满磁盘A,然后是磁盘B,以此类推。

    RAID的实现方式

    外接式磁盘阵列:通过扩展卡提供适配能力内接式RAID,主板集成RAID控制器安装OS前在BIOS里配置软RAID,通过OS实现

    标准的RAID

    RAID 0

    RAID0称为条带化存储,将数据分段存储在各个磁盘中,读写均可并行处理,因此读写速率为单个磁盘的N倍,没有冗余功能,任何一个磁盘的损坏就会导致数据不可用。

    RAID1

    RAID1是镜像存储,没有数据校验,数据被同等写入到2个或者多个磁盘中,写入速度相对慢,但是读取速度比较快。

    RAID4

    RAID4在RAID1的基础上,N个盘用于数据存储,另外加入了1个磁盘作为校验盘。一共N+1个盘,任何一个盘坏掉也不影响数据的访问。

    RAID5

    RAID5在RAID4的基础上,由原来的一盘来存储校验数据,改为每个盘都有数据和校验信息的。

    RAID01

    先组成RAID0,然后组成RAID1

    RAID10

    先组成RAID1,然后组成RAID0

    RAID5

      在希望结合大量物理磁并且任然保留一些冗余,RAID5可能是最有用的RAID模式。RAID5可以用在三块或者更多的磁盘上,并使用0块或更多的备用磁盘。就像RAID4一样,得到RAID5设备的大小是(N -1 )* S.

      RAID5与RAID4之间最大的区别就是校验信息均匀分布在各个驱动器上面,如图所示,这样就避免RAID4中出现的瓶颈问题。如果其中一个磁盘出现故障,那么由于有校验信息,所以所有数据任然可以保存不变。如果可以使用备用磁盘,那么设备出现故障之后,将立即开始同步数据。如果两块磁盘同时出现故障,那么所有数据都会丢失。RAID5可以经受住一块磁盘故障,但不能经受两块或多块磁盘故障。

    RAID6

    RAID6是在RAID5基础上扩展而来的。与RAID5一样,数据和校验都是被分成数据块然后分别存储到磁盘阵列的各个硬盘上。只是RAID6中增加一块校验磁盘,用于备份分布在各个磁盘上的校验码。这样RAID6磁盘阵列就允许两个磁盘同时出现故障,所以RAID6的磁盘阵列最少需要四块硬板。

    创建软RAID

    在Linux服务器中是通过mdadm工具来创建和维护软RAID的,mdadm在创建和管理软RAID是非常方便,而且和灵活。mdadm常用的参数有如下:

    --create 或 -C:创建一个新的软RAID,后面接raid设备的名称。例如 /dev/md0./dev/md1.等。

    --assemble 或 -A:加载一个已存的阵列,后面跟阵列以及设备的名称。

    --detail 或 -D:输出指定的RAID设备的详细信息。

    --stop 或 -S:停止指定的RAID设备。

    --level 或 -l:设置RAID的级别。例如 设置‘--level=5’则表示创建阵列的级别是RAID5.

    --raid-devices 或 -n:指定阵列中活动磁盘的数目。

    --scan 或 -s:扫描配置文件或/proc/mdstat文件来搜索软RAID的配置信息,该参数不能单独使用,只能配置其他参数才能使用。

    级别 特征 原理  单元 冗余 性能 利用率 最多坏 用途 缺陷

    RAID0

    条带 分片分散存入2块硬盘 2 读写速度2倍 100% 0 SWAP/TMP 不冗余,数据难恢复

    RAID1

    镜像 相同数据存入2块硬盘 2 写速度不变,读速度2倍 50% 1 数据备份 读写速度没有加,利用率低
    RAID4 校验 分片分散存入2块硬盘 3 读写速度2倍 66% 1 用的很少

    1、坏盘时另外2块需要重新计算还原坏盘数据

    2、校验盘压力大成为瓶颈

    RAID5 校验 分片和校验码混合存储 3 读写速度2倍 66% 1 用的不多 坏盘时另外2块需要重新计算还原坏盘数据
    RAID6 校验 分片盘校验码盘分别是2个,数据分片校验码计算2次 4 读写速度2倍 50% 2 用的很少  
    RAID10 1 + 0 2块硬盘1组先做RAID1多组RAID1再做RAID0 4

    读写速度N倍

    N -> 组数  

    50% 2 用的最多  
    RAID50 5 + 0 3块硬盘1组先做RAID5多组RAID5再做RAID0 6

    读写速度2N倍

    N -> 组数

    4/6 2 土豪用 好是好,但是贵

    https://blog.csdn.net/chenvast/article/details/77906712

  • 相关阅读:
    解决 Cordova 打包 vue项目为 APP 后,在安卓平台下 touchMove 事件不生效的问题
    解决微信内置浏览器里,下拉无法捕获 touchEnd 事件
    记录 React-native 项目中的各种坑坑
    内存型游戏外挂讲解
    浅谈数据抓取的几种方法
    php链表笔记:合并两个有序链表
    php链表笔记:链表的检测
    php链表笔记:单链表反转
    使用UUID和int自增主键的区别
    lumen框架使用Elasticsearch详解
  • 原文地址:https://www.cnblogs.com/xushuhai/p/9447549.html
Copyright © 2011-2022 走看看