存儲子系統的元素包括:磁盤、磁盤控制器、存儲網絡、磁盤陣列、卷管理層、目錄虛擬層、文件系統虛擬層。我們就從下到上,一一描述這幾個元素,看看存儲了系統楚怎么抽象虛擬的。
1.磁盤控制器
磁盤控制器的工作就是根據驅動程序發來的磁盤讀寫信息,向磁盤發送SCSI指令和數據。這個部件看似沒有什么可抽象虛擬的東西,其實磁盤控制器完全可以對其驅動程序隱藏其下掛的物理磁盤,而虛擬出一個或者多個虛擬磁盤。由控制器來完成虛擬磁盤和物理磁盤的映射和抽象虛擬。RAID就是一個點型代表,控制器將物理磁盤組成RAID Group,然后在RG的基礎上,虛擬出多個LUN,通告給主機驅動。
2.存儲網絡
早期的存儲子系統,沒有網絡化,而目前的存儲系統,網絡化己經作常徹底。從磁盤到磁盤陣列控制器,從磁盤陣控制器到主機總線適配器,都已經嵌入了網絡化元素。比如使用FC協議或者TCP/IP協議、SAS協議、Infiniband協議等。那么在這一層上,有什么可以抽象的么?網絡化只是為部件之間提供了一種可擴展的傳輸通路而已,貌似在這個層面上不能做出于什么大文章來。
實則不然,這一層也是有所深究的。在交換式SAN中,不管是基于TCP/IP協議的還是基于FC協議的SAN ,網絡中的任何節點都是通過交換設備來互相通信,這是節點間通信的必經之路。如果在交換設備上做點手腳,就完全可以達到虛擬化的效果。
要抽象一種邏輯,那么一定要理解這種邏輯,所以我們可以在FC交換機或者以太網交換機上,嵌入SCSI協議感知模塊。比如某個N節點向另一個N節點Report LUN的時候,交換機收到這個Frame,則可以感知這個N節點的LUN信息。如果此時網絡中還有另個節點的LU N信息,則可以在交換機這一層。達到這兩個節點的LUN的鏡像.也就是說,SCSI發起設備向目標設備傳輸的數據,經由交換機的時候,交換機內嵌的虛擬化模塊,會自動復制對應的幀到另一個節點的LUN 上,讓這兩個LUN形成鏡像,當其中一個節點故障的時候,交換機因為知道此時還有一個備份鏡像LUN存在,所以并不會向發起者通告失敗,而是默默的將發起者的數據重定向到這個鏡像的LUN,發起設備并不會感知,這樣,就達到了基于網絡層的虛擬化抽象。
當然,網絡層的虛擬化,并不只是鏡像,比如將某些N節點的LUN合并成一個池,然后動態的從這個池中再劃分出虛擬LNN,向發起者報告等。基于這些思想,己經開發出了智能FC交換機。
3.磁盤陣列
磁盤陣列可以說本身就是一個小計算機系統(JBOD除外),這個系統五臟俱全,是對存儲子系統的抽象虛擬化最佳的表現。磁盤陣列,簡要地說,就是將大量磁盤進行組織管理,抽象虛擬,最終形成虛擬的邏輯磁盤,最后通過和主機適配器通信,將這些邏輯磁盤呈現給主機。這個功能和前面提到的磁盤控制器的功能類似,但是磁盤陣列能比狹義的磁盤控制器提供更多的特色功能,況且簡單的插在主機IO總線上的那種RAID磁盤控制器,其接入磁盤數量有限.功能也有限。
大型磁盤陣列,有自己的控制器。有的利用嵌入式技術.將特別定制的操作系統及其核心管理軟件嵌入芯片中,來管理艷個控制器并實現其功能;有的則干脆利用現成的上機來充當盤陣控制器的角色,比如IBM的DS8000系列盤陣,內部就是用的兩臺IBM P系列小型機作為其組織管理磁盤的控制器,其上運行AIX操作系統和相應的存儲管理軟件。
不管是嵌入式,還是主機式的,盤陣控制器所擔任的角色都是類似的。這個中心控制器,不直接參與連接每塊磁盤,而是利用后端適配器來管理下掛的磁盤,由后端適配器向其上級匯報。
這些適配器,就是由中心控制器驅動的二級磁盤控制器,這些磁盤控制器作為中心CPU的IO適配器,直接控制和管理物理磁盤,然后由中心控制器統一實現RAID,卷等高級功能(有些盤陣則可以將簡單的RAI D功能直接下放給幾級控制器來做)。后端適配器與中心控制器CPU之間通過某種總線技術連接,比如PCIX、PCIE總線等。中心控制器對這些磁盤進行虛擬抽象之后,通過前端的接口.向最終使用它的主機進行通告。中心控制器不但可以實現最基本的RAI D功能,而且可以實現很多高級功能,比如LUN鏡像、快照、遠程復制、CDP數據保護、LUN再分配等。在磁盤陣列上實現虛擬化,是目前最廣泛的一種存儲系統虛擬化形式。
4.卷管理層
卷管理層是指運行在應用主機h的功能模塊。它負責底層物理磁盤或者LUN的收集和再分配。經過盤陣控制器虛擬化之后生成的LUN提交給主機使用,主機可以對這些LUN進行再次抽象和虛擬,也就是重復虛擬化,比如對其中兩個LUN進行鏡像處理,或者對其中的多個LUN,做成一個軟RAID系統。再或者將所有LUN合并.形成一個大的資源池,然后像掰面團一樣所成多個卷,這個過程和磁盤控制器。盤陣控制器所做的虛擬化動作類似,但是這個動作是在主機上實現的。典型的卷管理軟件有LVM,或者第三方的軟件,比如Veritas公司的VxVM。
5.文件系統
數據只是存儲到磁盤上就完了么?顯然不是。打個比方,有位記者早晨出去采訪,乎中拿了一攘紙,他母看到一件事就記錄下來。對于“怎么將字寫在紙上”這個問題,他是這么解決的,他用筆在格子上寫字,寫滿一行再寫下一行。還不夠就換一張紙。對于“怎么讓白己在紙上寫字”,這個問題,是他自己通過大腦〔控制器〕,通過神經網絡(SCSI線纜〕,操縱白己的手指〔磁頭臂〕,拿著筆〔磁頭〕,看見有格了,就向里寫。這兩個問題都解決了。。可是這一天下來,他回去想看看一天都發生了什么,他拿出記錄紙,卻發現,信息都是零散的,根本無法閱讀,有時候讀到一半,就斷了,顯然當時是因為格了不夠用了,寫到其他地方了,造成了信息記錄的不連續,有的地方還有刪除線,證明這一塊作廢了,那么有效的記錄到底在哪里昵?記者方寸大亂,數據雖然都完好的一記錄在紙上,但是他們都是不連續的、凌亂的,當時是部記下來了,但是事后想要讀取時卻沒轍了。
磁盤記錄也一樣,只解決磁盤怎么記錄數據和怎么讓磁盤記錄數據,是遠遠不夠的,還應該考慮“怎么組織磁盤上的數據”。
還是用這個記者的例子來說明。我們都能想到,將凌亂的記錄組織成完整的一個記錄,只需要在相應的地方做一下標記,比如“此文章下一段位于某某頁,第幾行”。就像路標一樣,一次一次的指引你最終找出這個完整的數據,這個思想稱為“鏈表”。
如果將這個鏈表單獨的做成一個記錄,存放到固定位置,每次只要參考這個表,就能找出條數據在磁盤上的完整分布情況。利用這種思想做出來的文件系統,比如FAT文件系統,它把每個完整的數據稱為文件。文件可以在磁盤上不連續的存放,由單獨的數據結構來描述這個文件在磁盤上的分布。這個數據結構就是文件分配表。File Allocate Table,也就是FAT的由來。或者用另一種思想來組織不連續的數據,比如NTFS,它是直接給出了一個文件在磁盤上的具體扇區,開始一結束,開始一結束。用這樣的結構來描述文件的分布情況。
文件系統將磁盤抽象成了文件柜,同一份文件可能存放在一個柜子的不同抽屜中,利用一份特別的文件來記錄“文件——對應抽屜”的分布情況,這些用來描述其他文件分布情況及其屬性的文件,稱為元文件(Metadata)。元文件一般情況下要存放在磁盤的固定位置,而不能將其分散,因為最終要有一個絕對參考系統。但是有些文件系統,甚至將元文件也可以像普通文件一樣。在磁盤上不連續的分布。前面還說過一定要有一個絕對參考系統,也就是固定的入口,所以這些特殊的文件系統,其實最上層還是有一個絕對參考點的,這個參考點將生成元文件/在磁盤上的分布情況記錄,從而定位元文件,再根據元文件,定位數據文件,這樣一層一層的嵌套,最終形成文件系統。
最終一句話,文件系統是對磁盤塊的虛擬、抽象、組織和管理。用戶只要訪問一個個的“文件”,就等于訪問了磁盤扇區。而訪問文件,這個動作是非常容易理解的,也是很簡單的。用戶不必了解這個文件最終在磁盤上是存放到哪里,怎么存放的,怎么訪問磁盤來存放這個文件.這些統統都是由文件系統和磁盤控制器驅動程序來做。
6.目錄虛擬層
不管是Windows系統、UNIX系統,還是Linux系統.其內部都有一個虛擬的日錄結構。在Linux中叫做VFS, 即Virtual File System。
虛擬文件系統,顧名思義也就是說這個文件系統目錄并不是真實的,而是虛擬的。任何實際文件系統,都可以掛載到這個目錄下,真實FS中的真實目錄,被掛載到這個虛擬目錄下之后,就成為了這個虛擬目錄的子目錄。這樣做的好處是增強靈活性。其次,操作系統目前處理外部設備,一般都將其虛擬成一個虛擬文件的方式,比如一個卷,在Linux中就是/dev/hda這種文件。對這個文件進行讀寫,就等于直接對設備進行了讀寫。
存儲戶系統的虛擬化,可以在“磁盤——盤陣控制器——存儲網絡——主機總線適配器——卷管理層——文件系統層——慮擬目錄層和最終應用層”各個環節的虛擬抽象工作,使得鼓終應用軟件,只要通過文件系統訪問文件,就可以做到訪問放底層的磁盤一樣的效果。有時候還可以重復虛擬化。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://m.hanmeixuan.com/
本文標題:存儲子系統的虛擬化