zoukankan      html  css  js  c++  java
  • 磁盘阵列简介

    磁盘阵列(Redundant Array of independent Disks, RAID)是由美国加州大学柏克莱分校于1987年提出的,其概念是将多个硬盘组成一个逻辑虚拟的硬盘。操作上和操作单一的一块硬盘没有差别。不过实际上,数据是存储在不同硬盘上的。
    磁盘阵列的好处
    整合多个硬盘:能将多个小的硬盘整合为一个大的硬盘。
    数据具有较高的安全性:磁盘阵列具有修改错误的能力。他将校验码(parity)放在不同的硬盘上,当数据发生问题,即会用到校验码来恢复原始数据。
    提高存取效率:当数据写入的时候,会切割成多个小块,同时写在不同的硬盘中,这样读数据的时候,能从不同的物理硬盘中读取,加快了磁盘的I/O速度。
    磁盘阵列的分类
    Linux磁盘阵列根据文件的存储位置分为七种。
    Linear:数据会先放在第一块硬盘,当此用盘空间使用完是,再依次存储至第2,3……..个硬盘,当数据或硬盘发生故障,此模式不具有容错的能力。
    RAID-0:当写入数据时,会将数据切割为非常多小块,并将这些块的数据分别存储到每一块硬盘上。和Linear方式不同,RAID会把数据平均分配到不同的硬盘。因此不具有容错能力。
    RAID-1:此模式会把数据在每一个硬盘上存储一份,每一个硬盘的数据都一摸相同。
    RAID-2:数据会以bit为单位分割,并分别存储到各个硬盘中,但存储时此方式会额外保留若干数量的硬盘。,写入数据时,磁盘阵列会同步计算存储到各个硬盘的校验码,然后有将此校验码放在保留的硬盘上。当有硬盘损坏时,就可利用此校验码恢复正确地数据,达到容错的目的。
    RAID-3:一份数据会以字节byte为单位分割,分别存储到各个硬盘中。此方式会特别保留一个固定的硬盘存储同位校验码。但由于是将同位校验码存储在同一个硬盘中,因此该硬盘应该有较快的传输速度。否则会影响系统性能。
    RAID-4:一份数据会被切割成固定大小的区块,并且分别存储到每一个硬盘中。此方式和RAID-3比较,除了分割方式不同以外,其他相同,也具有容错功能。
    RAID-5:一份数据会被分割成固定大小的区块,并分别存储到每个硬盘中。虽然此方式和RAID-4相同以区块为单位分割数据,不同的是,RAID-5并不特别保留固定的一个硬盘来存储校验码,而是将校验码分散存储在所有硬盘中。因此,此方式不会因为存储校验码在一块硬盘上,而影响系统的性能。
    4 Linux支持的磁盘阵列
        目前Linux支持Linear、 RAID-0、RAID-1、RAID-4、RAID-5五种磁盘阵列模式。在五种模式中,RAID-4和RAID-5运行方式相近。接下来将周详介绍Linear、RAID-1、RAID-5磁盘阵列创建过程。
    1、 创建linear磁盘阵列
    硬件需求:两块或以上的硬盘。
    创建linear磁盘阵列:
    设置文件为/etc/raidtab
    文件格式如下:
    raiddev /dev/md0              指定磁盘阵列的设备名称
    raid-level       Linear        指定采用的是Linear模式
    nr-raid-disks     2           此磁盘阵列由2个硬盘所组成
    chunk-size        32         当数据写入磁盘阵列时,每个写入区块的大小
    (单位为KB,且必须为2的次方)。由于在Linear
    模式中,写入数据并不分块,而是循序写入到同
    一磁盘中。
    persistent-superblock  1        设置是否要写入磁盘的superblock,设置成“1”
    表示写入,设置“0”不写入。
    device            /dev/sda2  按实际的情况,指定第一个硬盘分区的名称
    raid-disk          0         设置上述的分区是次磁盘阵列所使用的第一个
    硬盘。编号“0”开始。
    device            /dev/sdb1  按实际情况,指定第二块硬盘分区的名称。
    raid-disk         1          设置上述的分区是此磁盘阵列所使用的第二块
    硬盘。
    创建好设置文件后,执行下面命令,初始化刚刚创建的/dev/md0磁盘阵列。
    #mkraid /dev/mdo
    #mke2fs ?j /dev/md0 格式化磁盘阵列
    #mount ?t ext3 /dev/md0  mnt/md0将md0装载到/mnt/md0下。
        检查磁盘阵列状态记录文件,停止和启动磁盘阵列。
        停止磁盘阵列:首先卸下装载的磁盘阵列
                      #umount  /dev/md0
                      #raidstop  /dev/md0
        启动磁盘阵列:
                      #raidstart  /dev/md0
        查看磁盘阵列使用状态:
                      #more /proc/mdstat
        personalities:[linear]
        read_head 1024 sectors
        md0:active linear sda2(1) sdb(0)
        20483524  blocks 32k  rounding
        unused devices:
        上述状态是磁盘阵列处于运行状态时的相关信息。当磁盘阵列没有处于启动状态的时候,显示的状态如下:
        personalities:[linear]
        read_ahead 1024 sectors
    unused devices:
      删除磁盘阵列:首先停止磁盘阵列,然后删除/etc/raidtab文件即可。
    2、 创建RAID-1磁盘阵列
    RAID-1磁盘阵列存储方式,是将同一份数据同时写到每个硬盘中,那一个硬盘所存储的数据是一模相同的。
    硬件需求:要创建RAID-1磁盘阵列,至少需要2块硬盘,每一块硬盘最佳大小一致。这是因为每一个硬盘存储相同的数据,因此有一个硬盘比其他的容量大时,磁盘着烈也无法使用多出来的硬盘空间。
    创建磁盘阵列:本例采用2个硬盘的分区 sda1和sdb1创建磁盘阵列。以下是/etc/raidtab内容。
    raiddev /dev/md0              指定磁盘阵列的设备名称
    raid-level       1            指定采用的是RAID-1模式
    nr-raid-disks     2           此磁盘阵列由2个硬盘所组成
    nr-spare-disks    0           磁盘阵列备用磁盘数目
    chunk-size        4         当数据写入磁盘阵列时,每个写入区块的大小
    (单位为KB,且必须为2的次方)。由于在Linear
    模式中,写入数据并不分块,而是循序写入到同
    一磁盘中。
    persistent-superblock  1        设置是否要写入磁盘的superblock,设置成“1”
    表示写入,设置“0”不写入。
    device            /dev/sda1  按实际的情况,指定第一个硬盘分区的名称
    raid-disk          0         设置上述的分区是次磁盘阵列所使用的第一个
    硬盘。编号“0”开始。
    device            /dev/sdb1  按实际情况,指定第二块硬盘分区的名称。
    raid-disk         1          设置
    创建好设置文件后,创建文件系统、启动、查看运行状态等方法和Linear相同。
    3、 创建RAID-5磁盘阵列
    在此介绍RAID-5,是在RAID-0和RAID-1中取一个平衡点,同时具有容错能力,也不会浪费太多硬盘空间,并有助于提高磁盘的I/O性能。
    硬件需求:
    由于RAID-5需要存储同位校验码,因此要创建此模式的磁盘阵列,至少需要3块或以上的硬盘。
    创建磁盘阵列:本例以sda1、sdb1、sdc1,3个分区组成RAID-5磁盘,下面是设置文件/etc/raidtab。
    raiddev /dev/md0              指定磁盘阵列的设备名称
    raid-level       5        指定采用的是Linear模式
    nr-raid-disks     3          此磁盘阵列由2个硬盘所组成
    nr-spare-disks    0          磁盘阵列备用磁盘数目
    chunk-size        32         当数据写入磁盘阵列时,每个写入区块的大小
    (单位为KB,且必须为2的次方)。由于在Linear
    模式中,写入数据并不分块,而是循序写入到同
    一磁盘中。
    persistent-superblock  1        设置是否要写入磁盘的superblock,设置成“1”
    表示写入,设置“0”不写入。
    Parity-algorithm   left-symmetric 指定用哪一种算法计算同位校验码,可是用的算法有:left-symmetric,left-asymmetric,right-symmetric,right-asymmetric4种。一般采用left-symmetric有最佳的存储效率。
    device            /dev/sda1  按实际的情况,指定第一个硬盘分区的名称
    raid-disk          0         设置上述的分区是次磁盘阵列所使用的第一个
    硬盘。编号“0”开始。
    device            /dev/sdb1  按实际情况,指定第二块硬盘分区的名称。
    raid-disk         1          设置
    device            /dev/sdb1  按实际情况,指定第三块硬盘分区的名称。
    raid-disk          2          设置
    修改完毕设置文件后依次执行创建磁盘阵列、启动、停止、查看状态等操作。
    在本章,我们只介绍RAID-Linear、RAID-1、RAID-5、最常用的磁盘阵列设置方法。
    至于其他种类的磁盘阵列设置方法,和上面讲述的设置方法类似,请读者自行设置。
    最后,我们比较一下上面三种磁盘阵列。
    磁盘阵列比较:
    磁盘空间:Linear模式最节省磁盘空间,磁盘阵列总空间是所有硬盘的和。
              RAID-1(磁盘映像)最浪费磁盘,因为每个硬盘存储的数据都相同。
              RAID-5将利用一个磁盘来存储同位校验码。因此磁盘容量为n-1个
              磁盘的容量。
    读写性能:Linear模式中,由于数据是依次存到硬盘上,此方式和一块硬盘运行
              并没有什么不同。此模式也不会提高读写效率。如果有多个人把数据
              放在不同的硬盘上,并且同时访问,那么就能提高磁盘读写效率。
              RAID-1由于每个硬盘都存储相同的数据,需要耗费较多的CPU时间。
              就会影响写入的数度。读数据,由于能从不同硬盘读出数据,因此理论上会有较快的数度。在RAID-5模式中,由于读写数据时,是将数据分成区块,在以区块为单          位同步存储到硬盘中,明显能提高存取速度。理论速率为n-1不过实际不会达到那么高的传输效率。
    容错能力:Linear磁盘阵列没有所有容错能力,如果其中一块硬盘出现故障,那么整个磁盘阵列的数据都会丢失。RAID-1有非常好的容错能力,因为每一块硬盘的数据都是相同的,所以当一块硬盘发生故障。系统仍然能继续工作。RAID-5磁盘阵列,当其中一块硬盘发生故障,此时能借助其他硬盘计算出正确地数据,只要不是2块或2块以上的硬盘同时发生故障,这是同位校验码也不足以恢复数据了,意味着数据无法挽救了。
  • 相关阅读:
    DML 语句
    sql分组和聚集
    mysql 子查询 EXISTS
    tomcat设置字符集解决乱码问题
    eclipse 自动下载源码 ;eclipse 上截图
    数据库连接池
    谷歌搜索屏蔽敏感词汇
    JS实现跨域cookie、js实现跨域攻击
    大数据面试题型
    eclipse中一些常用快捷键,与用vs.net软件进行c#编程时进行相同的快捷键的设置
  • 原文地址:https://www.cnblogs.com/BlogNetSpace/p/1590784.html
Copyright © 2011-2022 走看看