扫一扫
关注微信公众号

开源系统应用RAID保护企业数据安全
2012-04-12   linuxeden

数据安全是中小型企业信息安全工作的重中之重,企业数据的可用性、安全性成为工作的焦点问题。在保护企业数据的过程中,磁盘阵列技术(也称为RAID(Redundant Array of Inexpensive Disks))目前已经广泛的用于中小型企业,或做磁盘的容错和备份,或用作构建SAN存储等等,是保证数据安全的一项重要技术。并且,RAID的门类非常多,企业在如何选择合适的磁盘阵列的问题上需要做好决策。本文将选取RAID1、RAID-5这两种磁盘阵列的创建过程来介绍开源系统Linux下硬件磁盘阵列的使用。

一、了解磁盘阵列

RAID按照实现原理的不同分为不同的级别,不同的级别之间工作模式是有区别的,分别可以提供不同的速度,安全性和性价比。在业界,常见的几种RAID如下所示:

RAID0:又称为Stripe或Striping(条带),它代表了所有RAID级别中最高的存储性能。RAID0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。

RAID1:RAID1通过数据镜像实现数据冗余,在两对分离的磁盘上产生互为备份的数据。RAID1可以提高读的性能,当原始数据繁忙时,可直接从镜像拷贝中读取数据。RAID1是磁盘阵列中费用最高的,但提供了最高的数据可用率。当一个磁盘失效,系统可以自动地交换到镜像磁盘上,而不需要重组失效的数据。

RAID2:从概念上讲,RAID2同RAID3类似,两者都是将数据条块化分布于不同的硬盘上,条块单位为位或字节。然而RAID2使用称为“加重平均纠错码”的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID2技术实施更复杂。因此,在商业环境中很少使用。

RAID3:不同于RAID2,RAID3使用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据。如果奇偶盘失效,则不影响数据使用。RAID3对于大量的连续数据可提供很好的传输率,但对于随机数据,奇偶盘会成为写操作的瓶颈。

RAID4:同RAID2、RAID3一样,RAID4也同样将数据条块化并分布于不同的磁盘上,但条块单位为块或记录。RAID4使用一块磁盘作为奇偶校验盘,每次写操作都需要访问奇偶盘,成为写操作的瓶颈。

RAID5:RAID5没有单独指定的奇偶盘,而是交叉地存取数据及奇偶校验信息于所有磁盘上。在RAID5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID5更适合于小数据块,随机读写的数据。RAID3与RAID5相比,重要的区别在于RAID3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。在RAID5中有“写损失”现象发生,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。它可能是目前世界上最常见的RAID产品,最适合于事务性处理应用,如ERP、CRM和E-mail等。

RAID6:RAID6与RAID5相比,增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高。即使两块磁盘同时失效,也不会影响数据的使用。但需要分配给奇偶校验信息更大的磁盘空间,相对于RAID5有更大的“写损失”。RAID6的写性能非常差,较差的性能和复杂的实施,以及实现代价非常昂贵,使得RAID6很少使用。

RAID7:它有一个实时嵌入操作系统用作控制器,一个高速总线用于缓存。它提供快速的I/O,但是价格昂贵,应用性稍差。

RAID10:它由数据条阵列组成,其中每个条都是驱动器的一个RAID1阵列。它与RAID1的容错能力相同,面向需要高性能和冗余,但不需要高容量的数据库服务器。

RAID53:其实施情况同RAID0数据条阵列,其中,每一段都是一个RAID3阵列。它的冗余与容错能力同RAID3。这对需要具有高数据传输率的RAID3配置的IT系统有益,但是它价格昂贵、效率偏低。

二、根据具体情况使用磁盘阵列

表1对各类RAID产品的优缺点进行了详细说明,用户可以在实际的应用中选择使用:

表1 各类RAID产品比较

开源系统应用RAID保护企业数据安全

值得注意的是:上述介绍的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文档即可。

热词搜索:

上一篇:红帽的开源情结:将创新和奉献进行到底
下一篇:如何有效监控单位局域网、管理员工上网行为

分享到: 收藏