【基本命令】
virsh start |
啟動 |
shutdown |
關閉 |
destroy |
強制斷電 |
suspend |
掛起 |
resume |
恢復 |
undefine |
刪除 |
dominfo |
查看配置信息 |
domiflist |
查看網卡配置信息 |
domblklist |
查看虛機的磁盤位置 |
edit |
修改配置文件 |
dumpxml |
查看虛機當前配置 |
autostart |
物理機開機后自啟動(配置后會在此目錄生成配置文件/etc/libvirt/qemu/autostart/*.xml) |
autostart --disable |
取消自動啟動 |
【相關參數】
參數名稱 |
使用時機 |
何時生效 |
–config |
任何時候 |
下一次start虛擬機時生效 |
–live |
只有在虛擬機活動時可用 |
立即生效,但是虛擬機下一次start時,會失效 |
–current |
任何時候 |
當虛擬機處於shutoff時,同–config; |
【增加網卡】
數據包傳輸基本路徑:
虛擬機 --> QEMU虛擬機網卡 --> 虛擬化層 --> 內核網橋 --> 物理網卡
KVM默認情況下是由QEMU在Linux的用戶空間模擬出來的並提供給虛擬機的。
全虛擬化:即客戶機操作系統完全不需要修改就能運行於虛擬機中,客戶機看不到真正的硬件設備,與設備的交互全是由純軟件虛擬的
半虛擬化:通過對客戶機操作系統進行修改,使其意識到自己運行在虛擬機中。因此,全虛擬化和半虛擬化網卡的區別在於客戶機是否需要修改才能運行在宿主機中。
半虛擬化使用virtio技術,virtio驅動因為改造了虛擬機的操作系統,讓虛擬機可以直接和虛擬化層通信,從而大大提高了虛擬機性能。
[root@kvm-server ~]# virsh domiflist vm-node1 #查找虛擬機網卡的MAC地址 Interface Type Source Model MAC ------------------------------------------------------- vnet0 bridge br0 virtio 52:54:00:40:75:05
[root@kvm-server ~]# virsh attach-interface vm-node1 --type bridge --source br0 --model virtio #臨時增加網卡的方法,關機后再開機新增網卡配置丟失 Interface attached successfully
[root@kvm-server ~]# virsh domiflist vm-node1 Interface Type Source Model MAC ------------------------------------------------------- vnet0 bridge br0 virtio 52:54:00:40:75:05 vnet1 bridge br0 virtio 52:54:00:5b:6c:cc
[root@kvm-server ~]# virsh edit vm-node1 #永久生效方法一:修改配置文件增加如下內容 #永久生效方法二:使用virt-manager管理工具進行操作
[root@kvm-server ~]# virsh detach-interface vm-node1 --type bridge --mac 52:54:00:84:23:3d --current #根據MAC地址刪除網卡,即時生效,如果需要最終生效也要使用virsh edit 來修改配置文件 Interface detached successfully
[root@kvm-server ~]# virsh domiflist vm-node1 Interface Type Source Model MAC ------------------------------------------------------- vnet0 bridge br0 virtio 52:54:00:40:75:05 |
【增加磁盤】
KVM虛擬機的磁盤鏡像從存儲方式上看,可以分為兩種方式,第一種方式為存儲於文件系統上,第二種方式為直接使用裸設備。
存於文件系統上的鏡像有很多格式,如raw、cloop、cow、qcow、qcow2、vmdlk、vdi等,經常使用的是raw和qcow2。
裸設備的使用方式可以是直接使用裸盤,也可以是用LVM的方式。
raw:是簡單的二進制鏡像文件,一次性會把分配的磁盤空間占用。raw支持稀疏文件特性,稀疏文件特性就是文件系統會把分配的空字節文件記錄在元數據中,而不會實際占用磁盤空間。
qcow2:第二代的QEMU寫時復制格式,支持很多特性,如快照、在不支持稀疏特性的文件系統上也支持精簡方式、AES加密、zlib壓縮、后備方式。
[root@kvm-server ~]# qemu-img create -f raw /Data/vm-node1-10G.raw 10G #創建raw格式並且大小為10G的磁盤 Formatting '/Data/vm-node1-10G.raw', fmt=raw size=10737418240
[root@kvm-server ~]# qemu-img info /Data/vm-node1-10G.raw image: /Data/vm-node1-10G.raw file format: raw virtual size: 10G (10737418240 bytes) disk size: 0
[root@kvm-server ~]# virsh attach-disk vm-node1 /Data/vm-node1-10G.raw vdb --cache none #臨時生效,關機再開機后失效 Disk attached successfully
[root@kvm-server ~]# virsh edit vm-node1 #使用edit命令,把找到的內容加到vda磁盤后面即可
磁盤鏡像格式的轉換方法: [root@kvm-server ~]# qemu-img convert -p -f raw -O qcow2 test.raw test.qcow2 #參數-p顯示進度,-f是指原有的鏡像格式,-O是輸出的鏡像格式,然后是輸入文件和輸出文件 (100.00/100%) |
【虛擬機克隆】
virt-clone --original kvm --name cloned_kvm --file /home/data/clone_kvm.qcow |
需要注意的是,克隆結束之后,網卡配置信息也被克隆了,需要登陸到console里面修改網卡配置信息。
virsh start sunhao-3 --console
【修改虛擬機配置】
# 修改配置 <domain type='kvm'> <name>node-192.168.5.90-test</name> <uuid>de4fe850-2fa7-49be-b785-77642bc95713</uuid> <memory unit='KiB'>8192000</memory> <currentMemory unit='KiB'>4194304</currentMemory> <vcpu placement='auto' current="1">16</vcpu>
# 動態修改VCPU;VCPU只能熱增加,不能減少 # 查看當前邏輯CPU數量 # 動態增加到4個 virsh setvcpus node-test 4 --live
# 動態修改內存(增減都可以)
# 查看當前內存大小 # virsh qemu-monitor-command node-test --hmp --cmd info balloon balloon: actual=4096
# 設置當前內存為8G # virsh qemu-monitor-command node-test --hmp --cmd balloon 8190 |
關於內存:
memory: 客戶機最大使用的物理機內存上限。物理機器在boot使用的最大內存。
currentMemory: 如果設置的話,一旦機器被boot起來之后,相應模塊被加載了,客戶機就會調整它的內存到這個值。