KVM 的存儲虛拟化是通過存儲池(Storage Pool)和卷(Volume)來管理的。
Storage Pool 是主控端上可以看到的一片存儲空間,可以是多種類型,後面會詳細讨論。Volume 是在 Storage Pool 中劃分出的一塊空間,主控端将 Volume 配置設定給虛拟機,Volume 在虛拟機中看到的就是一塊硬碟。
下面我們學習不同類型的 Storage Pool
檔案目錄是最常用的 Storage Pool 類型。
KVM 将主控端目錄 /var/lib/libvirt/images/ 作為預設的 Storage Pool。
那麼 Volume 是什麼呢?
答案就是該目錄下面的檔案了,一個檔案就是一個 Volume。
大家是否還記得我們之前建立第一個虛機 kvm1 的時候,就是将鏡像檔案 cirros-0.3.3-x8664-disk.img 放到了這個目錄下。檔案 cirros-0.3.3-x8664-disk.img 也就是Volume,對于 kvm1 來說,就是它的啟動磁盤了。
那 KVM 是怎麼知道要把 /var/lib/libvirt/images 這個目錄當做預設 Storage Pool 的呢?
實際上 KVM 所有可以使用的 Storage Pool 都定義在主控端的 /etc/libvirt/storage 目錄下,每個 Pool 一個 xml 檔案,預設有一個 default.xml,其内容如下:
注意:Storage Pool 的類型是 “dir”,目錄的路徑就是 /var/lib/libvirt/images
下面我們為虛機 kvm1 添加一個新的磁盤,看看有什麼變化。
在 virt-manager 中打開 kvm1 的配置頁面,右鍵添加新硬體
在預設 Pool 中建立一個 8G 的卷。
點選 “Finish”,可以看到新磁盤的資訊。

在 /var/lib/libvirt/images/ 下多了一個 8G 的檔案 kvm1.img
root@ubuntu:~# ls -l /var/lib/libvirt/images/ total 14044 -rw-r--r-- 1 root root 14417920 Sep 4 11:24 cirros-0.3.3-x86_64-disk.img -rw------- 1 root root 8589934592 Sep 4 21:39 kvm1.img
使用檔案做 Volume 有很多優點:存儲友善、移植性好、可複制、可遠端通路。
前面幾個優點都很好了解,這裡對“可遠端通路”多解釋一下。
遠端通路的意思是鏡像檔案不一定都放置到主控端本地檔案系統中,也可以存儲在通過網絡連接配接的遠端檔案系統,比如 NFS,或者是分布式檔案系統中,比如 GlusterFS。
這樣鏡像檔案就可以在多個主控端之間共享,便于虛機在不同主控端之間做 Live Migration;如果是分布式檔案系統,多副本的特性還可以保證鏡像檔案的高可用。
KVM 支援多種 Volume 檔案格式,在添加 Volume 時可以選擇
raw 是預設格式,即原始磁盤鏡像格式,移植性好,性能好,但大小固定,不能節省磁盤空間。
qcow2 是推薦使用的格式,cow 表示 copy on write,能夠節省磁盤空間,支援 AES 加密,支援 zlib 壓縮,支援多快照,功能很多。
vmdk 是 VMWare 的虛拟磁盤格式,也就是說 VMWare 虛機可以直接在 KVM上 運作。
下一節介紹 LVM 類型的 Storage Pool。
本文轉自CloudMan6 51CTO部落格,原文連結:http://blog.51cto.com/cloudman/1750737