幾種虛擬機器映象格式

2022-01-30 11:01:29 字數 3596 閱讀 8541

幾種虛擬機器映象格式

從使用者角度看,虛擬機器映象檔案是乙個安裝有作業系統 的磁碟分割槽,客戶作業系統需要經過乙個驅動層才能訪問到 .目前,有多種虛擬機器映象格式可供選擇,包括raw,qcow2、vmdk、vdi、vhd、qed以及fvd等。表1列出了常 用的虛擬機器及其支援的映象格式。

虛擬機器映象檔案儲存了虛擬機器硬碟的全部資訊,按照資料儲存方式的不同,可以分為兩種模式:全映象模式(flat mode)和稀疏模式(sparsemode)。

全映象模式儲存了虛擬硬 盤中的所有位元組資料,其中也包括對使用者而言無效的資料; raw格式就是全映象模式。

稀疏模式只儲存對使用者和檔案系 統有效的資料,只占用必要的儲存空間,這種模式的映象檔案在存放資料時使用的可能不是連續的物理磁碟空間;前文提到的qcow2、qed、vmdk等都是稀疏模式。

在整個虛擬機器的體系中,i/o請求的處理過程大致如下:

當vm的客戶作業系統中的使用者有磁碟i/o請求的時候,vmm(vmmonitor或者稱為hypervisor)會捕獲其i/o指令,根 據虛擬機器實現策略的不同進行必要的轉換,最終通過宿主機 作業系統核心的系統呼叫來完成客戶作業系統的i/o請求。

在xen中,有乙個tapdisk程序執行在dom0中,來負責處理來 自其他domu的i/o請求,完成位址轉換過程。例如,虛擬機器客戶作業系統需要讀或寫乙個磁碟塊,vmm會呼叫宿主機核心的系統呼叫,定位到在映象檔案中的相應的檔案塊。在這 個過程中,由於虛擬化的原因,客戶虛擬機器的塊位址需要經過 若干次的轉換才能找到它在物理磁碟上的準確位置。在客戶作業系統中,使用的是vba(virtualblockaddress),在vmm 中使用的是iba(imageblockaddress),就是映象檔案內的一 個偏移量,在宿主機核心的系統呼叫中使用的是pba (physicalblockaddress)。在定位到這些塊的實體地址後,才 能進行客戶作業系統所需要的各種操作。在全映象模式中, 這種位址轉換的過程相對簡單,只需要乙個線性的變換;而在 稀疏模式中,往往需要經過兩次以上的位址變換,才能完成 vba到pba的轉換過程。

rawraw就是原始的,它直接將檔案系統的儲存單元分配給 虛擬機器使用,採取直讀直寫的策略。在raw格式的檔案中,虛 擬出來的磁碟資料塊號的大小決定了該資料塊在raw檔案中 的偏移量,也就是說虛擬磁碟存放資料的順序和raw檔案中 存放資料的順序是一致的,由於這個特性,vba到iba的轉 換比較簡單,而iba實際上就是pba。在很多的實際應用中, 模板映象採用raw格式,以提高模板映象的讀效能,而增量鏡 像則使用其他格式,方便支援其他輔助特性。

raw格式的優點有:一是定址簡單,訪問效率較高;二是 可以通過格式轉換工具方便地轉換為其他格式;三是可以方 便地被宿主機掛載,可以在不啟動虛擬機器的情況下和宿主機 進行資料傳輸。但是,由於raw格式實現簡單,不支援諸如壓 縮、快照、加密和cow等特性,另外,raw格式檔案在建立時指 定大小之後,就占用了宿主機指定大小的空間,而不像qcow2 等稀疏模式的映象格式可以從很小的檔案按需地增長。

qcow2和qed

qcow2是qcow的一種改進,是qemu實現的一種虛擬 機映象格式。qcow2檔案儲存資料的基本單元是cluster,每一 個cluster由若干個資料扇區組成,每個資料扇區的大小是 512位元組。在qcow2中,要定位映象檔案的cluster,需要經過兩 次位址查詢操作,類似於主存二級頁表轉換機制,如圖2

客戶作業系統的vba,可以記為d,d=(d1,d2,d3),通過 d1所指示的l1表項的內容,找到l2表的位置a,再由d2指 示的l2表項的內容找到資料塊的位址b,d3則指示資料塊b 內的偏移量。在qcow2檔案建立初始的時候,檔案只有l1表 和檔案頭,l1表初始為空,當vm提供乙個vba需要寫操作 的時候,qcow2的底層驅動會檢查d1所指示的l1表項是否 為空,如果為空,就會在檔案尾部新建乙個l2表,並且把d1 所指示的l1表項賦值為l2表的位址,同理,也可以定位第一 次寫資料塊的位址和d2所指示的l2表項的值。當vm有讀 資料操作的時候,qcow2驅動會首先確定該資料塊是否在鏡 像檔案中,如果不在映象檔案中,則會從模板映象中讀取。在 qcow2中,資料塊的iba取決於第一次寫操作,檔案大小也會 隨著寫操作的增加而不斷增長,基本上做到了用多少空間分 配多少空間,而不像raw格式一樣,檔案建立初始就是占用了 比較大的磁碟空間。qcow2格式不僅支援cow,還支援快照、 壓縮和加密等特性。

qed的實現是qcow2的一種改型,儲存定位查詢方式和 資料塊大小和qcow一樣不同的是,在實現wqe將qcow的表rt)重寫標 dirtflag來代替

vmdk

vmdk是vmware實現的虛擬機器映象格式,與qcow2類似, vmdk也可以支援cow快照、壓縮等特性,映象檔案的大小也 是隨著資料寫入操作的增長而增長,資料塊的定址也需要通 過兩次查詢。在vmdk映象檔案的頭部,會有乙個文字描述 符(textdescriptor),該文字描述了資料在虛擬映象檔案中數 據的布局方式。文字描述符在vmdk映象檔案中可以以單獨 的檔案形式存在,也可以作為檔案頭包含在映象檔案中。 vmdk通常會由乙個basedisk,若干個link和extent組成,link 指示的是basedisk和extent的關係,extent是乙個物理上的存 儲區域,通常是乙個檔案。vmdk資料儲存的單位被叫作 grain,每個grain也由若干個512位元組大小的sector組成。在 支援稀疏儲存的vmdk中,通過二級的元資料查詢機制進行 資料塊的定位。0級元資料稱為grain目錄(graindirectory, gd),1級元資料稱為grain表(graintable,gt),gd和gt的 關係如圖3所示。在實現上,基本上和qcow2類似。

fv***不僅支援上述qcow2和vmdk除了壓縮以外的其他特

性,而且還支援cor(copyonread)和預取(adaptiveprefetching)。 fvd檔案元資料的組織和實現主要基於以下三點:

1)使用位圖(bitmap)來實現cow。位圖里的一位表示

乙個資料塊(block)的狀態,為0時表示該資料塊在模板映象 中,為1時表示在fvd映象中。和qcow2中的資料組織單元 cluster一樣,fvd資料塊的預設大小為64b。在fvd中,乙個 2mb的點陣圖可以代表1tb模板映象資料塊的狀態,而這個 2mb的點陣圖可以很方便地載入到記憶體中,可以大大提高cow 的效能。在fvd中,點陣圖也用在cor和預取之中。

2)改變qcow2的二級查詢方式,使用一級查詢方式實現 儲存定位。fvd把cow和映象檔案的儲存定位分開實現,在 cow時,使用資料塊是64kb,在虛擬映象檔案中儲存定位 時,使用資料塊(chunk)大小為1mb。這樣做的好處是大幅 度減小了查詢表的大小,可以方便地將查詢表一次載入記憶體,

減少磁碟i/o,而且一次查詢就可以方便地定位到所需的數 據塊。

3)對位圖和一級查詢**的操作記錄日誌,日誌滿的時 候一次性提交更改,以減少對位圖和查詢**的操作次數,提 高效能。由於點陣圖和一級查詢**都可以方便地載入在記憶體 之中,所以對這些資料的操作比較快。在fvd中,元資料可以 和儲存資料檔案在一起,也可以和資料檔案分開儲存。fvd格 式的實現的架構如圖4所示。

openstack 虛擬機器映象製作

準備 伺服器作業系統 centos 7 準備一台安裝了vnc viewer客戶端的windows作業系統用於訪問伺服器裡啟動的虛擬機器介面 前提是windows系統能訪問伺服器 sle 12 sp2 sap x86 64 gm 1.iso複製到伺服器 home 下 qemu img create f...

Linux 虛擬機器與 Linux Live 映象

linux 虛擬機器與 linux live 映象各有優勢,也有不足。首先我得承認,我非常喜歡頻繁嘗試新的 linux 發行版本。然而,我用來測試它們的方法根據每次目標而有所不同。在這篇文章中,我們來看看兩種執行 linux 的模式 虛擬機器或 live 映象。每一種方式都存在優勢,但是也有一些不足...

vmdk格式換成OVF格式(虛擬機器)

vmware的ovf工具。也可以試試ovftoolkit,具體操作可以網上搜尋一下。如果你安裝vmware workstation的話,它ovftool.exe檔案就在你的安裝程式的ovftool目錄下。如何使用ovftool工具 d program files vmware ovftool ovf...