迄今,對磁盤鏡像的討論僅涉及寫操作的鏡像。事實上,寫操作只占整個磁盤操作的10%~20%左右,大部分磁盤操作都是讀操作。因此,增強磁盤讀操作的速度是改善性能非常重要的環節。
許多年來,I/O性能一直是很重要的研究課題,隨著我們所擁有的在線數據量的增長,它正變得越來越重要。在一個普通的計算機系統中,最慢的組件通常是磁盤驅動器,雖然內存的響應時間保守地估計在60~80納秒,但磁盤的訪問時間卻在8~12微秒范圍內。因而,磁盤驅動器的速度比內存要慢100多倍。
為了更明白地理解磁盤和內存速度的差別,考慮在日常工作期間,處理一件事花費的時間增加100倍時的情景。這時,如果你原來駕車上班的時間是15分鐘,那么,你現在駕車上班將不得不花去1500分鐘(25小時);假如你原來花費2分鐘時間就能發送一份傳真,那么,現在發送一份傳真,你將不得不花200分鐘得時間。因此毫不夸張地說,這使我們很難完成任何事情。考慮存放在磁盤上巨大的數據量,就能認識到磁盤性能改進的意義。
已經證明,磁盤鏡像能在改善性能的同時,也能提供更高的可靠性。磁盤的臂總是帶動著磁頭不停地在盤片表面運動,以進行讀/寫操作,只要磁頭停止在它們將要讀/寫的磁道上,數據傳輸是很快的,但定位磁頭于正確的磁道上則需要花很長時間,這個時間延遲是導致磁盤速度慢的主要原因。假如能夠減少由磁盤臂在磁盤表面移動而引入的延遲,則能節省大量的時間。
對于鏡像的寫,兩個驅動器的磁盤臂都被定位在各地的磁道上,然后,才能將數據寫入磁盤。相比之下,讀操作則不必置兩個磁盤臂于兩個驅動器的同樣磁道上,只要兩個驅動器之一的磁盤臂置于正確的磁道,就能正確地讀出數據,因此,磁盤讀冗余是完全沒有必要的。當隊列中有多個讀操作時,可以分散工作負荷,以至于一個磁盤處理這一組請求,另一個磁盤處理另一組請求,使用這種方法,磁盤的響應速度將會加倍。
1.通過增加磁盤軸數量增加性能
并行處理是一個提高系統性能的標準計算技術之一,它的思想很簡單:如果一個處理器能在10秒中完成的工作,那么,10個處理器能在1秒內就能完成。鏡像磁盤的異步讀就是并行處理概念運用于磁盤驅動器的一個例子。
異步讀的本質是增加磁盤驅動器的數量,因此,增加了用于恢復數據的磁盤臂數量。盡管其目的明顯是增加磁盤臂的數量,但有時仍然被稱作“增加軸數量”。事實上,每驅動器一個磁盤臂,增加磁盤驅動器的個數,就能更快地讀出數據,如磁盤鏡像。
磁盤驅動器的技術含量很高,但我們總是習以為常。磁盤驅動器工業競爭十分激烈,推動著磁盤驅動器技術持續向前發展,不斷增加的表面密度、更大的容量和更快的轉速,這些都導致磁盤性能的提高。毫無疑問,未來幾年內,磁盤驅動器工業將繼續推進技術的進展,給磁盤驅動器市場帶來新的驚訝。
然而,高容量的磁盤驅動器也存在一個缺點,即單磁盤臂需要讀出的數據量更大,換而言之,雖然存儲的數據量已經大大地增長,但磁盤臂的數量依然保持未變,因而,雖然磁盤驅動器的平均訪問時間變得越來越少,但相比容量來說,它們的進展仍顯得太慢。值得注意的是磁盤容量的增長與盤片大小的增加并無關系。
對于單用戶系統,這并不是一個很嚴重問題,但對于擁有高級并發訪問的多用戶服務器,磁盤臂必須執行更經常的尋道操作。每個服務器帶有36GB的鏡像硬盤,管理20個并發磁盤讀訪問。
服務器A帶有兩個18GB的磁盤驅動器鏡像對,總共為36GB的在線存儲,服務器B使用9對4GB的鏡像磁盤,具有與服務器A同樣的存儲容量。服務器A有4個磁盤臂支持20個請求服務,而服務器B有18個磁盤臂,雖然不能保證把數據分散到18個磁盤臂上,讓所有的磁盤臂都處于工作狀態,但幾乎可以肯定服務器B使用的磁盤臂多于4個,且所服務的請求數目與服務器A相同。隨著時間的推移,服務器B將由于使用磁盤臂的數量逐漸增多,而表現出比服務器A有更明顯的性能優勢。