二、根据具体情况使用磁盘阵列
表1对各类RAID产品的优缺点进行了详细说明,用户可以在实际的应用中选择使用:
表1 各类RAID产品比较
RAID级别 | 可靠性 | 性能 | 使用成本 |
RAID0 | 差,任何成员磁盘失效将导致数据丢失 | 读写性能优于单个磁盘 | 低,没有其他额外开销 |
RAID1 | 镜像冗余,可靠性高。在某些情况下具有多磁盘容错能力 | 好,无需作校验计算 | 成本高,需要50%左右的额外开销 |
RAID2 | 可靠性很高。在某些情况下具有多磁盘容错能力 | 使用位操作,性能较差 | 成本很高,没有商业产品 |
RAID3 | 可靠性较高,有单磁盘容错能力 | 并行访问,读写性能优于单个磁盘 | 额外开销小,只需要一个校验盘 |
RAID4
| 可靠性较高,有单磁盘容错能力 | 读操作优于单个磁盘,写操作及扩展性受校验盘瓶颈限制, | 额外开销小,也只需要一个校验盘 |
可靠性较高,有单磁盘容错能力 | 读操作优于单个磁盘,写操作优于RAID4 | 额外开销小,也只需要一个校验盘 | |
RAID6 | 可靠性很高,有多磁盘容错能力 | 多重校验和控制其算法复杂影响系统性能 | 额外开销高,需多个校验盘,实现成本高 |
RAID7 | 可靠性很高,有多磁盘容错能力 | 好,实现复杂 | 额外开销高,实现成本大 |
RAID10 | 镜像冗余,可靠性高。在某些情况下具有多磁盘容错能力 | 性能高 | 额外开销高,实现成本大 |
RAID53 | 可靠性较高,有单磁盘容错能力 | 性能高 | 额外开销大,价格昂贵 |
值得注意的是:上述介绍的0,1,2等RAID类型并不代表技术的高低(比如RAID2并没有商业产品,相对于RAID1说较差),而只代表不同的技术型号。所以在实际应用中选择某种RAID产品需要根据应用环境和资金等情况而定。
实现RAID可以采用两种方法,硬RAID和软RAID:
硬RAID:采用专门的控制器来完成,也就是常说的RAID卡;通过磁盘阵列控制卡(RAID Controller Card)提供磁盘阵列的功能。要使用硬件的磁盘阵列,必须采购支持Linux的磁盘阵列控制卡,一般需要正确安装驱动程序,才能让Linux系统正常使用设备。
软RAID:采用软件的方法来实现。用户无须安装额外的硬设备,只要保证Linux内核有支持,就可以直接使用。
由于硬件磁盘阵列的功能是由磁盘阵列控制卡提供计算工作的,因而效率大大高于由Linux内核的软件磁盘阵列;但硬件磁盘阵列得购买额外的设备,因此其使用成本比软件磁盘阵列高得多。过去RAID一直是高端服务器才应用的设备,与高档SCSI硬盘配合使用。SCSI RAID稳定性好、速度快,但SCSI硬盘和SCSI接口RAID卡价格高昂,往往只在高档服务器上使用。近来随着技术的发展和产品成本的不断下降,IDE硬盘和SATA硬盘的性能都有了很大提升,加之RAID芯片的普及,使得RAID技术也广泛应用到了IDE硬盘和SATA硬盘上。
三、开源系统Linux下构建磁盘阵列的具体方法
目前,Linux能够较好地支持RAID0、RAID1、RAID4、RAID5这四种磁盘阵列模式。在4种模式中,RAID4和RAID5运行方式较为接近。
1.创建RAID1磁盘阵列
RAID1磁盘阵列的基本工作方式是通过数据镜像实现数据冗余,在两对分离的磁盘上产生互为备份的数据,也就是说每一块磁盘所存储的数据是完全相同的。所以,要创建RAID1磁盘阵列,至少需要2块硬盘,每一块硬盘最好大小一致。这是因为每一个硬盘存储相同的数据,因此有一个硬盘比其他的容量大时,磁盘阵列也无法使用多出来的硬盘空间。本例采用2个硬盘的分区(hda1和hdb1)来创建RAID1类型磁盘阵列。
基本步骤如下:
1)编辑磁盘阵列的配置文件/etc/raidtab如下:
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
persistent-superblock 1
device /dev/hda1
raid-disk 0
device /dev/sdb1
raid-disk 1
上述文件中每项的含义如下所示:
raiddev:指定磁盘阵列的设备名称;
raid-level:指定采用的RAID模式,例中为RAID1;
nr-raid-disks:指定磁盘阵列的硬盘个数,例中RAID为2个硬盘组成;
nr-spare-disks:指定磁盘阵列备用磁盘数目,例中为0;
chunk-size:指定数据写入磁盘阵列时,每个写入区块的大小,其单位为KB,且大小必须为2的幂次方。一般说来,此设置值的大小会影响磁盘阵列的读写效率,不过理想的设置值,则随着计算机的使用情况而异,所以并无绝对的结果;
persistent-superblock:配置是否要写入磁盘的超级块(superblock),配置成“1”表示写入,配置“0”不写入;
device /dev/hda1:根据实际情况,指定第一个硬盘分区的名称,此处第一个硬盘分区为hda1;
raid-disk 0:配置上述的分区是此磁盘阵列所使用的第一个硬盘,编号从0开始;
device /dev/hdb1:同上,按实际情况,指定第二块硬盘分区的名称;
raid-disk 1:配置上述的分区是此磁盘阵列所使用的第一个硬盘,编号为1。
2)格式化并加载磁盘阵列,命令如下所示:
//建立磁盘
#mkraid /dev/md0
//使用ext3文件系统格式化
#mke3fs /dev/md0
//将md0磁盘阵列加载到目录/mnt/md0下
#mount -t ext3 /dev/md0 mnt/md0
3)启动磁盘阵列
#raidstart /dev/md0
4)使用过程中查看磁盘阵列的使用状态
#more /proc/mdstat
5)停止和卸载磁盘阵列
//首先停止磁盘阵列
#raidstop /dev/md0
//然后卸下装载的磁盘阵列
#umount /dev/md0
6)删除磁盘阵列:首先使用第5)步停止磁盘阵列,然后删除/etc/raidtab文档即可。
2.创建RAID5磁盘阵列
上面介绍了RAID0的创建方式,下面介绍如何创建RAID5磁盘阵列。有了上面的基础后,对于RAID5的创建也就不那么困难了。简单地说,RAID5是在RAID0和RAI1中取得折衷,既具备容错能力,也不会浪费太多硬盘空间,并有助于提高磁盘的I/O性能。由于RAID5需要存储同位校验码,因此要创建此模式的磁盘阵列,至少需要3块或以上的硬盘。因此,本例以hda、hdb、hdc三块磁盘的分区(hda1、hdb1和hdc1)来组成RAID5磁盘。当然,也可以指定三块磁盘的其他分区,这个可以根据实际磁盘分区的使用情况选定,并不是固定的。
基本操作步骤如下:
1)编辑磁盘阵列的配置文件/etc/raidtab如下:
raiddev /dev/md0
raid-level 5
nr-raid-disks 3
nr-spare-disks 0
chunk-size 32
persistent-superblock 1
parity-algorithm left-symmetric
device /dev/hda1
raid-disk 0
device /dev/hdb1
raid-disk 1
device /dev/hdc1
raid-disk 2
同理,上述文件中每项的含义如下所示:
raiddev:指定磁盘阵列名称;
raid-level:指定使用的RAID5磁盘阵列;
nr-raid-disks:此磁盘阵列由3个硬盘所组成;
nr-spare-disks :指定/此磁盘阵列的备用硬盘数目;
chunk-size:当数据要写入磁盘阵列时,每个写入的大小(单位为KB,且必须为2的幂次方)。此设置值的大小,会影响磁盘阵列的读写效率,不过理想的设置值,则按每台计算机的使用情况而异,并无绝对的结果;
persistent-superblock:设置是否要写入磁盘的superblock:设成1表示写入,否则设成0。若将此参数设成1,则当磁盘阵列中有硬盘损坏时,系统仍可继续启动;若有备用硬盘,也会同时启用备用硬盘;
parity-algorithm:指定要用哪一种算法计算同位校验吗,可使用的算法有left-symmetric、left-asymmetric、right-symmetric及right-asymmetric等4种。一般采用left-symmetric能有最好的存取效率;
device /dev/hda1:指定所有使用的第1个硬盘分区名称;
raid-disk 0:设置上述的分区是此磁盘阵列所使用的第1个硬盘(编号由0开始);
device /dev/hdb1:指定所要使用的第2个硬盘分区名称;
raid-disk 1:设置上述的分区是此磁盘阵列所使用的第2个硬盘;
device /dev/hdc1 :指定所要使用的第3个硬盘分区名称;
raid-disk 2:设置上述的分区是此磁盘阵列所使用的第3个硬盘。
2)格式化并加载磁盘阵列,命令如下所示:
//建立磁盘
#mkraid /dev/md0
//使用ext3文件系统格式化
#mke3fs /dev/md0
//将md0磁盘阵列加载到目录/mnt/md0下
#mount -t ext3 /dev/md0 mnt/md0
3)启动磁盘阵列
#raidstart /dev/md0
4)使用过程中查看磁盘阵列的使用状态
#more /proc/mdstat
5)停止和卸载磁盘阵列
//首先停止磁盘阵列
#raidstop /dev/md0
//然后卸下装载的磁盘阵列
#umount /dev/md0
6)删除磁盘阵列:首先使用第5)步停止磁盘阵列,然后删除/etc/raidtab文档即可。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
RAID类型详解
RAID可以实现更好的存储性能,带来更高的可用性。市场上有许多种不同的RAID类型,阅读本篇RAID各类型的详解有助于了解其最适合的场景领域。
-
无硬件的软件复制
在灾难恢复解决方案中,数据复制是其中一个关键的影响因子。基于磁盘阵列的数据复制一直以来大行其道。然而,如今应用部署方式的改变意味着可以从另一方面达成数据保护。
-
并非所有的闪存阵列都是相同的
全闪存阵列都有一个共同的特征——速度飞快——但是除了速度以外,还有很多其他的要素需要考虑。
-
让数据迁移变得轻松
磁盘阵列间的数据移动一直以来都是很困难的工作,但是新的技术和技巧让数据迁移变的容易了。