存儲虛擬化(Storage Virtualization)最通俗的理解就是對存儲硬件資源進行抽象化表現。按虛擬化對象劃分,虛擬化存儲實現方式主要有三種。
基于主機的虛擬存儲
基于主機的虛擬存儲依賴于代理或管理軟件,它們安裝在一個或多個主機上,實現存儲虛擬化的控制和管理。由于控制軟件是運行在主機上,這就會占用主機的處理時間。因此,這種方法的可擴充性較差,實際運行的性能不是很好。基于主機的方法也有可能影響到系統的穩定性和安全性,因為有可能導致不經意間越權訪問到受保護的數據。
這種方法要求在主機上安裝適當的控制軟件,因此一個主機的故障可能影響整個SAN系統中數據的完整性。軟件控制的存儲虛擬化還可能由于不同存儲廠商軟硬件的差異而帶來不必要的互操作性開銷,所以這種方法的靈活性也比較差。但是,因為不需要任何附加硬件,基于主機的虛擬化方法最容易實現,其設備成本最低。使用這種方法的供應商趨向于成為存儲管理領域的軟件廠商,而且目前已經有成熟的軟件產品。這些軟件可以提供便于使用的圖形接口,方便地用于SAN的管理和虛擬化,在主機和小型SAN結構中有著良好的負載平衡機制。從這個意義上看,基于主機的存儲虛擬化是一種性價比不錯的方法。
基于存儲設備的虛擬化
基于存儲設備的存儲虛擬化方法依賴于提供相關功能的存儲模塊。如果沒有第三方的虛擬軟件,基于存儲的虛擬化經常只能提供一種不完全的存儲虛擬化解決方案。對于包含多廠商存儲設備的SAN存儲系統,這種方法的運行效果并不是很好。依賴于存儲供應商的功能模塊將會在系統中排斥JBODS(Just a Bunch of Disks,簡單的硬盤組)和簡單存儲設備的使用,因為這些設備并沒有提供存儲虛擬化的功能。
當然,利用這種方法意味著最終將鎖定某一家單獨的存儲供應商。基于存儲的虛擬化方法也有一些優勢:在存儲系統中這種方法較容易實現,容易和某個特定存儲供應商的設備相協調,所以更容易管理,同時它對用戶或管理人員都是透明的。但是,我們必須注意到,因為缺乏足夠的軟件進行支持,這就使得解決方案更難以客戶化(customization)和監控。
基于網絡的虛擬存儲
1) 基于互聯設備的虛擬化
基于互聯設備的方法如果是對稱的,那么控制信息和數據走在同一條通道上;如果是不對稱的,控制信息和數據走在不同的路徑上。在對稱的方式下,互聯設備可能成為瓶頸,但是多重設備管理和負載平衡機制可以減緩瓶頸的矛盾。同時,多重設備管理環境中,當一個設備發生故障時,也比較容易支持服務器實現故障接替。但是,這將產生多個SAN孤島,因為一個設備僅控制與它所連接的存儲系統。非對稱式虛擬存儲比對稱式更具有可擴展性,因為數據和控制信息的路徑是分離的。
基于互聯設備的虛擬化方法能夠在專用服務器上運行,使用標準操作系統,例如Windows、SunSolaris、Linux或供應商提供的操作系統。這種方法運行在標準操作系統中,具有基于主機方法的諸多優勢——易使用、設備便宜。許多基于設備的虛擬化提供商也提供附加的功能模塊來改善系統的整體性能,能夠獲得比標準操作系統更好的性能和更完善的功能,但需要更高的硬件成本。但是,基于設備的方法也繼承了基于主機虛擬化方法的一些缺陷,因為它仍然需要一個運行在主機上的代理軟件或基于主機的適配器,任何主機的故障或不適當的主機配置都可能導致訪問到不被保護的數據。同時,在異構操作系統間的互操作性仍然是一個問題。
2) 基于路由器的虛擬化
基于路由器的方法是在路由器固件上實現存儲虛擬化功能。供應商通常也提供運行在主機上的附加軟件來進一步增強存儲管理能力。在此方法中,路由器被放置于每個主機到存儲網絡的數據通道中,用來截取網絡中任何一個從主機到存儲系統的命令。由于路由器潛在地為每一臺主機服務,大多數控制模塊存在于路由器的固件中,相對于基于主機和大多數基于互聯設備的方法,這種方法的性能更好、效果更佳。由于不依賴于在每個主機上運行的代理服務器,這種方法比基于主機或基于設備的方法具有更好的安全性。
當連接主機到存儲網絡的路由器出現故障時,仍然可能導致主機上的數據不能被訪問。但是只有聯結于故障路由器的主機才會受到影響,其他主機仍然可以通過其他路由器訪問存儲系統。路由器的冗余可以支持動態多路徑,這也為上述故障問題提供了一個解決方法。由于路由器經常作為協議轉換的橋梁,基于路由器的方法也可以在異構操作系統和多供應商存儲環境之間提供互操作性。