當前位置:首頁 » 存儲配置 » 虛擬存儲設計並實現

虛擬存儲設計並實現

發布時間: 2023-10-24 21:40:26

A. 雲存儲的核心技術:虛擬化存儲,究竟虛擬是怎樣實現的

虛擬化改變了計算機使用存儲的方式。就像物理機器抽象成虛擬機(VM:Virtual Machine)一樣,物理存儲設備也被抽象成虛擬磁碟(Virtual Disk)。今天我們就來聊聊虛擬化存儲(Storage Virtualization)技術,究竟虛擬磁碟是怎樣實現的?
虛擬磁碟的實現
我們知道,伺服器擴展存儲的手段主要有直連存儲(DAS)、存儲區域網路(SAN)和網路附加存儲(NAS)這三種類型。那麼哪種存儲類型可以用來實現虛擬磁碟呢?
在虛擬化環境中,類似VMWare這樣的虛擬機管理程序hypervisor,要同時給很多VM分配存儲空間。這個過程中,我們需要先把物理存儲資源重新劃分成虛擬磁碟,然後再分配給VM。
顯然我們不能用DAS方式把物理磁碟直連到VM上,如果這樣,需要的物理磁碟就太多了。SAN是以邏輯單元(LUN:Logic Unit)的形式提供存儲資源,但是虛擬環境中VM的數量是很大的,而且倫的數量不足以支持這么多虛擬磁碟。
更重要的是,虛擬磁碟是為大量VM共享的,由於VM需要隨時創建、刪除或遷移,所以需要在遷移VM時共享存儲空間,只有原始數據不會丟失。DAS還是SAN,都不適合共享存儲。

考慮到資源分配以及共享的問題,虛擬機管理程序以NAS的方式實現虛擬磁碟。VMware通常使用VMFS(虛擬機文件系統)或NFS協議實現虛擬磁碟,VMFS文件系統是專門針對虛擬機環境協議。

每一個虛擬機的數據實際上是一堆文件,及最重要的文件的虛擬磁碟文件(VMDK文件),也有交換分區文件(VSWP文件,等價交換),非易失性存儲器(NVRAM的文件相當於BIOS),等等。每個VM對虛擬磁碟的IO操作實際上是對虛擬磁碟文件的讀寫操作。
設計、施工、和虛擬伺服器環境和優化,允許多個虛擬機訪問集成的集群存儲池,從而大大提高了資源的利用率。使用和實現資源共享,管理員可以直接從更高的效率和存儲利用率中獲益。
那麼我們如何在雲計算中使用虛擬磁碟呢?
實例存儲
最主要的一種使用虛擬磁碟的方式就是實例存儲,每個VM都是虛擬機的一個實例,虛擬機管理程序在每個實例中提供一個模擬硬體環境,它包括CPU、內存和磁碟。這樣,虛擬磁碟就是虛擬機實例的一部分,就像物質世界。刪除VM後,虛擬磁碟也將被刪除。
在這個實例存儲模型中,虛擬磁碟與虛擬機之間的存儲關系,事實上,它是DAS存儲。但是虛擬磁碟的底層實現,我們說,它是以NAS的方式實現的。虛擬機管理程序的作用是存儲VM層的存儲模型,這是從實施協議分離(VMFS或NFS)的虛擬機的低層。

VMFS協議實現了存儲資源的虛擬化,再分配各VMs
卷存儲
實例存儲有它的限制,開發人員通常希望分離實例數據,例如OS和安裝的一些伺服器應用程序和用戶數據,這樣重建VM的時候可以保留用戶的數據。
這個需求衍生出另外一種存儲模型:卷存儲。卷是存儲的主要單元,相當於虛擬磁碟分區。它不是虛擬機實例的一部分,它可以被認為是虛擬機的外部存儲設備。
該卷可以從一個VM卸載,然後附加到另一個VM。通過這種方式,我們實現了實例數據與用戶數據的分離。OpenStack的煤渣是一個體積存儲的實現。
除了實例存儲和卷存儲之外,最後我們還提到另一種特殊的虛擬存儲:對象存儲。
對象存儲
很多雲應用需要在不同的VM之間共享數據,它常常需要跨越多個數據中心,而對象存儲可以解決這個問題。在前一篇文章中的雲計算IaaS管理平台的基本功能是什麼?》中曾經提到過對象存儲。
在對象存儲模型中,數據存儲在存儲段(bucket)中,桶也可以被稱為「水桶」,因為它字面意思。我們可以用硬碟來類推,對象像一個文件,而存儲段就像一個文件夾(或目錄)。可以通過統一資源標識符(URI:統一資源標識符)找到對象和存儲段。
對象存儲的核心設計思想實際上是虛擬化,它是文件的物理存儲位置,如卷、目錄、磁碟等,虛擬化是木桶,它將文件虛擬化為對象。對於應用層,簡化了對數據訪問的訪問,屏蔽了底層存儲技術的異構性和復雜性。

對象存儲模型
NAS與對象存儲各有所長
當然你也許會問,NAS存儲技術也是一個可以解決數據共享的問題嗎?由於對象存儲的大小和成本優勢,許多雲環境使用對象存儲而不是NAS。
因為對象存儲將跨多個節點傳播,最新數據並不總是可用的 因此,對象存儲的數據一致性不強。如果有強一致性的要求,然後你可以使用NAS。目前,在雲計算環境中,NAS和對象存儲是共存的。
和NAS一樣,對象存儲也是軟體體系結構,而不是硬體體系結構。應用程序通過REST API直接訪問對象存儲。公共對象存儲包括:Amazon S3和OpenStack的Swift。
結語
在實際的雲平台應用中,我們需要根據自己的實際情況來合理運用不同的虛擬化存儲技術。
對於非結構化的靜態數據文件,如音視頻、圖片等,我們一般使用對象存儲。
對於系統鏡像以及應用程序,我們需要使用雲主機實例存儲或者卷存儲。
對於應用產生的動態數據,我們一般還需要利用雲資料庫來對數據進行管理。

B. 簡述虛擬化存儲技術的三種實現方法及工作原理

從系統的觀點看,有三種主要的存儲虛擬化方法:

  1. 基於主機的虛擬存儲;

  2. 基於存儲設備的虛擬存儲;

  3. 基於網路的虛擬存儲。


方法1:基於主機的虛擬存儲

基於主機的虛擬存儲依賴於代理或管理軟體,它們安裝在一個或多個主機上,實現存儲虛擬化的控制和管理。由於控制軟體是運行在主機上,這就會佔用主機的處理時間。因此,這種方法的可擴充性較差,實際運行的性能不是很好。基於主機的方法也有可能影響到系統的穩定性和安全性,因為有可能導致不經意間越權訪問到受保護的數據。這種方法要求在主機上安裝適當的控制軟體,因此一個主機的故障可能影響整個SAN系統中數據的完整性。軟體控制的存儲虛擬化還可能由於不同存儲廠商軟硬體的差異而帶來不必要的互操作性開銷,所以這種方法的靈活性也比較差。

但是,因為不需要任何附加硬體,基於主機的虛擬化方法最容易實現,其設備成本最低。使用這種方法的供應商趨向於成為存儲管理領域的軟體廠商,而且目前已經有成熟的軟體產品。這些軟體可以提供便於使用的圖形介面,方便地用於SAN的管理和虛擬化,在主機和小型SAN結構中有著良好的負載平衡機制。從這個意義上看,基於主機的存儲虛擬化是一種性價比不錯的方法。


方法2:基於存儲設備的虛擬化

基於存儲設備的存儲虛擬化方法依賴於提供相關功能的存儲模塊。如果沒有第三方的虛擬軟體,基於存儲的虛擬化經常只能提供一種不完全的存儲虛擬化解決方案。對於包含多廠商存儲設備的SAN存儲系統,這種方法的運行效果並不是很好。依賴於存儲供應商的功能模塊將會在系統中排斥JBODS(Just a Bunch of Disks,簡單的硬碟組)和簡單存儲設備的使用,因為這些設備並沒有提供存儲虛擬化的功能。當然,利用這種方法意味著最終將鎖定某一家單獨的存儲供應商。

基於存儲的虛擬化方法也有一些優勢:在存儲系統中這種方法較容易實現,容易和某個特定存儲供應商的設備相協調,所以更容易管理,同時它對用戶或管理人員都是透明的。但是,我們必須注意到,因為缺乏足夠的軟體進行支持,這就使得解決方案更難以客戶化(customzing)和監控。


方法3:基於網路的虛擬存儲

基於網路的虛擬化方法是在網路設備之間實現存儲虛擬化功能,具體有下面幾種方式:

1. 基於互聯設備的虛擬化

基於互聯設備的方法如果是對稱的,那麼控制信息和數據走在同一條通道上;如果是不對稱的,控制信息和數據走在不同的路徑上。在對稱的方式下,互聯設備可能成為瓶頸,但是多重設備管理和負載平衡機制可以減緩瓶頸的矛盾。同時,多重設備管理環境中,當一個設備發生故障時,也比較容易支持伺服器實現故障接替。但是,這將產生多個SAN孤島,因為一個設備僅控制與它所連接的存儲系統。非對稱式虛擬存儲比對稱式更具有可擴展性,因為數據和控制信息的路徑是分離的。

基於互聯設備的虛擬化方法能夠在專用伺服器上運行,使用標准操作系統,例如Windows、Sun Solaris、Linux或供應商提供的操作系統。這種方法運行在標准操作系統中,具有基於主機方法的諸多優勢--易使用、設備便宜。許多基於設備的虛擬化提供商也提供附加的功能模塊來改善系統的整體性能,能夠獲得比標准操作系統更好的性能和更完善的功能,但需要更高的硬體成本。

但是,基於設備的方法也繼承了基於主機虛擬化方法的一些缺陷,因為它仍然需要一個運行在主機上的代理軟體或基於主機的適配器,任何主機的故障或不適當的主機配置都可能導致訪問到不被保護的數據。同時,在異構操作系統間的互操作性仍然是一個問題。

3. 基於路由器的虛擬化

基於路由器的方法是在路由器固件上實現存儲虛擬化功能。供應商通常也提供運行在主機上的附加軟體來進一步增強存儲管理能力。在此方法中,路由器被放置於每個主機到存儲網路的數據通道中,用來截取網路中任何一個從主機到存儲系統的命令。由於路由器潛在地為每一台主機服務,大多數控制模塊存在於路由器的固件中,相對於基於主機和大多數基於互聯設備的方法,這種方法的性能更好、效果更佳。由於不依賴於在每個主機上運行的代理伺服器,這種方法比基於主機或基於設備的方法具有更好的安全性。當連接主機到存儲網路的路由器出現故障時,仍然可能導致主機上的數據不能被訪問。但是只有聯結於故障路由器的主機才會受到影響,其他主機仍然可以通過其他路由器訪問存儲系統。路由器的冗餘可以支持動態多路徑,這也為上述故障問題提供了一個解決方法。由於路由器經常作為協議轉換的橋梁,基於路由器的方法也可以在異構操作系統和多供應商存儲環境之間提供互操作性。

熱點內容
龍村m腳本 發布:2024-11-29 17:38:10 瀏覽:784
linuxc配置文件 發布:2024-11-29 17:08:31 瀏覽:828
wow刷碎片腳本 發布:2024-11-29 15:58:24 瀏覽:592
明小子源碼 發布:2024-11-29 15:15:30 瀏覽:145
蘋果8plus什麼配置 發布:2024-11-29 14:16:36 瀏覽:677
androidmvp結構 發布:2024-11-29 14:16:34 瀏覽:536
androidsqlite命令 發布:2024-11-29 14:04:38 瀏覽:156
信用卡分期演算法 發布:2024-11-29 13:50:56 瀏覽:808
安卓手機dll文件為什麼打不開 發布:2024-11-29 13:40:49 瀏覽:1003
百分之五十石碳酸怎麼配置 發布:2024-11-29 13:38:56 瀏覽:974