KVM虛擬機器的管理
1、使用virsh來管理虛擬機器
(1)立即模式
virsh list --all
(2)互動模式
# virsh
歡迎使用 virsh,虛擬化的互動式終端。
輸入:'help' 來獲得命令的幫助資訊
'quit' 退出
virsh #
常見的基本操作
virsh start 虛擬機器名
#啟動虛擬機器
virsh shutdown 虛擬機器名
#關閉虛擬機器
virsh destroy 虛擬機器名
#強制關閉虛擬機器
virsh vncdisplay 虛擬機器名
#查詢虛擬機器的VNC埠號
#[root@KVM01 images]# virsh vncdisplay name\=CentOS-7
#:600
virsh dumpxml
#匯出主機配置資訊
virsh undefine
#刪除主機
virsh define
#匯入主機配置
virsh domrename
#對虛擬機器進行重新命名
virsh suspend
#掛起虛擬機器
virsh resume
#恢復虛擬機器
virsh autostart
#虛擬機器開機啟動
更多引數:
virsh --help
[root@KVM01 images]# virsh --help
virsh [options]... [<command_string>]
virsh [options]... <command> [args...]
options:
-c | --connect=URI hypervisor connection URI
-d | --debug=NUM debug level [0-4]
-e | --escape <char> set escape sequence for console
-h | --help this help
-k | --keepalive-interval=NUM
keepalive interval in seconds, 0 for disable
-K | --keepalive-count=NUM
number of possible missed keepalive messages
-l | --log=FILE output logging to file
-q | --quiet quiet mode
-r | --readonly connect readonly
-t | --timing print timing information
-v short version
-V long version
--version[=TYPE] version, TYPE is short or long (default short)
commands (non interactive mode):
Domain Management (help keyword 'domain')
attach-device 從一個XML檔案附加裝置
attach-disk 附加磁碟裝置
attach-interface 獲得網路介面
autostart 自動開始一個域
blkdeviotune 設定或者查詢塊裝置 I/O 調節引數。
blkiotune 獲取或者數值 blkio 引數
blockcommit 啟動塊提交操作。
blockcopy 啟動塊複製操作。
blockjob 管理活躍塊操作
blockpull 使用其後端映像填充磁碟。
blockresize 創新定義域塊裝置大小
change-media 更改 CD 介質或者軟盤驅動器
console 連線到客戶會話
cpu-stats 顯示域 cpu 統計資料
create 從一個 XML 檔案建立一個域
define 從一個 XML 檔案定義(但不開始)一個域
desc 顯示或者設定域描述或者標題
destroy 銷燬(停止)域
detach-device 從一個 XML 檔案分離裝置
detach-device-alias detach device from an alias
detach-disk 分離磁碟裝置
detach-interface 分離網路介面
domdisplay 域顯示連線 URI
domfsfreeze Freeze domain's mounted filesystems.
domfsthaw Thaw domain's mounted filesystems.
domfsinfo Get information of domain's mounted filesystems.
domfstrim 在域掛載的檔案系統中呼叫 fstrim。
domhostname 輸出域主機名
domid 把一個域名或 UUID 轉換為域 id
domif-setlink 設定虛擬介面的連結狀態
domiftune 獲取/設定虛擬介面引數
domjobabort 忽略活躍域任務
domjobinfo 域任務資訊
domname 將域 id 或 UUID 轉換為域名
domrename rename a domain
dompmsuspend 使用電源管理功能掛起域
dompmwakeup 從 pmsuspended 狀態喚醒域
domuuid 把一個域名或 id 轉換為域 UUID
domxml-from-native 將原始配置轉換為域 XML
domxml-to-native 將域 XML 轉換為原始配置
dump 把一個域的核心 dump 到一個檔案中以方便分析
dumpxml XML 中的域資訊
edit 編輯某個域的 XML 配置
event Domain Events
inject-nmi 在虛擬機器中輸入 NMI
iothreadinfo view domain IOThreads
iothreadpin control domain IOThread affinity
iothreadadd add an IOThread to the guest domain
iothreaddel delete an IOThread from the guest domain
send-key 向虛擬機器傳送序列號
send-process-signal 向程式傳送訊號
lxc-enter-namespace LXC 虛擬機器進入名稱空間
managedsave 管理域狀態的儲存
managedsave-remove 刪除域的管理儲存
managedsave-edit edit XML for a domain's managed save state file
managedsave-dumpxml Domain information of managed save state file in XML
managedsave-define redefine the XML for a domain's managed save state file
memtune 獲取或者數值記憶體引數
perf Get or set perf event
metadata show or set domain's custom XML metadata
migrate 將域遷移到另一個主機中
migrate-setmaxdowntime 設定最大可耐受故障時間
migrate-getmaxdowntime get maximum tolerable downtime
migrate-compcache 獲取/設定壓縮快取大小
migrate-setspeed 設定遷移頻寬的最大值
migrate-getspeed 獲取最長遷移頻寬
migrate-postcopy Switch running migration from pre-copy to post-copy
numatune 獲取或者數值 numa 引數
qemu-attach QEMU 附加
qemu-monitor-command QEMU 監控程式命令
qemu-monitor-event QEMU Monitor Events
qemu-agent-command QEMU 虛擬機器代理命令
reboot 重新啟動一個域
reset 重新設定域
restore 從一個存在一個檔案中的狀態恢復一個域
resume 重新恢復一個域
save 把一個域的狀態儲存到一個檔案
save-image-define 為域的儲存狀態檔案重新定義 XML
save-image-dumpxml 在 XML 中儲存狀態域資訊
save-image-edit 為域儲存狀態檔案編輯 XML
schedinfo 顯示/設定日程安排變數
screenshot 提取當前域控制檯快照並儲存到檔案中
set-lifecycle-action change lifecycle actions
set-user-password set the user password inside the domain
setmaxmem 改變最大記憶體限制值
setmem 改變記憶體的分配
setvcpus 改變虛擬 CPU 的號
shutdown 關閉一個域
start 開始一個(以前定義的)非活躍的域
suspend 掛起一個域
ttyconsole tty 控制檯
undefine 取消定義一個域
update-device 從 XML 檔案中關係裝置
vcpucount 域 vcpu 計數
vcpuinfo 詳細的域 vcpu 資訊
vcpupin 控制或者查詢域 vcpu 親和性
emulatorpin 控制火車查詢域模擬器親和性
vncdisplay vnc 顯示
guestvcpus query or modify state of vcpu in the guest (via agent)
setvcpu attach/detach vcpu or groups of threads
domblkthreshold set the threshold for block-threshold event for a given block device or it's backing chain element
Domain Monitoring (help keyword 'monitor')
domblkerror 在塊裝置中顯示錯誤
domblkinfo 域塊裝置大小資訊
domblklist 列出所有域塊
domblkstat 獲得域裝置塊狀態
domcontrol 域控制介面狀態
domif-getlink 獲取虛擬介面連結狀態
domifaddr Get network interfaces' addresses for a running domain
domiflist 列出所有域虛擬介面
domifstat 獲得域網路介面狀態
dominfo 域資訊
dommemstat 獲取域的記憶體統計
domstate 域狀態
domstats get statistics about one or multiple domains
domtime domain time
list 列出域
Host and Hypervisor (help keyword 'host')
allocpages Manipulate pages pool size
capabilities 效能
cpu-baseline 計算基線 CPU
cpu-compare 使用 XML 檔案中描述的 CPU 與主機 CPU 進行對比
cpu-models CPU models
domcapabilities domain capabilities
freecell NUMA可用記憶體
freepages NUMA free pages
hostname 列印管理程式主機名
hypervisor-cpu-baseline compute baseline CPU usable by a specific hypervisor
hypervisor-cpu-compare compare a CPU with the CPU created by a hypervisor on the host
maxvcpus 連線 vcpu 最大值
node-memory-tune 獲取或者設定節點記憶體引數
nodecpumap 節點 cpu 對映
nodecpustats 輸出節點的 cpu 狀統計資料。
nodeinfo 節點資訊
nodememstats 輸出節點的記憶體狀統計資料。
nodesuspend 在給定時間段掛起主機節點
sysinfo 輸出 hypervisor sysinfo
uri 列印管理程式典型的URI
version 顯示版本
Interface (help keyword 'interface')
iface-begin 生成當前介面設定快照,可在今後用於提交 (iface-commit) 或者恢復 (iface-rollback)
iface-bridge 生成橋接裝置併為其附加一個現有網路裝置
iface-commit 提交 iface-begin 後的更改並釋放恢復點
iface-define define an inactive persistent physical host interface or modify an existing persistent one from an XML file
iface-destroy 刪除物理主機介面(啟用它請執行 "if-down")
iface-dumpxml XML 中的介面資訊
iface-edit 為物理主機介面編輯 XML 配置
iface-list 物理主機介面列表
iface-mac 將介面名稱轉換為介面 MAC 地址
iface-name 將介面 MAC 地址轉換為介面名稱
iface-rollback 恢復到之前儲存的使用 iface-begin 生成的更改
iface-start 啟動物理主機介面(啟用它請執行 "if-up")
iface-unbridge 分離其輔助裝置後取消定義橋接裝置
iface-undefine 取消定義物理主機介面(從配置中刪除)
Network Filter (help keyword 'filter')
nwfilter-define 使用 XML 檔案定義或者更新網路過濾器
nwfilter-dumpxml XML 中的網路過濾器資訊
nwfilter-edit 為網路過濾器編輯 XML 配置
nwfilter-list 列出網路過濾器
nwfilter-undefine 取消定義網路過濾器
nwfilter-binding-create create a network filter binding from an XML file
nwfilter-binding-delete delete a network filter binding
nwfilter-binding-dumpxml XML 中的網路過濾器資訊
nwfilter-binding-list list network filter bindings
Networking (help keyword 'network')
net-autostart 自動開始網路
net-create 從一個 XML 檔案建立一個網路
net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file
net-destroy 銷燬(停止)網路
net-dhcp-leases print lease info for a given network
net-dumpxml XML 中的網路資訊
net-edit 為網路編輯 XML 配置
net-event Network Events
net-info 網路資訊
net-list 列出網路
net-name 把一個網路UUID 轉換為網路名
net-start 開始一個(以前定義的)不活躍的網路
net-undefine undefine a persistent network
net-update 更新現有網路配置的部分
net-uuid 把一個網路名轉換為網路UUID
Node Device (help keyword 'nodedev')
nodedev-create 根據節點中的 XML 檔案定義生成裝置
nodedev-destroy 銷燬(停止)節點中的裝置
nodedev-detach 將節點裝置與其裝置驅動程式分離
nodedev-dumpxml XML 中的節點裝置詳情
nodedev-list 這臺主機中中的列舉裝置
nodedev-reattach 重新將節點裝置附加到他的裝置驅動程式中
nodedev-reset 重置節點裝置
nodedev-event Node Device Events
Secret (help keyword 'secret')
secret-define 定義或者修改 XML 中的 secret
secret-dumpxml XML 中的 secret 屬性
secret-event Secret Events
secret-get-value secret 值輸出
secret-list 列出 secret
secret-set-value 設定 secret 值
secret-undefine 取消定義 secret
Snapshot (help keyword 'snapshot')
snapshot-create 使用 XML 生成快照
snapshot-create-as 使用一組引數生成快照
snapshot-current 獲取或者設定當前快照
snapshot-delete 刪除域快照
snapshot-dumpxml 為域快照轉儲 XML
snapshot-edit 編輯快照 XML
snapshot-info 快照資訊
snapshot-list 為域列出快照
snapshot-parent 獲取快照的上級快照名稱
snapshot-revert 將域轉換為快照
Storage Pool (help keyword 'pool')
find-storage-pool-sources-as 找到潛在儲存池源
find-storage-pool-sources 發現潛在儲存池源
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
pool-event Storage Pool Events
Storage Volume (help keyword 'volume')
vol-clone 克隆卷。
vol-create-as 從一組變數中建立卷
vol-create 從一個 XML 檔案建立一個卷
vol-create-from 生成卷,使用另一個卷作為輸入。
vol-delete 刪除卷
vol-download 將卷內容下載到檔案中
vol-dumpxml XML 中的卷資訊
vol-info 儲存卷資訊
vol-key 為給定金鑰或者路徑返回卷金鑰
vol-list 列出卷
vol-name 為給定金鑰或者路徑返回卷名
vol-path 為給定金鑰或者路徑返回卷路徑
vol-pool 為給定金鑰或者路徑返回儲存池
vol-resize 創新定義卷大小
vol-upload 將檔案內容上傳到卷中
vol-wipe 擦除卷
Virsh itself (help keyword 'virsh')
cd 更改當前目錄
echo echo 引數
exit 退出這個非互動式終端
help 列印幫助
pwd 輸出當前目錄
quit 退出這個非互動式終端
connect 連線(重新連線)到 hypervisor
2、管理虛擬儲存
**虛擬化專案中儲存的注意事項**
(1)儲存的效能幾乎總是虛擬化的瓶頸
(2)通過多個硬碟驅動以分佈磁碟I/O來實現儲存解決方案
(3)考慮部署集中化的SAN/NFS來實現高可用性和實時遷移
**KVM儲存模式**
(1)基於檔案系統的儲存
dir:Filesystem Directory 虛擬檔案系統目錄
fs:Pre-Formatted Block Device
netfs:Network Exported Directory
(2) 基於裝置的儲存
Disk:Physical Disk Device
Iscsi:iSCSI Target
logical:LVM Volume Group
**虛擬磁碟型別**
(1) 固定 Fixed
在配置時,指定磁碟大小
不管在虛擬磁碟上實際儲存多少資料,都將佔用相同大小主機磁碟空間
(2) 動態 Dynamic
增長到最大容量,但是隻根據需求使用更多的空間
(3) 差異 Differencing
因為建立是差異磁碟,所以只儲存變更的資料
**KVM支援的虛擬磁碟型別**
(1) raw
這並非是一種真正的磁碟格式,而是代表虛擬機器所使用的原始映象;它並不儲存後設資料,因此可以作為保證虛擬機器相容性的候選方案。然而,也正因為它不儲存後設資料;因此不能自持某些高階特性,比如快照和壓縮等。格式簡單,容易轉換為其他的格式。需要檔案系統的支援才能支援sparse file
(2) cow:copy-on-write格式,曇花一現
(3) qcow:QEMU早期的copy-on-write格式,過渡性方案
(4) qcow2
按需進行分配磁碟空間,不管檔案系統是否支援;支援快照;支援zlib的磁碟壓縮;支援AES的加密
(5) vmdk(Virtual Machine Disk)
VMware環境當中預設使用的磁碟格式
(6) vhd vhdx(Virtual Hard Disk)
**微軟預設採用的檔案格式**
可以通過qemu-img --help檢視支援的格式
qemu-img --help | grep Supported
#支援的格式: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug
使用qemu-img管理虛擬磁碟
qemu-img 是一個功能強制磁碟映象管理工具
(1)常用的命令:
check 檢查完整性
create 建立映象
commit 提交更改
compare 比較
convert 轉換
info 獲得資訊
map 對映
snapshot 快照管理
rebase 在已有的映象的基礎上建立新的映象
resize 調整大小
amend 修訂映象格式選項
(2)建立磁碟格式:只輸入磁碟名和大小建立
qemu-img create t1.img 2g
#Formatting 't1.img', fmt=raw size=2147483648
#預設的磁碟格式fmt=raw
(3)檢視虛擬磁碟的資訊
qemu-img info t1.img
#image: t1.img #檔名稱
#file format: raw #檔案格式
#virtual size: 2.0G (2147483648 bytes) #虛擬磁碟的大小
#disk size: 0 #磁碟空間尺寸是0
(4)檢查虛擬磁碟
qemu-img check t1.img
#qemu-img: This image format does not support checks
check一般不支援raw格式,支援其他格式
qemu-img check windowsxp.img
#No errors were found on the image.
#131072/131072 = 100.00% allocated, 0.00% fragmented, 0.00% compressed clusters
#Image end offset: 8591507456
根據以上測試,預設情況下qemu-img建立的磁碟檔案的型別是動態的(Dynamic 空洞)會根據真實存放資料 的大小進行動態擴容直到磁碟空間設定值的大小。
預分配磁碟策略(qcow2)
(1) off
預設策略,即不使用預分配策略
(2) metadata
分配後設資料(metadata),預分配後的虛擬磁碟仍然屬於稀疏映像型別(空洞檔案)
(3) full
分配所有磁碟空間並置零,預分配後的虛擬磁碟屬於非稀疏映像型別
(4)falloc
分配檔案的塊並標示它們的狀態為未初始化,相對full模式來說,建立虛擬磁碟的速度要快很多。
preallocation='預分配策略' -- 建立時指定引數
預分配策略裡,off和metadata預分配策略都屬於空洞檔案,而falloc和full屬於非空洞檔案
登入內嵌的虛擬機器
[root@KVM01 images]# ssh 192.168.122.66
The authenticity of host '192.168.122.66 (192.168.122.66)' can't be established.
ECDSA key fingerprint is SHA256:IVdQC4wtAamQDwOTGFdF7PkJSxMN1UgHlv2g7WE/0qY.
ECDSA key fingerprint is MD5:4a:bc:6f:1c:92:16:80:52:6e:5a:3b:5d:8b:6c:8a:52.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.66' (ECDSA) to the list of known hosts.
root@192.168.122.66's password:
Last login: Mon Oct 19 20:37:51 2020
[root@kvm03 ~]# exit
登出
虛擬機器的遷移(不同格式虛擬機器的遷移)
1、VMware Workstation虛擬機器中找一個關閉狀態的虛擬機器進行匯出
選擇要匯出的虛擬機器—點選檔案—點選匯出OVF
正在匯出
匯出的磁碟檔案
將磁碟檔案匯入到KVM虛擬機器中
匯入到該路徑下:/var/lib/libvirt/images,注意此時格式為vmdk
進行格式的修改:
qemu-img convert -O qcow2 x3-disk1.vmdk x3-disk1.img
檢視匯入的詳情
qemu-img info KVM02_.44-disk1.img
#image: KVM02_.44-disk1.img
#file format: qcow2
#virtual size: 80G (85899345920 bytes)
#disk size: 127M
#cluster_size: 65536
#Format specific information:
# compat: 1.1
# lazy refcounts: false
建立虛擬機器環境:
virt-install --import --name=KVM02.44 --vcpus=1 --ram=1024 --disk bus=scsi,path=/var/lib/libvirt/images/KVM02_.44-disk1.img --network type=bridge,source=virbr0 --network network=default --graphics vnc,listen=0.0.0.0 --os-type=linux --os-variant=rhel7 --noautoconsole
#不設定埠,預設5900埠
netstat -lnupt | grep 59
#tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 3562/qemu-kvm
用VNC連線5900埠的虛擬機器:
調整虛擬磁碟的大小(qcow2只能調大)
(1) 語法格式
qemu-img --help | grep resize resize [-q] filename [+ | -]size
(2) 操作之前,一定要做好資料備份
(3) 增加檔案大小後,需要在客戶機中使用fdisk,parted等分割槽工具進行相應操作才能真正讓客戶機使用到增加後的映象空間。
(4) 縮小映象之前,要在客戶機中保證裡面的檔案系統有空餘空間,否則會資料丟失
(5) qcow2不支援縮小映象的操作
qemu-img resize KVM02_.44-disk1.img +1G
qemu-img info KVM02_.44-disk1.img #檢視是否修改成功
儲存池
儲存池的基礎概念
(1) libvirt可以以儲存池的形式對儲存進行統一管理,簡化操作
(2) 對於虛擬機器操作來說,儲存池和卷並不是必須的
(3) 支援以下儲存池
dir:Filesystem Directory #檔案系統目錄
disk:Physical Disk Device #磁碟裝置
fs:Pre-Formatted Block Device
gluster:Gluster FileSystem
iscsi:iSCSI Target
logical:LVM Volume Group
mpath:Multipath Device Enumerator #多路徑裝置
netfs:Network Export Directory
rbd:RADOS Block Device/Ceph
scsi:SCSI Host Adapter
sheepdog:Sheepdog Filesystem
儲存池的相關命令
儲存池建立:
顯示池與卷的資訊 # virsh pool-list --help
檢視所有的儲存池 # virsh pool-list
檢視某個儲存池的詳細資訊 # virsh pool-list
檢視某個儲存池中的所有儲存卷 # virsh vol-list vm
檢視所有的儲存池 # virsh pool-list
檢視某個儲存池的詳細資訊 # virsh pool-list
檢視某個儲存池中的所有儲存卷 # virsh vol-list vm
**1、基於目錄的儲存池**
(1) 準備目錄
# mkdir /guest_images
(2)設定目錄許可權
# chown root:root /guest_images/
# chmod 700 /guest_images
(3)通過virsh建立一個自定義儲存池
# virsh pool-define-as guest_images dir --target "/guest_images"
(4)啟動儲存池
# virsh pool-start guest_images
(5)刪除自定義的儲存池
# virsh pool-destroy guest_images #銷燬池
# virsh pool-delete guest_images #刪除池目錄
# virsh pool-undefine guest_images #清除儲存池配置檔案
**2、基於分割槽的儲存池**
(1)libvirtd會自動mount分割槽
(2) 準備分割槽並建立檔案系統
# fdisk /dev/sdb
# mkfs.xfs /dev/sdb1
(3)通過virsh建立:
Source Path:塊裝置名
Target Path:mount到的目錄名
# virsh pool-define-as guest_images_fs fs --source-dev "/dev/sdb1" --target "/guest_images2"
# virsh pool-build guest_images_fs #建立儲存池儲存目錄
# virsh pool-start guest_images_fs #啟動儲存
# virsh pool-autostart guest_images_fs #標記儲存池開機自啟動
# mount | grep /dev/sdb1 #已經自動掛載
/dev/sdb1 on /guest_images2 type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,noquota)
例如:
[root@KVM01 ~]# virsh pool-define-as guest_images_fs fs --source-dev "/dev/sdb1" --target "/guest_images2"
定義池 guest_images_fs
[root@KVM01 ~]# virsh pool-build guest_images_fs
構建池 guest_images_fs
[root@KVM01 ~]# virsh pool-start guest_images_fs
池 guest_images_fs 已啟動
[root@KVM01 ~]# virsh pool-autostart guest_images_fs
池 guest_images_fs 標記為自動啟動
[root@KVM01 ~]# mount | grep /dev/sdb1
/dev/sdb1 on /guest_images2 type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,noquota)
[root@KVM01 ~]# virsh pool-list
名稱 狀態 自動開始
-------------------------------------------
guest_images_fs 活動 是
images 活動 是
iso 活動 是
[root@KVM01 ~]# virsh pool-destroy guest_images_fs
銷燬池 guest_images_fs
[root@KVM01 ~]# virsh pool-delete guest_images_fs
池 guest_images_fs 被刪除
[root@KVM01 ~]# virsh pool-undefine guest_images_fs
池 guest_images_fs 已經被取消定義
**3、基於LVM的儲存池**
(1) 基於LVM的儲存池要求使用全部磁碟分割槽
(2) 建立時儲存池,有兩種方法
使用現有的VG
建立新的VG
Target Path:新的卷組名
Source Path:儲存裝置的位置
Build Pool:會建立新的VG
(3)通過virsh命令建立vg並建立基於LVM的儲存池
# virsh pool-define-as guest_images_lvm3 logical --source-dev=/dev/sdc --source- name=libvirt_lvm --target=/dev/libvirt_vg
(4)virsh命令建立卷組libvirt_lvm
# virsh pool-build guest_images_lvm3
(5)啟動LVM儲存池並標記開機自啟動
# virsh pool-start guest_images_lvm3
# virsh pool-autostart guest_images_lvm3
**4、基於NFS的儲存池**
(1)# virsh pool-define-as --name nfstrial2 --type netfs --source-host 192.168.150.132 --source-path /nfsshare --target /nfstrial2
[root@KVM01 ~]# systemctl is-active firewall.sevice
#關閉防火牆
[root@KVM01 ~]# sed -i '/^SELINUX=/ cSELINUX=disable' /etc/selinux/config
#禁用SELinux
[root@KVM01 ~]# setenforce 0
#臨時禁用SELinux
[root@KVM01 ~]# yum install -y nfs-utils rpcbind
#下載NFS包
[root@KVM01 ~]# setenforce 0
#建立一個目錄
[root@KVM01 ~]# vim /etc/exports
/vm 192.168.16.0/24(rw,sync,all_squash,anonuid=0,anongid=0)
#共享/vm 目錄
[root@KVM01 ~]# mkdir /vm
#建立/VM 目錄
[root@KVM01 ~]# systemctl restart rpcbind
[root@KVM01 ~]# systemctl restart nfs-server.service
#重啟rpcbind nfs服務
[root@KVM01 ~]# showmount -e localhost
Export list for localhost:
/vm 192.168.16.0/24
#檢視是否成功
[root@KVM01 ~]# virsh pool-define-as --name nfstrial2 --type netfs --source-host 192.168.16.55 --source-path /nfsshare --target /nfstrial2
定義池 nfstrial2
分割槽並建立檔案系統
儲存卷
(1)儲存池被分割為儲存卷(Storage Volume)
(2)儲存卷
檔案
塊裝置(如物理分割槽,LVM邏輯卷等)
libvirt管理的其他型別儲存的抽象
儲存卷的相關命令
儲存卷的建立
**基於目錄建立vm儲存池**
[root@KVM01 ~]# virsh pool-define-as vm dir --target "/vm"
定義池 vm
[root@KVM01 ~]# mkdir /vm
[root@KVM01 ~]# virsh pool-build vm
構建池 vm
[root@KVM01 ~]# virsh pool-start vm
池 vm 已啟動
[root@KVM01 ~]# virsh pool-autostart vm
池 vm 標記為自動啟動
[root@KVM01 ~]# virsh pool-list
名稱 狀態 自動開始
-------------------------------------------
images 活動 是
iso 活動 是
vm 活動 是
**基於目錄的儲存池中的儲存卷管理**
(1)向vm儲存池中建立一個儲存卷
[root@KVM01 ~]# virsh vol-create-as vm test1.qcow2 1G --format qcow2
建立卷 test1.qcow2
(2)檢視test1.qcow2的卷資訊:兩種方式
方式一:
[root@KVM01 ~]# virsh vol-info /vm/test1.qcow2
方式二:
[root@KVM01 ~]# virsh vol-info test1.qcow2 --pool vm
**儲存卷的克隆**
[root@KVM01 ~]# virsh vol-clone test1.qcow2 test2.qcow2 --pool vm
使用 test2.qcow2 克隆的卷 test1.qcow2
[root@KVM01 ~]# virsh vol-info test2.qcow2 --pool vm
名稱: test2.qcow2
型別: 檔案
容量: 1.00 GiB
分配: 196.00 KiB
**刪除基於目錄的儲存池的儲存卷**
[root@KVM01 vm]# virsh vol-delete /vm/test2.qcow2
卷 /vm/test2.qcow2 被刪除
[root@KVM01 vm]# virsh vol-delete /vm/test1.qcow2
卷 /vm/test1.qcow2 被刪除
管理快照
**快照概念**
(1)磁碟快照
對磁碟資料進行快照
主要用於虛擬機器備份等場合
(2)記憶體快照
對虛擬機器的記憶體/裝置資訊進行儲存
該機制同時用於休眠恢復,遷移等場景
主要使用virsh save(qemu migrate to file)實現,只能對執行的虛擬機器進行
(3)檢查點快照
同時儲存虛擬機器的磁碟快照和記憶體快照
用於將虛擬機器恢復到某個時間點
可以保證資料的一致性
**磁碟快照分類**
(1) 按快照資訊儲存分為:
內建快照:快照資料和base磁碟資料放在一個qcow2檔案中
外接快照:快照資料單獨的qcow2檔案存放
(2)按虛擬機器狀態可以分為:
關機態快照:資料可以保持一致性
執行態快照:資料無法保持一致性,類似與系統crash後的磁碟資料。使用是可能需要fsck等操作。
(3)按磁碟數量可以分為:
單盤:單盤快照不涉及原子性
多盤:涉及原子性。主要分兩個方面:1,是所有盤快照點相同 2,所有盤要麼都快照成功,要麼都快
照失敗。主要依賴於qemu的transaction實現
**格式**
[root@KVM01 vm]# qemu-img --help | grep snapshot
snapshot [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename
'-a' #快照回滾
'-c' #建立快照
'-d' #刪除快照
'-l' #顯示快照列表
[root@KVM01 images]# qemu-img snapshot -c s1 centos7u6.img
[root@KVM01 images]# qemu-img snapshot -l centos7u6.img
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 s1 0 2020-10-21 20:17:03 00:00:00.000
[root@KVM01 images]# qemu-img snapshot -d s1 centos7u6.img
#刪除快照
[root@KVM01 images]# qemu-img snapshot -a s1 centos7u6.img
#在虛擬機器中刪除一個檔案然後進行磁碟迴滾
注:進行磁碟快照回滾時需要關閉虛擬機器,回滾後,資料已經恢復qemu-img方式的磁碟快照只能支援原生態的qcow2格式,不支援從raw格式轉換而來的qcow2不然會出現問題
相關文章
- KVM [ 4 ] --- KVM虛擬機器管理:儲存池,虛擬機器快照,網路網橋虛擬機
- KVM虛擬機器的冷遷移虛擬機
- 虛擬化技術之kvm虛擬機器建立工具qemu-kvm虛擬機
- kvm 修改虛擬機器名稱虛擬機
- kvm純命令建立虛擬機器虛擬機
- kvm 安裝 windows 虛擬機器Windows虛擬機
- Linux 安裝 KVM 虛擬機器Linux虛擬機
- KVM虛擬機器遷移(靜態)虛擬機
- KVM虛擬機器新增物理網路卡虛擬機
- 讓KVM虛擬機器支援console功能虛擬機
- 在 fnOS上安裝 KVM 虛擬化,並使用 Cockpit 網頁管理虛擬機器KPI網頁虛擬機
- KVM虛擬化平臺管理
- 虛擬化技術之kvm虛擬機器建立工具virt-install虛擬機
- kvm虛擬機器ping 不通閘道器和外網虛擬機
- 抽空學學KVM(七):虛擬機器快照和克隆虛擬機
- 實操:KVM虛擬化管理平臺操作
- 【虛擬機器資料恢復】Linux系統下誤刪除KVM虛擬機器的資料恢復案例虛擬機資料恢復Linux
- Linux伺服器下誤刪除了kvm虛擬機器如何找回Linux伺服器虛擬機
- 玩玩虛擬化-KVM
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- 【虛擬化資料恢復】KVM虛擬機器誤刪除資料恢復案例資料恢復虛擬機
- KVM 一鍵批量建立虛擬機器 自動設定IP虛擬機
- Ubuntu 20.04.2 KVM虛擬機器動態遷移實現(下)Ubuntu虛擬機
- Ubuntu 20.04.2 KVM虛擬機器動態遷移實現(上)Ubuntu虛擬機
- 虛擬化四、KVM虛擬化技術
- 主流虛擬化平臺 QEMU-KVM 被曝存在漏洞,可完全控制宿主機及其虛擬機器虛擬機
- linux系統下kvm虛擬機器資料恢復成功案例Linux虛擬機資料恢復
- KVM虛擬機器處於暫停狀態怎麼處理虛擬機
- 測試開發之系統篇-安裝KVM虛擬機器虛擬機
- java虛擬機器和Dalvik虛擬機器Java虛擬機
- Android 虛擬機器 Vs Java 虛擬機器Android虛擬機Java
- 使用KVM的API編寫一個簡易的AArch64虛擬機器API虛擬機
- 如何在 Cockpit 中管理虛擬機器KPI虛擬機
- PowerShell管理Hyper-V虛擬機器虛擬機
- 虛擬機器與容器的混合管理實踐虛擬機
- Linux虛擬機器怎麼拍攝快照並管理?Linux虛擬機器拍攝快照並管理的操作步驟Linux虛擬機
- KVM虛擬化環境搭建
- 部署KVM虛擬化平臺