前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于软件的方式实现RAID(冗余磁盘阵列)技术

基于软件的方式实现RAID(冗余磁盘阵列)技术

作者头像
BGBiao
发布2018-02-26 13:13:44
1.5K0
发布2018-02-26 13:13:44
举报
文章被收录于专栏:容器云生态容器云生态

        在摘要部分已经对raid进行了简单的介绍,而在实际生产中主要用的便是软件RAID和硬件RAID,同时由于硬件RAID的价钱比较贵,因而,越来越多的人使用软件RAID来构建企业的一套存储方案。那么,使用RAID的最大好处是什么呢?哈哈,当然就是省钱了啊,同时RAID技术具有以下优点:

        提高传输速率。RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)。在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。

        通过数据校验提供容错功能。普通磁盘驱动器无法提供容错功能,如果不包括写在磁盘上的CRC(循环冗余校验)码的话。RAID容错是建立在每个磁盘驱动器的硬件容错功能之上的,所以它提供更高的安全性。在很多RAID模式中都有较为完备的相互校验/恢复的措施,甚至是直接相互的镜像备份,从而大大提高了RAID系统的容错度,提高了系统的稳定冗余性。

简单介绍以下常用的几种RAID模式:

RAID0:磁盘分条技术,效率最高至少一块硬盘。只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供冗余或错误修复能力,

实现交叉复制,总容量是所有磁盘的综合。但是缺点也很致命,即如果任何一块硬盘损坏,数据就很难恢复。

RAID1:磁盘镜像技术,最少两块硬盘。原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证 系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效 时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。安全性最高,但是磁盘利用率仅有50%,也就是说凉快硬盘,实际只有一块的容量。

RAID5:一种带校验的磁盘分条技术,为系统提供数据安全保障,最少需要三块硬盘,可以支持一块磁盘损坏。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。

                                        RAID5原理图

同时基于RAID0和RAID1的优缺点,经常会有人讲两个结合使用,成为RAID0+1或者RAID1+0(至少四块硬盘),既能满足磁盘的读写性能,又能保障数据的可靠性。在这里不多介绍,感兴趣的可以下去自己多多了解。

接下来将在试验环境下构建RAID5存储方案:

环境:Centos 6.5

软件环境:mdadm

#yum install mdadm -y

要求:利用四块分区做成RAID5          每个分区1G,最好每个分区一样大         使用一块分区作为spare disk,且大小与其他一样,作为备用磁盘          将此RAID5设备挂载到/mnt/raid下

1.使用fdisk工具准备5个1G的分区

#fdisk -cu /dev/sdb

# cat /proc/partitions

  8       21    1048576 sdb5    8       22    1048576 sdb6    8       23    1048576 sdb7    8       24    1048576 sdb8    8       25    1048576 sdb9

2.创建raid磁盘阵列

 # mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sdb{5,6,7,8,9}

--create表示创建raid   --auto 决定创建后面接的软件磁盘阵列设备/dev/md0  --leavel表示raid的等级,这里使用raid5

--raid-devices表示使用的磁盘个数  --spare-devices表示使用备用磁盘个数 并且指定那些磁盘分区

3.查看创建好的设备

# mdadm --detail /dev/md0                         查看raid设备信息 /dev/md0:                                                    设备名称         Version : 1.2   Creation Time : Fri Jul 18 03:41:56 2014      创建日期      Raid Level : raid5                                        raid等级      Array Size : 3142656 (3.00 GiB 3.22 GB)    可用容量   Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)    每个磁盘的容量    Raid Devices : 4                                              四块raid设备   Total Devices : 5                                                总共五块设备(一块在做备份用哦)     Persistence : Superblock is persistent     Update Time : Fri Jul 18 03:42:04 2014           State : clean  Active Devices : 4 Working Devices : 5  Failed Devices : 0   Spare Devices : 1                                            一块作为备份磁盘          Layout : left-symmetric      Chunk Size : 512K            Name : node1.example.com:0  (local to host node1.example.com)            UUID : 69e94971:195da1d1:ac94ce25:d330e237        raid的uuid          Events : 18     Number   Major   Minor   RaidDevice State        0       8       21        0      active sync   /dev/sdb5        1       8       22        1      active sync   /dev/sdb6        2       8       23        2      active sync   /dev/sdb7        5       8       24        3      active sync   /dev/sdb8        4       8       25        -      spare   /dev/sdb9

从上面的信息可以看出来,激活的磁盘为/dev/sdb5-8.  /dev/sdb9为备份磁盘

# cat /proc/mdstat         查看raid状态信息 Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb8[5] sdb9[4](S) sdb7[2] sdb6[1] sdb5[0]       3142656 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU] sdb9后面的s表示此磁盘用作spare 第二行表明有3142656个block,每个block单位为1k。写入磁盘的小区块(chunk)大小为512k   [m/n]表示需要m个磁盘,n个盘正常运行   U代表正常,-代表不正常

4.挂载使用raid

#mkfs.ext4 /dev/md0 #mkdir /mnt/raid #mount /dev/md0 /mnt/raid/ raid5设备/dev/md0现在可以正式使用咯!

RAID的错误救援模式:

试想,生产环境中谁也无法预料硬盘的损坏,如果突然损坏,我们应该怎么办呢?不用着急,接下来继续讲讲!

假如/dev/sdb8磁盘坏了,查看磁盘阵列信息,/dev/sdb9备用磁盘会自动替换 [root@node1 ~]# mdadm --manage /dev/md0 --fail /dev/sdb8          模拟磁盘错误 mdadm: set /dev/sdb8 faulty in /dev/md0 [root@node1 ~]# mdadm --detail /dev/md0                                         查看raid设备发现备用/dev/sdb9自动替换工作了 。。。。。。。。。。。。。。。。省略     Update Time : Fri Jul 18 03:56:19 2014           State : clean  Active Devices : 4 Working Devices : 4                                                 坏了一个磁盘,但是工作设备仍然4个  Failed Devices : 1                                                    显示一个设备坏了哦   Spare Devices : 0     Number   Major   Minor   RaidDevice State        0       8       21        0      active sync   /dev/sdb5        1       8       22        1      active sync   /dev/sdb6        2       8       23        2      active sync   /dev/sdb7        4       8       25        3      active sync   /dev/sdb9        5       8       24        -      faulty spare   /dev/sdb8

那么为了保证真个raid存储的安全性,我们需要重新新建分区,作为新的spare分区。

仍然使用fdisk工具创建1G分区/dev/sdb10

1.增加一个磁盘设备,将损坏的设备移除,就可以直接拔掉硬盘了(注意,要支持热插拔哦)

[root@node1 ~]# mdadm --manage /dev/md0  --add /dev/sdb10 --remove /dev/sdb8 mdadm: added /dev/sdb10 mdadm: hot removed /dev/sdb8 from /dev/md0 重新查看raid设备信息,发现/dev/sdb10变成了备用磁盘了,/dev/sdb8删除了

现在,我们又能保障我们的RAID设备健壮的运行了。

2.设置RAID设备开机自动挂载

#mdadm --detail /dev/md0 | grep UUID            查看/dev/md0磁盘设备的UUID #vim /etc/mdadm.conf   

(ARRAY /dev/md0  UUID=69e94971:195da1d1:ac94ce25:d330e237) #vim /etc/fstab      

(/dev/md0  /mnt/raid ext4 defaults  1 2 ) #mount -a         重新挂载分区

这样,一个RAID5设备就完全构建好了!

注意:文章内容使用虚拟环境分区来模拟真实硬盘构建RAID,因此和生产环境有一定出入,希望大家能够适当借鉴。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档