當市場上引入新的存儲技術時,必須要與現有的存儲兼容。其基本的想法很簡單。假如I/O 路徑的接口和管理改變很多,不僅技術本身的實現難度很大,而且也很難在市場上立足。其實差不多所有的計算機產品都遵從這個規律,而不僅僅是存儲產品。事實上,無論是文件服務器的NAS類型的存儲網絡,還是更新的SAN類型存儲網絡,無一不是這樣。
虛擬化是一種最常見的提供存儲、I/O產品和過程的兼容性技術。虛擬化通過建立一種表現和響應命令方式同另一種技術一樣的環境,以達到使用另一種技術來代替這種技術的目的。簡單地說,虛擬化就是一個“冒充”接口的技術,使之以某個別的形式出現。另一個解釋是虛擬化使某些新的、驚人的東西變成過時和令人心煩的東西,只是性能更好罷了。虛擬化能夠以許多不同的形式實現,但就存儲而論,基本上有三種形式:
1.組合多個資源成為一個可尋址的實體的虛擬化。
2.將一個資源分解成為多個可尋址的實體的虛擬化。
3.模擬另一個產品或功能的虛擬化。
第一種情況可以組合多個單獨的成分產生一個大的、可尋址實體,如磁盤子系統,它由多個更小的磁盤組合而成大的虛擬磁盤。第二種情況與第一種情況相反,它使一個大的實體看上去就像許多更小的可尋址實體,如一個磁盤驅動器被分成多個更小的驅動器鏡像。事實上,有時也可以同時使用這兩種虛擬化技術,如幾個磁盤驅動器首先組合在磁盤子系統中,形成一個大的虛擬磁盤,然后又被分成更小的虛擬驅動器。
最后一種虛擬化技術通常稱為模擬,一般是為新產品提供兼容性。一般來說,本書所討論的虛擬化是指前面兩種,即在一些數量的實際實體和另一些數量的虛擬實體間提供地址映射。
虛擬化在I/O路徑中的位置虛擬化可以在I / O路徑上以許多方式實現,最常見的實現在I / O路徑中的位置如下:
主機I/O控制器
存儲子系統
存儲網絡域管理器
卷管理器
主機I/O控制器設備驅動程序
在主機I/O控制器中虛擬化
對于光纖路徑和其他的存儲網絡技術,它們的主機I/O控制器通常支持SCS I協議,雖然SCSI 協議過去是為本地I/O傳輸而設計的,但光纖路徑卻分明是為存儲網絡I/O傳輸而設計的。盡管現在還有一些人說,光纖路徑上的S C S I并不是設備的虛擬化,但可以強烈辯解的是:當光纖路徑主機總線適配器和設備驅動程序組合成對時,也可以形成一種形式的總線,或路徑,或虛擬化,使存儲網絡看上去像一個或多個SCSI總線。主機I/O控制器也可以提供其他的虛擬化技術,如分塊、鏡像和錯誤校驗等的RAID功能。為了鏡像磁盤,由單個的I/O請求形成兩個I/O請求,這是在主機I/O控制器中實現虛擬化的一個例子。
在存儲子系統中實現虛擬化
常見的虛擬化是在存儲子系統中實現的。第6章討論的RAID子系統就是設備虛擬化的極好的例子,它位于I/O路徑的最后一站。磁盤子系統既可以提供形成更大虛擬驅動器的地址轉換,也可以提供將資源磁盤分成更小的虛擬驅動器的地址轉換。3個存儲設備先形成單個大的虛擬磁盤,然后再分成4個小的虛擬驅動器。
在存儲域管理器中實現虛擬化
存儲域管理器在第2章中已經介紹,是存儲和I/O環境中的一種新品種。它的主要作用是在主機和設備及子系統之間提供虛擬化服務。雖然存儲子系統為其內部存儲設備提供了虛擬化,但存儲域管理器可以為下游存儲子系統提供虛擬化服務。
在卷管理器中實現虛擬化
卷管理器的主要任務是為下游存儲資源提供虛擬化服務。卷管理器可以對磁盤驅動器實現分區、連接、分塊及鏡像功能。卷管理器在鏡像中的作用參見。在主機I/O控制器設備驅動程序中實現虛擬化當I/O設備驅動程序傳送I/O命令到它相應的主機I/O控制器時,它也可以提供虛擬化服務。事實上,它同在卷管理器中實現的虛擬化一樣。沿I/O路徑實現虛擬化的各不同的位置和功能。