1. 程式人生 > 其它 >安裝UOS虛擬機器(二)優化、壓縮qcow2

安裝UOS虛擬機器(二)優化、壓縮qcow2

技術標籤:虛擬化linux

qcow2簡介

qcow2是動態的,即便檔案系統不支援sparse file,檔案大小也很小

qcow2功能一:copy onwrite

qcow2的格式如下

它實行的是2-Level loopup

qcow2的資料是儲存在data clusters裡面的,每個cluster是512 byte sector

為了能夠管理這些cluster,qcow2儲存了兩層的Table,L1 table指向L2 Table,L2 Table管理data cluster.

在image裡面的offset會被解析成三部分,L1 Table Pointer先找L1,L1 Table Pointer+ offset[0]是L1中的一個entry,讀出來便是L2 Table Pointer, L2 Table Pointer + offset[1]是L2中的一個entry,讀出來便是data cluster pointer, data cluster pointer +offset[3]便是資料所在的位置。

backing file就是基於這個原理的用處,一個qcow2的image可以儲存另一個disk image的改變,而不影響另一個image

建立backing file

qemu-img create -f qcow2 -o backing_file=./ubuntutest.qcow2 ubuntutest1.qcow2

一開始新的image是空的,讀取的內容都從老的image裡面讀取。

當一個data cluster被寫入,發生改變的時候,在新的image裡面建立一個新的data cluster,這就是copy on write的意義。

優化、壓縮qcow2

上一篇中提到的qcow2,比較大,64G,拷貝等操作都不方便。

qcow2也可以轉換為qcow2,轉換的過程中,沒用的data cluster就被去掉

利用 qemu-img 將原始qcow2 壓縮。

[email protected]:~# ls -lh UOS-test.qcow2 
-rw------- 1 root root 65G 1?  13 16:46 UOS-test.qcow2
[email protected]:~# 
[email protected]:~# 
[email protected]:~# 
[email protected]:~# qemu-img convert -c -f qcow2 -O qcow2 UOS-test.qcow2 UOS-test.qcow2.backup
[email protected]
:~# [email protected]:~# ls -lh UOS-test.qcow2 -rw------- 1 root root 65G 1? 13 16:46 UOS-test.qcow2 [email protected]:~# ls -lh UOS-test.qcow2.backup -rw-r--r-- 1 root root 5.8G 1? 13 17:09 UOS-test.qcow2.backup [email protected]:~#