Linux下磁盘阵列raid

  1. 云栖社区>
  2. 博客>
  3. 正文

Linux下磁盘阵列raid

余二五 2017-11-23 16:58:00 浏览547
展开阅读全文

概述:磁盘阵列Redundant Arrays of Inexpensive Disks RAID,其中翻译为:容错式廉价磁盘阵列。RAID,可以将多个较小的磁盘整合成为一个逻辑上的较大容量的磁盘装置,而该大容量装置不仅仅值起到扩容作用,整个RAID由于选择的等级不同,而使得整合后的磁盘具有不同的功能。

RAID种类:软RAID、硬RAID

RAID等级:常见等级:
raid0:组合任意硬盘,每块硬盘的容量大小没有特定的要求,如果容量大小相同则效果会很好,需要的存储的数据按照chunk分片,平均的写进组成raid0的所有硬盘中,所以其读写速度大大的提高,这个raid0的有效容量是所有磁盘容量之和。


raid1:至少需要两块,每块硬盘的容量大小要一致,如果磁盘的荣来那个不同,则总容量将以最小的那一颗磁盘为主,其存储模式为将需要存储的数据分别写入这两块磁盘上,而其中一块磁盘就是另外一块磁盘的镜像,因此raid1实现了高效冗余,由于一条数据需要向两块磁盘写入因此其写入速率降低,读取速率提高,其有效容量是所有磁盘容量之和的一般。


raid4:至少三块,其存储模式是将一条数据按照chunk分为两片时,第一片存储在第一块磁盘,第二片存储在第二块磁盘上,然后计算出其校验码,每次的循环写入时将会将同位的校验码存储在第三块磁盘上,即这个阵列中允许坏掉1块磁盘,才能保证磁盘中数据不受损坏,读取和存储的速率都将提高,而且具有冗余效果,其有效容量是所有磁盘块数减1,既是其中一块不能存放数据,二十用了存放校验码的。


raid5:至少三块,该阵列是改善raid4校验盘的存放压力而产生的,由于所有的数据都存储在一块磁盘上所以可以说,其校验码没有冗余,而raid5则改善了此种存储方式,其存储机制是轮换存储校验码,其中一个磁盘存储其他磁盘数据的校验码,轮换的存储,因此任何一个磁盘损毁时都能够藉由其他的次哦按的校验码来重建原本的磁盘内的数据,但是当损毁数量大于等于两颗磁盘时,整组的数据就会收到损坏。


raid6:至少四块,由于使用了两颗磁盘来存储校验值,所以该阵列允许损毁两块磁盘。


raid10:将偶数块磁盘先组成raid1然后将所有的raid1在组成raid0,这样就同时具有了raid0和raid1的特性了。


raid50:先将磁盘先组成raid5然后将所有的raid5在组成raid0,这样就同时具有了高效读取和存储效率而且还具有高效的冗余效果,加强了数据的安全性。

实现:
硬raid的实现:
●由raid芯片固化在服务器的主板上,由硬件进行组建实现
●通过主机适配器,由PCI-e接口对硬件扩展实现

软raid的实现:
使用命令"mdadm"实现
该命令是模式化的命令:

mdadm
    -C:(Create)创建模式,创建新的raid设
        -n:创建raid时使用的磁盘个数(不包括空闲盘)
        -x:指定空闲磁盘的个数(当raid有磁盘损毁时,空

闲磁盘会立即顶上)

        -c:指定chunk大小,默认64k
        -l:指定raid的级别
#mdadm -C /dev/md1 -a yes -l 0 -n 2 -x 1 /dev/sda6 /dev/sda7
#mke2fs -j /dev/md1


    -F:(Follow or Monitor)监控模式,监控raid的运行状态
    -G:(Grow)扩展模式,增加raid的设备
    --add,--fail,--remove (Manage)管理模式,对raid的设备增加或删除   
#mdadm /dev/md2 --fail /dev/sda8
    
    -v  详细信息
    -s  扫描
    --detail | -D  显示其详细信息
#mdadm --detail /dev/md2
#mdadm -D /dev/md2


保存当前的所有raid信息,便于重新装配时方便
#mdadm -D -s > /etc/mdadm.conf    

    -A:(Assemble)装配模式,将其他的raid重新识别,使其生效
#mdadm -A /dev/md2    

    -S:停止raid工作
#mdadm -S /dev/md2




具体实现步骤:
注:这里以实现raid5为例,并且用扩展分区上的四个逻辑分区代表三块磁盘和一块空闲磁盘。


#echo "
n

+2G
n

+2G
n

+2G
n

+2G
t
5
fd
t
6
fd
t
7
fd
t
8
fd
w" | fdisk /dev/sdb
                        #####在dev/sda的扩展分区创建四个大小为2G的逻辑分区,每个分区号分别为5,6,7,8并且将其文件系统类型修改为fd。

#partprobe /dev/sdb                          #####通知内核重读分区

####################
注意现在千万不要一冲动直接格式化######################

#ls /dev                                     #####查看是否存在md0或md1等,以便于下面创建时重名,发生错误,redhat系列默认存在md0

#mdadm -C /dev/md1 -a yes -l 5 -n 3 -x 1 /dev/sdb{5,6,7,8}                    #####创建raid5,指定名字为/dev/md1,等级为raid5,磁盘数为3,空闲磁盘为1,分别是/dev/sdb{5,6,7,8}

#cat /proc/mdstat 
   #####显示当前内核所有启用的软raid的工作状态

#mke2fs -j /dev/md1    #####格式化该raid

#mount /dev/md1 /mnt    #####将/dev/md1挂载在/mnt下        



到此raid5就创建成功了,而且可以正常使用了!








本文转自 向阳草米奇 51CTO博客,原文链接:http://blog.51cto.com/grass51/794847,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
余二五
+ 关注