https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/
https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/

觀點

虛擬化面面觀

2009 / 01 / 14
iseditor
虛擬化面面觀
對儲存經理來說,要運用傳統標準來通過新型式的阻礙,虛擬化可能是一個相當棘手的技術。

在經過處理許多虛擬系統的經歷後,儲存系統的團隊面臨到一個有趣的挑戰:他們應該如何處理虛擬主機呢?這些虛擬主機系統是應該被當做獨立主機看待,或者只是一個在主機上跑的應用程式呢?另外,什麼才是最好的方法以用來確保虛擬主機不會造成棘手的系統輸入/輸出(IO)的失衡?在這篇文章裡,我會概略地描述儲存設備的設計師、虛擬系統的設計及配置人員所關心的焦點。
在我們開始之前,讓我們先對不同的虛擬系統命名。虛擬化可以存在實體層或邏輯層,實體層的虛擬化,允許你動態的分配系統資源給操作系統。邏輯層的虛擬化,讓你有一個主端(host)操作系統在一個單一的實體設備上運作。邏輯層虛擬化有兩個型態:型態一是bare-metal架構的虛擬核心(hypervisor),這是比較進階的架構;型態二是寄居架構(hosted architecture)的虛擬核心。前者是在實體層的虛擬化,類似一個操作系統執行於實體的設備;而後者,則是類似一個應用程式或shell,執行於己在運作的操作系統上。執行於虛擬核心之上的操作系統,稱作為客端(guest)或叫做虛擬操作系統。而不管是用那一種型態運行,對儲存設備來說,其困難的程度都是差不多的。

不只VMware在做虛擬化而己
當我們談到虛擬化主機時,第一個想到的名字就是VMware。當VMware以它的ESX Server為虛擬化主機的領導者時,其他廠商也推出他們各自的產品。AIX shops將極有可能推出具有像IBM的邏輯磁碟分割功能的系統(眾所週知的LPARs)來運行AIX及Linux。另外還有微軟的Virtual PC及昇陽的Solaris Zones,而Open Source的Xen也緊跟在後。

共享輸入/輸出的方法
大部份的儲存設備,都是經由虛擬核心直接或間接連到客端操作系統的。儘管這是事實,也不要以為永遠都是如此。在某些系統中,客端操作系統可以存取屬於他們自己的主機匯流排配接器(HBA),在這些情況下,你就得必須和系統人員一起查出那些客端的操作系統是否採用直接存取?而哪些共享的輸入/輸出作業是經由虛擬核心來運作?
然而有個問題是,邏輯單元號碼(LUNs)是如何從虛擬核心對應及呈現到客端操作系統呢?舉例來說,目前IBM己推行的虛擬輸入/輸出核心(VIO),可以藉由虛擬的SCSI介面直接呈現邏輯單元號碼給邏輯磁碟分割(LPAR),且VIO並不需要知道LPAR是如何使用這些LUN的。另外一個方法是,在VIO主機或虛擬核心裡開闢一個新的邏輯容體(logical volume),然後將它呈遞到LPAR,以用來取代原始的磁碟設備(raw disk),這樣不僅可以讓你監看及控制輸入/輸出的分配,更可以藉由邏輯容體管理(LVM),來將效能的瓶頸降到最低。所以你有兩種方式可以使用:第一種方式比較簡易,但是會導致管理成本的增加,因為磁碟代號在IBM AIX的系統上,可能會因為各種原因而被改變,較難管理。另一種方式是使用邏輯容體管理工具(LVM) ,它允許所有呈現都被掌握在可控制的磁碟ID之基礎下。
對我而言,LUN如何呈現 ,以及輸入/輸出在虛擬化主機之間的共享,是設計上的很重要的考量。這是建立一個健全及彈性的虛擬環境最需要注意的地方。

從SAN來開機
儲區域網路(SAN,Storage Area Network)來開機的概念,在過去一向非常簡單。它是由建立一個光纖通道或是iSCSI介面來連接建構邏輯的開機磁碟,而不是使用在本地磁碟的開機影像磁區。假如你的操作是非常嚴謹的,從SAN來啟動你的系統,的確有它的價值存在。當然,SAN帶給系統虛擬化最重要的好處,是它能高效能的貯存所有虛擬化主機大量的開機映像檔。這些看起來都還不錯,但有兩個附註:
第一, 當你有了多個開機映像在單一大型的LUN時,整個LUN的效能,會因為跑在裏面的多個虛擬主機的檢查作業而受到影響,所以應該要注意維持一個健康的比率—「開機映像數量:LUN數量」。你最好建構較小而且多個不同的LUN,來分配給虛擬化主機的映像使用,以取代只用一個大的LUN的架構,如此才能維持一個較低且較平衡的比率。
第二,你依然需要決定虛擬核心是否要從SAN來開機。這個答案取決於你的環境裏,其他那些非虛擬化的主機,是否把從SAN來開機當作是一個標準的慣例。然而,假如你全部轉移到虛擬化的環境,虛擬核心從SAN來開機當然也是很合乎道理的。

把虛擬化主機當作一個「獨立的應用程式」
當儲存設備的資源被分派後,虛擬化主機應該被當作是一個獨立的實體。如果你的Oracle資料庫和Web主機,兩者的IO都是很吃重的話,你不會希望他們在同一主機共享相同的檔案系統─同樣地,你應該要注意虛擬化主機在跑Oracle及Web主機時,儘量不要讓他們共享儲存設備的相同資源才對,不然就是必須在他們之間有個明確的區隔。
這個意思是,將你的資料和開機映像保持隔離。不管是LUN還是檔案系統,把所有虛擬化主機的東西放在同一個資源上,都是很糟糕的想法。
在所有的虛擬主機之間,建立和共享大的LUN也是個不太聰明的打算。我看到很多VMWare環境裏的LUN呈現給單一虛擬核心的大小,都在600GB或比它更大的範圍中,這在我來看是不合理的。虛擬主機或虛擬核心,應該以儲存設備供應的傳統觀點來看待,且所有標準的儲存設備應用,都應該要能夠適用他們。

小心主機模式
當應用在虛擬化主機時,主機連線有時會被略過或無法解讀。很多廠商正試著解決這個問題。例如,一些較新的磁碟陣列現在己包含了VMWare模式的設定,以支援VMWare ESX主機的使用。假如在你的環境中,您的磁碟陣列並無支援這樣的模式,請和您的廠商聯絡,以瞭解設定的建議值。值得關切的是,要確定一些特別的設定,如SCSI保留用來安裝叢集虛擬核心的設定必須事先完成,以避免主機錯誤接管(failover)時產生任何延遲。
記住,在一般作業平台上的標準,多路徑軟體可能不適用於虛擬核心或虛擬系統。部份的虛擬化系統廠商,已把他們自己的路徑管理軟體包含在內,以避免其他廠商的軟體介入而造成問題。

虛擬化及iPod的革新
虛擬化及iPod之間是可以劃上一條平行線的。每當一台iPod賣出,就有許多的周邊科技產品跟著賣出(從桌上連接機台到音箱等等),這些都是為了更好的使用體驗而設計的。而虛擬化的表現就是朝著這個方向而去。
最後,有一個技術我想強調,就是N_Port ID虛擬化(NPIV)。這是一個相當新,而且是IBM為了System z9的虛擬化所創建的。N_Port ID虛擬化允許單一的FCP port 在群集名稱服務(fabric name server)中註冊好幾個WWPN(World Wide Port Name) 。所以每一個註冊的WWPN會分配到一個唯一的N_Port ID。使用N_Port ID虛擬化在光纖通道群集中(FC fabric),單一的實體HBA port可以呈現多個WWPN,它也可以讓你替每一個虛擬主機新增並對映一個WWPN。因此,從一個LUN遮罩的觀點來看,在相同的儲存設備埠中,每一個虛擬主機可以擁有一整組唯一的LUN。大部份虛擬化的主要供應商都有支援這樣的功能。
切記,虛擬化是你朋友,而且己存在許久。現在擁有它是聰明也是正確的,它不僅有利於系統及應用程式組員,對於儲存設備人員同樣是幫助甚大。

Ashish Nadkarni 是位於麻省的GlassHouse Technologies公司之首席顧問。