KVM虚拟化使用

虚拟机管理

查看虚拟机列表

#查看虚拟机列表,只能看到正在运行的虚拟机
[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

vrish常用命令

#关闭虚拟机
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.

 

查看test02_2.raw信息

[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

 

进入虚拟机test02,使用fdisk -l查看磁盘

[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

 

接下来,我们扩容qcow2格式的磁盘

#若提示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
...........

 

分区新增加的2 GB磁盘

[root@localhost ~]# fdisk /dev/vda
然后输入n、p、回车、回车、+2G、w

 

新增一块qcow2格式的磁盘

[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>
………………

 

调整CPU内存、网卡

查看虚拟机配置信息

[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

 

posted @ 2021-12-22 16:09  花花de代码生活  阅读(191)  评论(0编辑  收藏  举报