kvm儲存池和儲存卷
一、kvm儲存模式
KVM的儲存選項有多種,包括虛擬磁碟檔案、基於檔案系統的儲存和基於裝置的儲存。
1.虛擬磁碟檔案
當系統建立KVM虛擬機器的時候,預設使用虛擬磁碟檔案作為後端儲存。安裝後,虛擬機器 認為在使用真實的磁碟,但實際上看到的是用於模擬硬碟的虛擬磁碟檔案。
這一額外的檔案 系統層會降低系統速度。 當然,基於磁碟映象的虛擬磁碟並非全無益處,磁碟檔案系統可以很輕鬆地用於其它的 KVM虛擬化宿主機。
但是如果您希望優化KVM虛擬化效能,最好考慮其它的儲存方式。
2.基於檔案系統的KVM儲存
在安裝KVM宿主機時,可選檔案系統為dir(directory)或fs(formatted block storage) 作為初始KVM儲存格式。預設選項為dir,使用者指定本地檔案系統中的一個目錄用於建立磁碟 映象檔案。 fs選項可以允許使用者指定某個格式化檔案系統的名稱,把它作為專用的磁碟映象檔案存 儲。
兩種KVM儲存選項之間最主要的區別在於:fs檔案系統不需要掛載到某個特定的分割槽。 兩種選項所指定的檔案系統,都可以是本地檔案系統或位於SAN上某個物理宿主機上的 網路檔案系統。後者具備一定的優勢,因為SAN可以很輕易地實現多個主機同時訪問,而本 地磁碟或檔案系統則無法實現。
還有一種基於檔案的磁碟儲存方式是netfs,使用者可以指定一個網路檔案系統的名稱, 如Samba.用這種方式作為KVM儲存很方便,因為這樣很容易訪問到位於其它伺服器上的檔案 系統,同時使用者也可以通過多臺宿主機訪問磁碟檔案。
所有的這些基於檔案的KVM儲存方式都有一個缺點:檔案系統固有缺陷。因為虛擬機器的 磁碟檔案不能直接讀取或寫入KVM儲存裝置,而是寫入宿主機OS之上的檔案系統。
這也就意 味著在訪問和寫入檔案時中間增加了額外一層,這通常會降低效能。所以,如果您希望尋找 KVM虛擬化效能最優方案,最好考慮基於裝置的儲存。
3.基於裝置的KVM儲存
另外一種KVM儲存的方式就是使用基於裝置的方式。共支援四種不同的物理儲存:磁 盤、iSCSI、SCSI和lvm邏輯盤。磁碟方式指直接讀寫硬碟裝置。iSCSI和SCSI方式可選,取 決於使用者採取SCSI或iSCSI地址把磁碟裝置連線。
這種KVM儲存方式的優勢在於,磁碟的名稱 是固定的,而不需要取決於宿主機OS搜尋到磁碟裝置的順序。
這種連線磁碟的方式也有缺點:靈活性不足。虛擬磁碟的大小很難改變,而且基於裝置 的KVM儲存不支援快照。 如果要優化KVM儲存的靈活性,可以使用LVM(Logical Volume Manager)。
LVM的優勢在 於可以使用快照,而快照並不是KVM虛擬化自帶的功能。
LVM可以把所有儲存放到一個卷組裡,從而輕鬆建立一個邏輯卷。該卷組是物理磁碟設 備的一個抽象,所以如果超出可用磁碟空間最大值,還可以向卷組中新增新的裝置,從而極 大簡化了增加儲存空間的過程,增加的空間在邏輯卷中直接可以使用。
使用LVM使得磁碟空 間分配更加靈活,而且增加和刪除儲存也更為容易。
最後,LVM無論是在單宿主機或多宿主機環境中都可以很好工作。在多宿主機環境中, 您可以在SAN上建立邏輯卷。
如果使用Cluster LVM,可以很容易的配置成多個主機同時訪問 某個邏輯卷。
二、儲存池管理
基本概念
顯示池與卷的資訊
基於目錄的儲存池
基於磁碟的儲存池
基於分割槽的儲存池
基於LVM的儲存池
基於iSCSI的儲存池
基於NFS的儲存池
1) 儲存池的基本概念 儲存池是一個由libvirt管理的檔案、目錄或儲存裝置,提供給虛擬機器使用。
儲存池被 分為儲存卷,這些儲存卷儲存虛擬映象或連線到虛擬機器作為附加儲存。libvirt通過儲存池 的形式對儲存進行統一管理、簡化操作。
對於虛擬機器操作來說,儲存池和卷並不是必需的。 支援以下型別儲存池:
三、virsh中和儲存池相關的命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
pool-autostart 自動啟動某個池
pool-build 建立池
pool-create-as 從一組變數中建立一個池
pool-create 從一個 XML 檔案中建立一個池
pool-define-as 在一組變數中定義池
pool-define 在一個XML檔案中定義(但不啟動)一個池或修改已有池
pool-delete 刪除池
pool-destroy 銷燬(刪除)池
pool-dumpxml 將池資訊儲存到XML文件中
pool-edit 為儲存池編輯 XML 配置
pool-info 檢視儲存池資訊
pool-list 列出池
pool-name 將池 UUID 轉換為池名稱
pool-refresh 重新整理池
pool-start 啟動一個(以前定義的)非活躍的池
pool-undefine 取消定義一個不活躍的池
pool-uuid 把一個池名稱轉換為池 UUID
|
四、virsh中的和儲存卷相關命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
vol-clone 克隆卷。
vol-create-as 從一組變數中建立卷
vol-create 從一個 XML 檔案建立一個卷
vol-create-from 生成卷,使用另一個卷作為輸入。
vol-delete 刪除卷
vol-download 將卷內容下載到檔案中
vol-dumpxml 儲存卷資訊到XML文件中
vol-info 檢視儲存卷資訊
vol-key 根據卷名或路徑返回卷的key
vol-list 列出卷
vol-name 根據給定卷key或者路徑返回卷名
vol-path 根據卷名或key返回卷路徑
vol-pool 為給定金鑰或者路徑返回儲存池
vol-resize 重新定義卷大小
vol-upload 將檔案內容上傳到卷中
vol-wipe 擦除卷
|
五、儲存卷命令
1.檢視系統中的儲存池
1 |
pool-list --details /或者 --all
|
2.檢視vm儲存池的資訊
1 |
pool-info vm
|
3.檢視vm儲存池中的卷資訊
1 |
vol-list vm
|
4.建立基於目錄的儲存池 dir:Filesystem Directory
1.通過virsh建立
1 2 3 |
pool-define-as test1 dir --target '/kvm-vm/dirpool/' 建立儲存池
pool-build test1 構建池 test1
pool-start test1 池 test1 已啟動<br>pool-autostart test1 池 test1 標記為自動啟動
|
5.建立基於分割槽的儲存池 fs:Pre-Formatted Block Device
Libvirtd會自動掛載mount分割槽
1.檢視硬碟
1 |
lsblk
|
2.做物理卷和卷組
1 2 3 4 |
pvcreate /dev/sdb
vgcreate vgpool /dev/sdb
pvdisplay
vgs
|
2.建立
1 2 |
pool-define-as vgpool logical -- source -name vgpool --target /dev/vgpool 定義池 vgpool
pool-start vgpool 池 vgpool 已啟動<br>pool-autostart vgpool 池 vgpool 標記為自動啟動
|
6.基於LVM的儲存池要求使用全部磁碟分割槽
1. 安裝主鍵
1 |
yum -y install rpcbind nfs-utils 客戶端和主端都要做
|
2.啟動程式
1 2 3 4 5 6 7 8 9 |
主:
systemctl start rpcbind 主伺服器只需要啟動這一個
systemctl enable rpcbind
從:
systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs-server.service
systemctl enable nfs-server.service
|
連線nfs時要麼關閉防火牆連線埠 要麼去nfs配置檔案固定埠(nfs初始狀態埠隨機的)
3.建立lvm
1 2 3 4 5 |
pvcreate /dev/sdb
vgcreate nfsvg /dev/sdb
vgdisplay nfsvg
lvcreate -n nfslv1 -l 5119 nfsvg
lvs<br>mkfs.xfs /dev/nfsvg/nfslv1
|
4.掛載lvm
1 2 3 |
mkdir /mnt/nfs
mount /dev/nfsvg/nfslv1 /mnt/nfs/ 掛載位置
vim /etc/fstab 設定開機自啟動
|
新增許可權
vim /etc/exports
重啟 rpcbind、nfs-server.service 服務
檢視是否生效
1 2 3 |
exportfs -av
showmount -e 192.174.1.11 遠端驗證
mount -t nfs 192.174.1.11: /mnt/nfs /mnt/ 遠端掛載上驗證
|
5.建立儲存池
1 2 3 4 |
pool-define-as nfspool netfs -- source -host 192.174.1.11 -- source -path /mnt/nfs --target /kvm-vm/nspool/ 定義池
pool-build nfspool 構建池
pool-start nfspool 啟動池
pool-autostart nfspool 設定自啟動池
|
六、儲存卷管理
1.儲存池概念
儲存池被分割為儲存卷(Storage Volume)
儲存卷
檔案
塊裝置(如物理分割槽、LVM邏輯卷等)
Libvirt管理的其他型別儲存的抽象
2.儲存卷管理
建立
克隆
刪除
移動
修改大小
七、建立儲存卷
1.檢視儲存池VM中的卷
1 |
vol-list vm
|
2.建立一個qcow2格式的卷
1 |
vol-create-as vgpool vspool.qcow2 8G -- format qcow2
|
3.建立基於LVM的卷
1 |
vol-create-as vgpool vgvm1 8G
|