目前改進磁盤存取速度的的方式主要有兩種。一是磁盤快取控制(disk cache controller),它將從磁盤讀取的數據存在快取內存(cache memory)中以減少磁盤存取的次數,數據的讀寫都在快取內存中進行,大幅增加存取的速度,如要讀取的數據不在快取內存中,或要寫數據到磁盤時,才做磁盤的存取動作。這種方式在單工環境(single-tasking envioronment)如DOS之下,對大量數據的存取有很好的性能(量小且頻繁的存取則不然),但在多工(multi-tasking)環境之下(因為要不停的作數據交換(swapping) 的動作)或數據庫(database)的存取(因為每一記錄都很小)就不能顯示其性能。這種方式沒有任何安全保障。
其二是使用磁盤陣列的技術。磁盤陣列是把多個磁盤組成一個陣列,當作單一磁盤使用,它將數據以分段(striping)的方式儲存在不同的磁盤中,存取數據時,陣列中的相關磁盤一起動作,大幅減低數據的存取時間,同時有更佳的空間利用率。磁盤陣列所利用的不同的技術,稱為RAID level,不同的level針對不同的系統及應用,以解決數據安全 的問題。
一般高性能的磁盤陣列都是以硬件的形式來達成,進一步的把磁盤快取控制及磁盤陣列結合在一個控制器(RAID controler或控制卡上,針對不同的用戶解決人們對磁盤輸出入系統的四大要求:
(1)增加存取速度
(2)容錯(fault tolerance),即安全性
(3)有效的利用磁盤空間;
(4)盡量的平衡CPU,內存及磁盤的性能差異,提高電腦的整體工作性能。
2.磁盤陣列原理
磁盤陣列中針對不同的應用使用的不同技術,稱為RAID level,RAID是Redundent 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 3及RAID 4適用于大型電腦及影像、CAD/CAM等處理;RAID 5多用于OLTP(在線事務處理),因有金融機構及大型數據處理中心的迫切需要,故使用較多而較有名氣, RAID 2較少使用,其他如RAID 6,RAID 7,乃至RAID 10等,都是廠商各做各的,并無一致的標準,在此不作說明。介紹各個RAID level之前, 先看看形成磁盤陣列的兩個基本技術:
磁盤延伸(Disk Spanning):
譯為磁盤延伸,能確切的表示disk spanning這種技術的含義。如圖磁盤陣列控制器, 聯接了四個磁盤,這四個磁盤形成一個陣列(array),而磁盤陣列的控制器(RAID controller)是將此四個磁盤視為單一的磁盤,如DOS環境下的C:盤。這是disk spanning的意義,因為把小容量的磁盤延伸為大容量的單一磁盤,用戶不必規劃數據在各磁盤的分布,而且提高了磁盤空間的使用率。并使磁盤容量幾乎可作無限的延伸;而各個磁盤一起作取存的動作,比單一磁盤更為快捷。很明顯的,有此陣列的形成而產生RAID的各種技術。
磁盤或數據分段(Disk Striping or Data Striping):
因為磁盤陣列是將同一陣列的多個磁盤視為單一的虛擬磁盤(virtual disk),所以其數據是以分段(block or segment)的方式順序存放在磁盤陣列中,數據按需要分段,從第一個磁盤開始放,放到最後一個磁盤再回到第一個磁盤放起,直到數據分布完畢。至于分段的大小視系統而定,有的系統或以1KB最有效率,或以4KB,或以6KB,甚至是4MB或8MB的,但除非數據小于一個扇區(sector,即521bytes),否則其分段應是512byte的倍數。因為磁盤的讀寫是以一個扇區為單位,若數據小于512bytes,系統讀取該扇區后,還要做組合或分組(視讀或寫而定)的動作,浪費時間。從上圖我們可以看出,數據以分段于在不同的磁盤,整個陣列的各個磁盤可同時作讀寫,故數據分段使數據的存取有最好的效率,理論上本來讀一個包含四個分段的數據所需要的時間約=(磁盤的access time+數據的tranfer time)X4次,現在只要一次就可以完成。
若以N表示磁盤的數目,R表示讀取,W表示寫入,S表示可使用空間,則數據分段的性能為:
R:N(可同時讀取所有磁盤)
W:N(可同時寫入所有磁盤)
S:N(可利用所有的磁盤,并有最佳的使用率)
Disk striping也稱為RAID 0,很多人以為RAID 0沒有甚么,其實這是非常錯誤的觀念, 因為RAID 0使磁盤的輸出入有最高的效率。而磁盤陣列有更好效率的原因除數據分段外,它可以同時執行多個輸出入的要求,因為陣列中的每一個磁盤都能獨立動作,分段放在不同的磁盤,不同的磁盤可同時作讀寫,而且能在快取內存及磁盤作并行存取(parallel access)的動作,但只有硬件的磁盤陣列才有此性能表現。
從上面兩點我們可以看出,disk spanning定義了RAID的基本形式,提供了一個便宜、靈活、高性能的系統結構,而disk striping解決了數據的存取效率和磁盤的利用率問題,RAID 1至RAID 5是在此基礎上提供磁盤安全的方案。
RAID 1
RAID 1是使用磁盤鏡像(disk mirroring)的技術。磁盤鏡像應用在RAID
1之前就在很多系統中使用,它的方式是在工作磁盤(working disk)之外再加一額外的備份磁盤(backup
disk),兩個磁盤所儲存的數據完全一樣,數據寫入工作磁盤的同時亦寫入備份磁盤。磁盤鏡像不見得就是RAID 1,如Novell Netware亦有提供磁盤鏡像的功能,但并不表示Netware有了RAID 1的功能。一般磁盤鏡像和RAID 1有二點最大的不同:
新聞熱點
疑難解答