安裝UOS虛擬機器(二)優化、壓縮qcow2
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]:~#