KVM 的存儲虛擬化是經過存儲池(Storage Pool)和卷(Volume)來管理的。ubuntu
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,其內容以下: url
注意:Storage Pool 的類型是 「dir」,目錄的路徑就是 /var/lib/libvirt/images spa
下面咱們爲虛機 kvm1 添加一個新的磁盤,看看有什麼變化。 在 virt-manager 中打開 kvm1 的配置頁面,右鍵添加新硬件 3d
在默認 Pool 中建立一個 8G 的卷。 orm
點擊 「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。