KVM虛擬化使用
阿新 • • 發佈:2021-12-22
檢視虛擬機器列表
#檢視虛擬機器列表,只能看到正在執行的虛擬機器
[root@kvm ~]# virsh list
Id Name State
----------------------------------------------------
2 test running
#檢視虛擬機器列表,包括未執行的虛擬機器
[root@kvm ~]# virsh list --all
Id Name State
----------------------------------------------------
2 test running
[root@kvm ~]# virsh console test
Connected to domain test
Escape character is ^]
//如果遲遲未動敲下回車就ok,下面就是正常登入時需要輸入的使用者名稱密碼
CentOS Linux 7 (Core)
Kernel 3.10.0-327.el7.x86_64 on an x86_64
localhost login:
若發生以下報錯資訊
#報錯資訊
[root@kvm ~]# virsh console test
Connected to domain test
Escape character is ^]
error: operation failed: Active console session exists for this domain
#解決方法
[root@kvm ~]# ps -ef |grep console
root 11167 10987 0 01:55 tty1 00:00:00 virsh console test
root 16017 15750 0 10:01 pts/1 00:00:00 grep --color=auto console
[root@kvm ~]# kill -9 11167
#關閉虛擬機器
virsh shutdown test
#開啟虛擬機器
virsh start test
#類似stop,強制停止
virsh destroy test
#徹底銷燬虛擬機器,會刪除虛擬機器配置檔案,virsh list --all就看不到
virsh undefine test
#宿主機開機該虛擬機器也開機
virsh autostart test
#解除開機啟動
virsh autostart --disable test
#掛起
virsh suspend test
#恢復
virsh resume test
克隆虛擬機器之前,要先關閉虛擬機器,不然會提示這種錯誤
#關閉虛擬機器
[root@kvm ~]# virsh shutdown test
Domain test is being shutdown
#開始克隆
[root@kvm ~]# virt-clone --original test --name test02 --file
/kvm_data/test02.img
Allocating 'test02.img' 3%
[= ] 20 MB/s | 365 MB 00:08:23 ETA
#克隆完成且成功
[root@kvm ~]# virt-clone --original test --name test02 --file
/kvm_data/test02.img
Allocating 'test02.img' | 10 GB 00:00:35
Clone 'test02' created successfully.
命令解釋: --original:指定克隆源虛擬機器。 --name:指定克隆後的虛擬機器名字。 --file:指定目標虛擬機器的虛擬磁碟檔案
檢視虛擬機器配置檔案/etc/libvirt/qemu/,看是否增加test02.xml檔案
[root@kvm ~]# ls /etc/libvirt/qemu/
networks test02.xml test.xml
啟動剛剛克隆的虛擬機器test02,首先檢視虛擬機器列表,然後啟動克隆的虛擬機器test02
#檢視虛擬機器列表
[root@kvm ~]# virsh list --all
Id Name State
----------------------------------------------------
- test shut off
- test02 shut off
#進入test02
[root@kvm ~]# virsh start test02
Domain test02 started
[root@kvm ~]# virsh snapshot-create test
Domain snapshot 1588485687 created
檢視test.img資訊,同時會檢視到快照列表
[root@kvm ~]# qemu-img info /kvm_data/test.img
image: /kvm_data/test.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.1G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 1588485687 0 2020-05-03 14:01:27 00:00:00.000
Format specific information:
compat: 1.1
lazy refcounts: true
[root@kvm ~]# virsh snapshot-list test
Name Creation Time State
------------------------------------------------------------
1588485687 2020-05-03 14:01:27 +0800 shutoff
[root@kvm ~]# virsh snapshot-current test
......
[root@kvm ~]# ls /var/lib/libvirt/qemu/snapshot/test/
1588485687.xml
恢復指定快照
[root@kvm ~]# virsh snapshot-revert test 1588485687
刪除指定快照
[root@kvm ~]# virsh snapshot-delete test 1588485687
Domain snapshot 1588485687 deleted
檢視虛擬磁碟格式
[root@kvm ~]# qemu-img info /kvm_data/test.img
image: /kvm_data/test.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.1G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
建立2 GB的RAW格式磁碟
[root@kvm ~]# qemu-img create -f raw /kvm_data/test_1.img 2G
Formatting '/kvm_data/test_1.img', fmt=raw size=2147483648
檢視test1.img大小
##可以看到qcow2檔案比較小,raw檔案大小和我們指定空間大小一樣是2G
##raw格式的磁碟效能比qcow2要好,但是raw格式的磁碟無法做快照
[root@kvm ~]# ls -lh /kvm_data/test_1.img
-rw-r--r-- 1 root root 2.0G May 3 15:11 /kvm_data/test_1.img
[root@kvm ~]# ls -lh /kvm_data/test_1.qcow2
-rw-r--r-- 1 root root 193K May 3 15:38 /kvm_data/test_1.qcow2
將test02轉成raw格式
[root@kvm ~]# qemu-img convert -O raw
/kvm_data/test02.img /kvm_data/test02_2.raw
更改磁碟格式和檔案路徑,然後啟動test02虛擬機器
[root@kvm ~]# virsh edit test02
…………
<disk type='file' device='disk'>
<driver name='qemu' type='qcow'/>
<source file='/kvm_data/test02.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
//找到上面這部分將qcow修改為raw,/kvm_data/test02.img改為/kvm_data/test02_2.raw
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm_data/test02_2.raw'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
............
檢視磁碟所屬使用者和組
[root@kvm ~]# ls -l /kvm_data/
total 3310628
drwx------ 2 root root 16384 Apr 29 00:20 lost+found
-rw-r--r-- 1 root root 10737418240 May 3 16:14 test02_2.raw
-rw------- 1 root root 1133772800 May 3 16:02 test02.img
-rw-r--r-- 1 root root 2147483648 May 3 15:11 test_1.img
-rw-r--r-- 1 root root 197120 May 3 16:05 test_1.qcow2
-rw------- 1 root root 10739384832 May 3 14:14 test.img
啟動虛擬機器test02,然後再次檢視磁碟所屬使用者和組
[root@kvm ~]# virsh start test02
Domain test02 started
#啟動後所屬組變化成qemu的是test02_2.raw,證明這個磁碟正在被使用
[root@kvm ~]# ls -l /kvm_data/
total 3310628
drwx------ 2 root root 16384 Apr 29 00:20 lost+found
-rw-r--r-- 1 qemu qemu 10737418240 May 3 16:14 test02_2.raw
-rw------- 1 root root 1133772800 May 3 16:02 test02.img
-rw-r--r-- 1 root root 2147483648 May 3 15:11 test_1.img
-rw-r--r-- 1 root root 197120 May 3 16:05 test_1.qcow2
-rw------- 1 root root 10739384832 May 3 14:14 test.img
在這裡磁碟一共有兩種格式,一種是RAW格式,一種是qcow2格式
首先擴容RAW格式
[root@kvm ~]# qemu-img resize /kvm_data/test02_2.raw +2G
Image resized.
[root@kvm ~]# qemu-img info /kvm_data/test02_2.raw
image: /kvm_data/test02_2.raw
file format: raw
virtual size: 12G (12884901888 bytes)
disk size: 1.0G
[root@kvm ~]# virsh console test02
#可以看到磁碟還是10G
[root@localhost ~]# fdisk -l
Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
......
退出終端,關閉test02虛擬機器,重新啟動,然後再次進入虛擬機器test02,使用fdisk -l檢視磁碟
[root@kvm ~]# virsh destroy test02
Domain test02 destroyed
[root@kvm ~]# virsh start test02
Domain test02 started
#可以看到現在已經12G了
[root@kvm ~]# virsh console test02
[root@localhost ~]# fdisk -l
Disk /dev/vda: 12.9 GB, 12884901888 bytes, 25165824 sectors
除了對已有磁碟擴容外,還可以額外增加磁碟
[root@kvm ~]# qemu-img create -f raw /kvm_data/test02_3.raw 5G
Formatting '/kvm_data/test02_3.raw', fmt=raw size=5368709120
使用virsh edit編輯test02虛擬機器,將新磁碟增加到test02虛擬機器
[root@kvm ~]# virsh edit test02
………………
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm_data/test02_2.raw'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06'
function='0x0'/>
</disk>
//找到這一部分內容,在下面增加以下內容
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm_data/test02_3.raw'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09'
function='0x0'/>
</disk>
………………
關閉test02虛擬機器,重新啟動,然後進入該虛擬機器,使用fdisk -l檢視磁碟
[root@kvm ~]# virsh destroy test02
Domain test02 destroyed
[root@kvm ~]# virsh start test02
Domain test02 started
[root@kvm ~]# virsh console test02
#可以看到多了一塊5 GB的磁碟
[root@localhost ~]# fdisk -l
......
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 1026047 512000 83 Linux
/dev/vda2 1026048 20971519 9972736 8e Linux LVM
/dev/vda3 20971520 25165823 2097152 83 Linux
#若提示qemu-img: Can't resize an image which has snapshots,需要刪除快照
[root@kvm ~]# qemu-img resize /kvm_data/test.img +2G
Image resized.
檢視test.img資訊
[root@kvm ~]# qemu-img info /kvm_data/test.img
image: /kvm_data/test.img
file format: qcow2
virtual size: 12G (12884901888 bytes)
disk size: 1.1G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
關閉test虛擬機器,重新啟動,然後再次進入虛擬機器test02,使用fdisk -l檢視磁碟
[root@kvm ~]# virsh destroy test
Domain test destroyed
[root@kvm ~]# virsh start test
Domain test started
[root@kvm ~]# virsh console test
[root@localhost ~]# fdisk -l
...........
[root@localhost ~]# fdisk /dev/vda
然後輸入n、p、回車、回車、+2G、w
[root@kvm ~]# qemu-img create -f qcow2 /kvm_data/test_2.img 5G
Formatting '/kvm_data/test_2.img', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off
使用virsh edit編輯test虛擬機器,將新磁碟增加到test虛擬機器(想要檢視是否正確按照上面的步驟關閉然後再進然後檢視即可
[root@kvm ~]# virsh edit test
………………
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/kvm_data/test.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06'
function='0x0'/>
</disk>
//找到這一部分內容,在下面增加以下內容
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/kvm_data/test_2.img'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>
………………
[root@kvm ~]# virsh dominfo test
Id: 8
Name: test
UUID: 49d7cb9c-20dc-42dd-a260-01532b5132e5
OS Type: hvm
State: running
CPU(s): 1
CPU time: 20.8s
Max memory: 1048576 KiB
Used memory: 524288 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
[root@kvm ~]# virsh edit test
…………
<memory unit='KiB'>1048576</memory>
//最大記憶體
<currentMemory unit='KiB'>524288</currentMemory>
//可用記憶體
<vcpu placement='static' current='1'>2</vcpu>
//最大cpu
………………
//將以上內容修改為如下內容
…………
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>624288</currentMemory>
<vcpu placement='static' current='1'>2</vcpu>
…………
關閉虛擬機器,重啟動虛擬機器
[root@kvm ~]# virsh destroy test
Domain test destroyed
[root@kvm ~]# virsh start test
Domain test started
#檢視是否修改成功
[root@kvm ~]# virsh dominfo test
Id: 10
Name: test
UUID: 49d7cb9c-20dc-42dd-a260-01532b5132e5
OS Type: hvm
State: running
CPU(s): 1
CPU time: 21.4s
Max memory: 1048576 KiB
Used memory: 624288 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
還可以動態修改記憶體
#動態修改記憶體
[root@kvm ~]# virsh setmem test 800m
#動態修改cpu,只可以增加不可以減少
[root@kvm ~]# virsh setvcpus test 2
[root@kvm ~]# virsh domiflist test
Interface Type Source Model MAC
-------------------------------------------------------
vnet1 bridge br0 virtio 52:54:00:93:bf:07
增加一塊新的網絡卡,並設定為NAT網路模式(virbr0類似VMware的VMnet8),這裡如果寫--source br0,則網路模式為橋接
[root@kvm ~]# virsh attach-interface test --type bridge --source virbr0
Interface attached successfully
[root@kvm ~]# virsh domiflist test
Interface Type Source Model MAC
-------------------------------------------------------
vnet1 bridge br0 virtio 52:54:00:93:bf:07
vnet2 bridge virbr0 rtl8139 52:54:00:29:ed:8b
[root@kvm ~]# virsh dumpxml test > /etc/libvirt/qemu/test.xml
進入test虛擬機器,檢視網絡卡資訊
[root@kvm ~]# virsh console test
[root@localhost ~]# ip add
首先關閉虛擬機器
[root@kvm ~]# virsh shutdown test
Domain test is being shutdown
[root@kvm ~]# virsh domblklist test
Target Source
------------------------------------------------
vda /kvm_data/test.img
vdb /kvm_data/test_2.img
hda -
#如果是遠端機器,需要把該配置檔案拷貝到遠端機器上
[root@kvm ~]# virsh dumpxml test > /etc/libvirt/qemu/test03.xml
#如果是遷移到遠端,則需要把該磁碟檔案拷貝到遠端機器上
[root@kvm ~]# rsync -av /kvm_data/test.img /kvm_data/test03.img
//-bash: rsync: command not found則yum install -y rsync
sending incremental file list
test.img
sent 10,742,006,844 bytes received 35 bytes 60,179,310.25 bytes/sec
total size is 10,739,384,832 speedup is 1.00
因為是遷移到本機,配置檔案用的是test子機的配置,不改會有衝突,所以需要修改該檔案。如果是遠端機器不用修改
[root@kvm ~]# vi /etc/libvirt/qemu/test03.xml
<name>test03</name>
//修改domname:
//修改uuid(隨便改一下數字,位數不要變)
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/kvm_data/test03.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
//修改磁碟路徑
檢視虛擬機器列表,會發現新遷移的虛擬機器test03
[root@kvm ~]# virsh list --all
Id Name State
----------------------------------------------------
6 test02 running
- test shut off
- test03 shut off