作者:陈伶 姜朋慧
当系统管理员被要求提供一种可靠且冗余的方式来保护服务器上的关键数据时,“RAID”往往是第一个出现在管理员脑海的词汇。事实上,RAID只是整个数据可靠性体系结构的一部分。本文将要讲述Linux下的RAID和一些辅助存储技术。
RAID(Redundant Array of Inexpensive Disks,廉价冗余磁盘阵列)是一种将信息扩展到磁盘阵列中多块硬盘的技术。该技术为了构建数据的冗余性、低延迟和高带宽,以及发生磁盘灾难时的可恢复性等,总共定义了六种不同类型的RAID级别,比如,数据分割(RAID 0)和数据镜像(RAID 1)等。
数据丢失的各种原因
一般用户希望使用RAID来防止数据丢失。其实RAID只能尽量帮助避免数据丢失,却不能完全防止。下面先来看一看造成数据丢失或损坏的各种原因。
1.无意或有意地数据删除
数据丢失最主要的原因之一是文件被有意或无意地删除了。比如,黑客进入系统,删除有用文件;有情绪的员工恶意清除文件;或者是用户本人认为哪些文件不再需要而将它们删掉。RAID无法恢复由于类似原因所丢失的数据。为了减轻这些损失,需要定期将数据备份到那些在火灾、盗窃或其它意外发生时都能够幸存的媒介上。
2.磁盘驱动器完全失效
计算机被摔坏,或者磁盘驱动器老化等情况有可能导致磁盘驱动器完全失效。另一种典型的情况是读写头划伤磁盘盘片,造成盘片上的内容不能读取。静电有时也能导致同样的症状。如果磁盘驱动器只有一个盘片,则意味着数据将完全丢失。
RAID通过将数据以一种冗余的方式到扩展到多块磁盘上,可以确保任意一块磁盘的完全失效都不会引起实际的数据丢失。不过,更常见的磁盘失效方式是慢速的坏块积累,导致磁盘扇区不可读。RAID对此种数据破坏无能为力。这种情况下面会详细讨论。
3.掉电导致数据丢失
许多新手认为通过启动一个密集访问磁盘任务,然后在它运行时拔掉电源,可以用来测试RAID的有效性。其实,RAID不能防止掉电造成的数据丢失,更谈不上恢复所丢失的数据。这种数据破坏或丢失可以使用日志(Journaling)文件系统或日志数据库服务器来避免。
4.磁盘驱动器的坏块
磁盘驱动器上缓慢但持久的存储块丢失是造成磁盘驱动器失效的常见形式。导致存储块丢失主要有以下几种因素:
◆ 显微镜下可见的尘埃粘在盘片上;
◆ 磁头敲击盘片时留下的沟痕;
◆ 磁介质在制造时做得太薄;
◆ 与磁头长期接触导致盘片老化等。
随着坏块的积累,数据块就会出错。硬盘驱动器检测到错误块后,会自动从磁盘其它地方找一块新的数据块分配,直到有一天硬盘上的坏块查找表被填满,Linux接近停滞状态,同时吐出“status=0x51 { DriveReady SeekComplete UnrecoverableError }”信息。
尽管这可能是最常见的磁盘出错情况,但几乎没有一个解决方案能处理好这一问题,RAID当然也不能。
新新 于 2005-09-14 15:05:50发表:
4.诊断和监视工具
硬件问题的诊断及监视工具对系统管理员来说非常必要,Linux下的诊断和监视工具主要有以下几种:
◆ smartmontools smartmontools安装包能和内嵌在现代IDE、ATA或SCSI-3磁盘上的S.M.A.R.T.系统一起工作。该工具能汇报各种磁盘驱动器的健康统计数据,并且通过smartd精灵进程,持续地将事件日志写到syslog文件中。
◆ scsirastools scsirastools项目用于提高Linux软件RAID 1配置下常用驱动器的可靠性和可用性。其项目主页是http://scsirastools.sourceforge.net/。该安装包还包含一些低级的SCSI工具,比如,用于磁盘固件的sgdskfl、用于得到和设置模式页的sgmode、用于读取增长缺陷列表的sgdefects,以及用于执行格式化和其它测试功能的sgdiag。该项目的其它努力致力于让各种通用硬件RAID适配器及其驱动器能够在Linux下工作。
◆ sg3_utils sg3_utils提供一套用来使用Linux SCSI Genric设备驱动器的工具。这些工具包括传统dd命令的“sg”变种、扫描和匹配SCSI总线的工具、发布低级SCSI命令的工具,定时测试的工具,以及一些例子资源和杂项。
◆ SCU SCU实现了对SCSI外设日常维护和诊断的SCSI命令。它的功能包括格式化、扫描、重新分配坏块、下载新固件,以及执行诊断和获得性能信息等。
新新 于 2005-09-14 15:05:21发表:
Highpoint
Highpoint公司的Rocket RAID 404控制器其支持的允许同时加载4根IDE同轴电缆。该产品节约了PCI插槽,并且IDE硬盘比SCSI硬盘也要便宜得多。Rocket RAID BIOS也很有特色,它允许多个控制器建立硬件RAID阵列,比如,使用3个控制器就能建立一个13块盘的硬件RAID阵列。
MegaRAID
MegaRAID公司提供的MegaRAID i4控制器能支持4个连接器,每个控制器可以支持8块IDE硬盘。该产品支持RAID 5及热交换和热备份能力。
ICP Vortex
ICP Vortex公司的磁盘阵列控制器驱动是Linux 2.0.x和Linux 2.2.x内核的标准部分,因此大多数引导磁盘都能识别ICP控制器。另外,ICP Vortex公司还提供GDT Monitor管理工具,用来监听传输速率、设置硬盘和控制器参数,以及热交换和重建错误驱动器。
DPT DPT公司(Distributed Processing Technology Inc.)提供SmartCache I/III/IV和 SmartRAID I/III/IV控制器。该公司产品必须使用EATA-DMA驱动,该驱动是标准Linux内核的一部分。
除了以上介绍的这些厂商之外,还有很多厂商提供支持Linux的硬件RAID控制器,比如,IBM、BusLogic/Mylex、Syred和BigStorage等公司。其中,BigStorage公司提供了一系列为Linux定制的存储产品。
2.外置RAID厂商很多外置RAID厂商支持Linux。值得注意的是,一些外置控制器不是真正独立的,它们需要安装到标准的驱动器机架上,从系统的供电中得到电源。下面来看一看相关的厂商。
StorComp StorComp公司是RAID方面的先驱,它能提供复杂、高级的系统,并且正专注于SAN体系结构。该公司的“虚拟存储结构”允许多个CPU通过SCSI接口访问磁盘。
Arco Computer Arco Computer公司为RAID 1提供了DupliDisk EIDE-to-EIDE转换器,并且包含三个版本,分别适合ISA插槽、IDE插槽和驱动器机架。
DILOG DILOG公司提供2XFR SCSI-to-SCSI RAID 0产品。该产品包括一个3.5英寸驱动器机架,并通过了IBM SIT实验室的Linux互操作性认证。
其它厂商还有专注于大型阵列的Dynamic Network Factory公司,以及提供单独SCSI连接模块的LAND-5公司(http://www.land-5.com/)。
3.磁盘阵列管理软件
大多数磁盘控制器可以通过重启机器,切换到板内BIOS或DOS应用上来重新配置、交换或重建驱动器。然而,对多数系统来说重启太浪费,并且有时不可行。
采用磁盘配置和管理软件可以解决这些问题。这些软件除了汇报各种磁盘统计数据,还会在硬件出现问题时发出告警,并且允许失败的驱动器被禁止、换出或重建等。所有这一切都在不让阵列离线,并且没有中断任何服务器功能的情况下实现。
上面提到的大多数硬件厂商都提供支持Linux的磁盘阵列管理软件,比如,ICP Vortex公司的GDTMonitor管理工具、BusLogic公司的Global Array Manager,以及StorComp公司的SNMP MIB软件。
新新 于 2005-09-14 15:04:46发表:
相关数据存储保护技术
除RAID解决方案外,还有多种相关的数据存储技术。它们能够提供各种数量级的数据冗余、容错和高可靠性等功能,并且能和RAID一起使用,作为整个系统数据保护策略的一部分。
1.NAS和SAN
NAS(网络附加存储)和SAN(存储区域网络)都是用于大型设备上的高端存储解决方案。NAS 是指Unix和Windows客户端能够挂载上的NFS和Samba服务器等。SAN概念上等同于长达数千英尺硬盘驱动器电缆的设计方案。通过SAN,主机所连接的设备看起来就是普通的硬盘驱动器,不管电缆是光纤或以太网。
2.日志
日志通常可以提供两种保护方式:元数据和用户数据。元数据是指文件名、文件所有者、创建时间和权限等;用户数据是指实际的文件内容。通过对元数据记录日志,能够保证系统快速启动的时间,因为该日志避免了启动时长时间的一致性检查。然而,仅对元数据记录日志不能防止文件内容被破坏。
日志文件系统保证了在系统故障后能够很快地在线恢复,因此,它是构建可靠且可用的存储解决方案的必需部分。Linux下的日志文件系统主要包括ReiserFS(缺省内核的一部分)、ext3和JFS等。这些系统有不同的性能指标,在功能和特性上也差别显著,对它们进行比较的文章有许多,这里不再详述。
3.LVM和EVMS
Linux下可以使用LVM(逻辑分卷管理器)和EVMS(企业级分卷管理系统)对磁盘进行分卷管理,然后配合RAID增加存储管理的灵活性和可靠性。其中,EVMS是一个较高级的解决方案,它包括了LVM和MD提供的超级功能。
(1)LVM
Linux LVM通过将磁盘集合(物理卷)分组到一个缓冲池(卷组)中,实现了对物理磁盘的抽象。它使得管理员更容易管理大型文件系统和磁盘阵列,不用重启系统或进入维护/单机模式,就能动态地增长、收缩和来回移动磁盘空间。
简而言之,LVM是文件系统安装点到硬盘驱动设备的抽象层。其好处是在不影响系统和其它用户的情况下,即可实现硬盘驱动器的增加和删除,或者将数据移动到另一块硬盘上。注意,如果只有一两块磁盘,LVM的开销可能超出使用它所获得的管理收益。
LVM和软件RAID可以一起使用,但在这种情况下,LVM将失去动态增加或删除硬盘驱动器的好处。RAID +LVM的另一个严重的缺陷是,软件RAID和LVM都没有坏快替换机制。
(2)EVMS
EVMS是一个更灵活的工具,从低级的RAID和LVM功能到高级的用于管理分区、RAID阵列、逻辑卷和文件系统的命令行和图形工具,EVMS可以提供比单独的RAID更加优秀和完善的“一条龙”存储管理解决方案。特别值得一提的是,EVMS提供坏块替换机制和快照功能。
相关工具和厂商
1.硬件RAID控制器厂商
硬件控制器是一种PCI或ISA卡,它通过I/O总线在CPU和磁盘驱动器之间进行协调。需要注意的是,有一些设备只从PCI/ISA总线上获得电源,不必使用任何信号引脚,也不需要特殊的设备驱动程序。下面仅列举使用PCI/ISA总线实现传输数据的RAID控制卡产品及厂商。
新新 于 2005-09-14 15:04:07发表:
5.常规的系统破坏
操作系统、数据库服务器或其它应用程序的漏洞都可能形成错误的数据块。Windows用户对于系统逐渐退化,并完全进入混乱的情况应该非常熟悉。除了远离Windows(特别是Windows 95/98),并且避免让关键服务运行在Beta版软件上之外,用户对此无能为力。即使常规的数据备份也不能避免这种破坏。
此外,硬件故障、电缆连接,甚至环境噪声等问题也会引起数据破坏。
Linux RAID解决方案
对于Linux用户,有三种典型的RAID解决方案,它们分别是外置DASD模块、RAID磁盘控制器和软件RAID。下面分别进行阐述。
1.外置DASD解决方案
DASD(直接访问存储器)是一些分离的模块,它与电源、机柜和底盘等一起为用户提供强大的RAID解决方案。外置解决方案通常提供最大程度的RAID级别选择,比如RAID 0/1/3/4/5,以及这些级别的组合。大多数DASD提供热交换磁盘架,使得不必断电就可以删除或替换坏的磁盘驱动器。
它还提供冗余电源供应,使得在一路电源失效的情况下,其它模块仍旧能正常工作。对Linux来说,DASD就像一个SCSI设备。通过Y-SCSI电缆,DASD能够被连接到几台计算机上。如果一台计算机不工作,另一台能够接替前者的工作,实现DASD的高可靠性。DASD技术的高端被称为SAN(存储区域网络)。
2.RAID磁盘控制器
磁盘控制器是指插到ISA/EISA/PCI总线上的适配卡。与普通的磁盘控制器不同,RAID控制器只实现卡本身的RAID。同板外模块类似,它能够放到PC机的机箱里。较常见的是一种小型的、类似磁盘的模块,它能装到标准3.5英寸的驱动器架上,并且跟普通磁盘一样接上电源线即可工作。
还有一种RAID磁盘控制器可以插到PCI、ISA或MicroChannel槽上,电源通过这些槽获得。对操作系统来说,RAID磁盘控制器就像普通的硬盘,不需要任何特殊的驱动。
RAID磁盘控制器的主要优点是价格低、可靠性高、易使用,并且性能也不错。但是因为尺寸和电缆的限制,该控制器通常只支持RAID 0和RAID 1,缺少对RAID 5(热插拔和双端操作的能力)的支持。
3.软件RAID
软件RAID可以在内核磁盘(块设备)代码段实现各种RAID级别。它可能是最廉价的RAID解决方案----不需要昂贵的磁盘控制器卡和热交换底盘,仅仅使用一些便宜的IDE或SCSI磁盘即可。目前,由于CPU速度的极大提高,除了负载非常重的大型系统外,软件RAID的性能几乎能够和硬件RAID相抗衡。
当今的软件RAID变得越来越快速,功能越来越丰富、可靠。相对来说,低端硬件解决方案已经没有意义。Linux下的软件RAID主要通过MD驱动器和EVMS驱动器来实现。
MD驱动器的功能包括如下几个方面:
◆ RAID 0 数据分割、镜像和奇偶检验支持;
◆ 自动热重构 在系统运行的情况下,重建由于掉电或替换磁盘导致的阵列不一致;
◆ 热备份 如果一块硬盘失效,辅助硬盘即刻能够被使用;
◆ 热交换 在运行阵列上,磁盘能被替换。
另外,MD不能处理坏块重分配。