在摘要部分已经对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,因此和生产环境有一定出入,希望大家能够适当借鉴。