磁盘阵列的原理及相关知识
磁盘或数据分段(Disk stripping or Data Striping):
因为磁盘阵列是将同一阵列的多个磁盘视为单一的虚拟磁盘(virtual disk),所以其数据是以分段(block or segment)的方式顺序存放在磁盘阵列中,如下图:
磁盘0 磁盘1 磁盘2 磁盘3
A0 A1 A2 A3
A4 A5 A6 A7
… … … …
4N-3 4N-2 4N-1 4N
分段的意思是把数据分小段跨越分布在各个磁盘,数据按需要分段,从第一个磁盘开始放,放到最后一个磁盘再回到第一个磁盘,直到数据分布完毕。至于分段的大小视系统而定,如果磁盘阵列所分区块和操作系统的所分的区块是一致的话,会有较好的效率。有的系统或以1KB最有效率,或以4KB,或以6KB,甚至是4MB或8MB的,但除非数据小于扇区(sector, 即512bytes),否则其分段应是512byte的倍数。因为磁盘的读写是以一个扇区为单位,若数据小于512bytes,系统读取该扇区后,还做组合或分组(视读或写而定)的动作,浪费时间。从上图我们可以看出数据以段方式放在不同的磁盘,整个阵列的各个磁盘可同时作读写,故数据分段使数据的存取有最好的效率,理论上本来读一个包含四个分段的数据所需要的时间约为(磁盘的access time +数据的transfer time)* 4次,现在只要一次就可以完成。
Oaraid?;可将同一数据分段放在不同的磁盘,比如磁盘阵列定义的分段为4KB,而5KB的数据可把4KB的数据放在一个磁盘的分段上,另外1KB的数据放在另一磁盘的分段,而另一笔数据可从这个磁盘分段所剩下的3KB空位放起,这样不但能增加磁盘的利用率,而且可同时启动多个磁盘一起动作,增加存取的速度,在很多情况之下,即使是小于一个分段的数据,也能得到负载均衡的好处,所以分段大小优化心脏可作跨盘分段(同一数据分段放在不同的磁盘分段)。可得到较好的存取效能,这也是为什么OAraid?; Viper-II5000系列能有37MB/sec的存取效能的原因。
若以N表示磁盘的数目,R表示读取,W表示写入,S表示可使用空间,则数据分段的性能为:
R:N(可同时读取所有磁盘)
W:N(可同时写入所有磁盘)
S:N(可利用所有的磁盘,并有最佳的使用率)
Disk striping也称为RAID 0,很多人以为RAID 0没有什么,其实这是非常错误的观念,因为RAID 0使磁盘的输入输出有最高的效率。而磁盘阵列有更好的效率的原因除数据分段外,它可以同时执行多个输入输出的要求,因为阵列中的每一个磁盘都能独立动作,分段放在不同的磁盘,不同的磁盘可同时作读写,而且能在快取内存及磁盘作并行存取(parallel access)的动作。Striping打破了单一磁盘所形成的瓶颈。Oapro对以上图4个1GB硬盘的阵列和1个4GB的硬盘作过比较,磁盘阵列的效能约为单一磁盘的3至3.5倍,若4个磁盘分别接Oaraid?; 4个SCSI通道形成阵列,其I/O性能是单一磁盘的4倍。但是否真能表现出这种能力,要视操作系统,用户数目或工作负荷的特性而定,要能同时得到各个磁盘的交通,其工作负荷也必须分布在各个磁盘。
从上面两点我们可以看出,disk spanning定义了RAID的基本形式,提供了一个便宜、灵活、高性能系统结构,而disk stripping解决了数据的存取效率和磁盘的利用率问题,RAID 1至RAID 5是在此基础上提供磁盘安全的方案。
RAID 1 RAID 1是使用磁盘镜像(disk mirroring)的技术。磁盘镜像应用在RAID 1之前就在很多系统中使用,它的方式是在工作磁盘(working disk)之外再加一额外的备份磁盘(backup disk),两个磁盘所储存的数据完全一样,数据写入工作磁盘的同时亦写入备份磁盘。
一般镜像对磁盘的读取有几种方式:
1. 只读取工作磁盘,镜像磁盘只是作后备
2. 两个硬盘同时读取,采用选取回应的磁盘的数据 |