磁盘阵列详解配置
磁盘阵列磁盘阵列(Disk Array)(Disk Array) 1.为什么需要磁盘阵列 如何增加磁盘的存取(access)速度,如何防止数据因磁盘的故障而失落及如何有效的利用磁盘空间,一直是 电脑专业人员和用户的困扰;而大容量磁盘的价格非常昂贵,对用户形成很大的负担。磁盘阵列技术的产生 一举解决了这些问题。 1 过去十年来,CPU的处理速度增加了五十倍有多,内存(memory)的存取速度亦大幅增加,而数据储存装置--主 要是磁盘(hard disk)--的存取速度只增加了三、四倍,形成电脑系统的瓶颈,拉低了电脑系统的整体性能 (throughput),若不能有效的提升磁盘的存取速度,CPU、 内存及磁盘间的不平衡将使 CPU 及内存的改进形成 浪费。 目前改进磁盘存取速度的的方式主要有两种。一是磁盘快取控制(disk cache controller),它将从磁盘读 取的数据存在快取内存(cache memory)中以减少磁盘存取的次数,数据的读写都在快取内存中进行,大幅增 加存取的速度,如要读取的数据不在快取内存中,或要写数据到磁盘时,才做磁盘的存取动作。 这种方式在单 工环境(single-tasking environment)如 DOS 之下,对大量数据的存取有很好的性能(量小且频繁的存取则 不然),但在多工(multi-tasking)环境之下(因为要不停的作数据交换(swapping)的动作)或数据库 (database)的存取(因为每一记录都很小)就不能显示其性能。这种方式没有任何安全保障。 其二是使用磁 盘阵列的技术。磁盘阵列是把多个磁盘组成一个阵列,当作单一磁盘使用,它将数据以分段(striping)的方 式储存在不同的磁盘中,存取数据时,阵列中的相关磁盘一起动作,大幅减低数据的存取时间,同时有更佳的 空间利用率。磁盘阵列所利用的不同的技术,称为 RAID level,不同的 level 针对不同的系统及应用,以解 决数据安全的问题。 一般高性能的磁盘阵列都是以硬件的形式来达成,进一步的把磁盘快取控制及磁盘阵列结合在一个控制器 (RAID controller)•或控制卡上,针对不同的用户解决人们对磁盘输出入系统的四大要求: (1)增加存取速度, (2)容错(fault tolerance),即安全性 (3)有效的利用磁盘空间; (4)尽量的平衡 CPU,内存及磁盘的性能差异,提高电脑的整体工作性能。 2.磁盘阵列原理 磁盘阵列中针对不同的应用使用的不同技术,称为 RAID level, RAID 是 Redundant Array of Inexpensive Disks 的缩写,而每一 level 代表一种技术,目前业界公认的标准是 RAID 0~RAID 5。这个 level 并不代表技 术的高低,level 5 并不高于 level 3,level 1 也不低过 level 4,至于要选择那一种 RAID level 的产品, 纯视用户的操作环境(operating environment)及应用(application)而定,与 level 的高低没有必然的关 系。RAID 0 及 RAID 1 适用于 PC 及 PC 相关的系统如小型的网络服务器(network server)及需要高磁盘容 量与快速磁盘存取的工作站等,因为比较便宜,但因一般人对磁盘阵列不了解,没有看到磁盘阵列对他们价 值,市场尚未打开;RAID 2 及 RAID 3 适用于大型电脑及影像、CAD/CAM 等处理;RAID 5 多用于 OLTP,因有金 融机构及大型数据处理中心的迫切需要,故使用较多而较有名气,但也因此形成很多人对磁盘阵列的误解, 以为磁盘阵列非要 RAID 5 不可;RAID 4 较少使用,因为两者有其共同之处,而 RAID 4 有其先天的限制。其 他如 RAID 6,RAID 7,乃至 RAID 10 等,都是厂商各做各的,并无一致的标准,在此不作说明。介绍各个 RAID level 之前,先看看形成磁盘阵列的两个基本技术: 译为磁盘延伸,能确切的表示 disk spanning 这种技术的含义。如下图所示,DFTraid 磁盘阵列控制器,联接 了四个磁盘: 这四个磁盘形成一个阵列(array),而磁盘阵列的控制器(RAID controller)是将此四个磁盘视为单一的磁 盘,如 DOS 环境下的 C:盘。这是 disk spanning 的意义,因为把小容量的磁盘延伸为大容量的单一磁盘,用 户不必规划数据在各磁盘的分布,而且提高了磁盘空间的使用率。DFTraid 的 SCSI 磁盘阵列更可连接几十 个磁盘,形成数十 GB 到数百 GB 的阵列,使磁盘容量几乎可作无限的延伸;而各个磁盘一起作取存的动作, 比单一磁盘更为快捷。很明显的,有此阵列的形成而产生 RAID 的各种技术。我们也可从上图看出 inexpensive(便宜)的意义,因为四个 250MBbytes 的磁盘比一个 1GBytes 的磁盘要便宜,尤其以前大磁盘的 价格非常昴贵,但在磁盘越来越便宜的今天,inexpensive已非磁盘阵列的重点,虽然对于需要大磁盘容量的 系统,仍是考虑的要点。 因为磁盘阵列是将同一阵列的多个磁盘视为单一的虚拟磁盘(virtual disk),所以其数据是以分段 (block or segment)的方式顺序存放在磁盘阵列中,如下图: 磁盘 0 A0-A1 B0-B1 C0-C1 D0-D1 磁盘 1 A2-A3 磁盘 2 A4-A5 磁盘 3 A6-A7 B2-B3 C2-C3 D2-D3 B4-B5 C4-C5 D4-C5 B6-B7 C6-C7 D6-D7 数据按需要分段,从第一个磁盘开始放,放到最後一个磁盘再回到第一个磁盘放起,直到数据分布完毕。 至于 分段的大小视系统而定,有的系统或以 1KB 最有效率,或以 4KB,或以 6KB,甚至是 4MB 或 8MB 的,但除非数据 小于一个扇区(sector,即 521bytes),否则其分段应是 512byte 的倍数。因为磁盘的读写是以一个扇区为单 位,若数据小于 512bytes,系统读取该扇区后,还要做组合或分组(视读或写而定)的动作,浪费时间。从上图 我们可以看出,数据以分段于在不同的磁盘,整个阵列的各个磁盘可同时作读写,故数据分段使数据的存取 有最好的效率,理论上本来读一个包含四个分段的数据所需要的时间约=(磁盘的 access time +数据的 transfer time)X4 次,现在只要一次就可以完成。 若以 N 表示磁盘的数目,R 表示读取,W 表示写入,S 表示可使用空间,则数据分段的性能为: R:N(可同时读取所有磁盘) W:N(可同时写入所有磁盘) S:N(可利用所有的磁盘,并有最佳的使用率) Disk striping也称为 RAID 0,很多人以为 RAID 0没有甚么,其实这是非常错误的观念,因为 RAID 0使磁盘 的输出入有最高的效率。而磁盘阵列有更好效率的原因除数据分段外,它可以同时执行多个输出入的要求, 因为阵列中的每一个磁盘都能独立动作,分段放在不同的磁盘,不同的磁盘可同时作读写