KVM 虚拟化部署管理迁移等深入详解

虚拟化介绍

什么是虚拟化

简单理解: 是指通过虚拟化的一种技术将一台实体计算机虚拟为多台逻辑计算机,在一台计算机上面同时运行多个逻辑计算机。每个逻辑计算机可以运行不同的操作系统。  提高计算机的工作效率。

把所有的资源进行整合,提高资源的利用率 

按需分配    

为什么要使用虚拟化?

提高计算机资源的利用率和程序运行环境的安全隔离  还可以有效的防止资源的浪费。

优势:

1. 降低运营成本

2. 提高应用兼容性

3. 加速应用部署

4. 提高服务可用性

5. 提升资源的利用率

6. 动态资源分配

7. 降低能源消耗 

虚拟化的应用场景

1. 多版本操作系统共存   

2. 机房迁移,  虚拟化只需要迁移虚拟主机就可以

3. 相同业务部署   克隆  

4. 软件发布测试,体验    

虚拟化的软件介绍

Xen   
    软件是纯模拟,全部都是虚拟化! 特别慢!

QEMU
    性能特别的好,需要用的特殊的内核     经过专门修改之后的内核  

VMware ESCI  
    商业软件  部署特别快    贵   好用  

VirtualBox  
    开源的虚拟机软件   

Kvm  虚拟化管理平台   使用范围很广  
    基于内核的虚拟机   开源软件 
    x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案
    为处理器提供底层虚拟化,可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
    管理平台  qemu-kvm  虚拟机上层控制和界面 

安装部署Kvm

Kvm部署CentOS7.6虚拟机

#虚拟机需要开启内核虚拟化  
内存 == 4G    磁盘  ==  100G

#安装操作系统
CentOS-7.6

#服务端 
host kvm01 
ip 10.0.0.11 

img

[root@kvm01 ~]# yum  install -y  libvirt  virt-install  qemu-kvm


libvirt         #虚拟机管理, kvm  xen  lxc等软件

virt-install    #虚拟机的安装和克隆

qemu-kvm        #管理虚拟机的磁盘  

#启动
[root@kvm01 ~]# systemctl  start libvirtd.service 
[root@kvm01 ~]# systemctl  enable  libvirtd.service

#下载 VNC     
http://www.tightvnc.com 
VNC软件,用于VNC(Virtual Network Computing),为一种使用RFB协议的显示屏画面分享及远程操作软件。此软件借由网络,可发送键盘与鼠标的动作及即时的显示屏画面,不受操作系统限制,可跨平台使用

#安装虚拟机的参数
参数                   参数说明

--virt-type         #要使用的管理程序名称 (kvm, qemu, xen, ...)

--os-type           #系统类型 linux  unix  windows

--os-variant        #客户机上安装的操作系统,如:'fedora18'、'rhel7'、'winxp' 等。

-n/--name           #客户机实例名称

--memory            #配置客户机虚拟内存大小

--vcpus             #配置客户机虚拟 CPU数量。

--disk              #指定存储的各种选项。 raw #不支持做快照,性能好。qcow2 #支持快照。

-cdrom              #镜像位置

-w/--network        #配置客户机网络接口。

--graphics          #配置客户机显示设置。

--noautoconsole     #不要自动尝试连接到客户端控制台

--autostart         #主机启动时自动启动域。

--noreboot          #安装完成后不重新启动客户机。
#安装一台Centos-7的操作系统

#用xftp上传CentOS7.6的镜像至/opt目录
[root@kvm01 /opt]# virt-install  --virt-type  kvm   --os-type=linux  --os-variant rhel7  --name=centos7_web01  --memory  1024  --vcpus   1  --disk  /opt/centos7_web01.raw,format=raw,size=10  --cdrom=/opt/CentOS-7-x86_64-DVD-1810.iso  --network  network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

Starting install...
Allocating 'centos7_web01.raw'                                                                                 |  10 GB  00:00:00     
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

[root@kvm01 /opt]# netstat  -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      11071/qemu-kvm    
#报错解决
#1.ERROR    Guest name 'centos7_web01' is already in use.
原因:kvm不能重装重名的虚拟机
方法:执行virsh undefine convirt

#2.VNC打开出现no bootable device
原因:virt-install的命令填写有误
方法:检查cdrom的路径

img

img网络不需要配置,动态分配即可

[root@kvm01 /opt]# virsh start centos7_web01
[root@kvm01 /opt]# netstat -lntp
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5900            0.0.0.0:*   

img

Kvm部署CentOS6虚拟机

#上传镜像至/opt目录
[root@kvm01 /opt]# ll
-rw-r--r-- 1 root root  4467982336 Apr  7 10:47 CentOS-6.5-x86_64-bin-DVD1.iso

#创建虚拟主机
virt-install --virt-type kvm --os-type=linux --os-variant rhel6 --name centos6 --memory 1024 --vcpus 1 --disk /opt/centos6.raw,format=raw,size=10 --cdrom /opt/CentOS-6.5-x86_64-bin-DVD1.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

#使用VNC连接进行安装,注意一定要设置swap分区,否则主机无法启动

Kvm部署Windows10虚拟机

#安装软件
[root@kvm01 ~]# yum  install -y  libvirt  virt-install  qemu-kvm

#启动管理工具
[root@kvm01 ~]# systemctl  start libvirtd.service 
[root@kvm01 ~]# systemctl  enable  libvirtd.service

#上传win10镜像

#安装win10需要下载virtio驱动(此处选的版本是:virtio-win-0.1.126.iso)
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

#创建虚拟机实例
virt-install --virt-type kvm  \
--os-type=windows \
--name win10 \
--memory 6144 \
--vcpus 1 \
--disk  /opt/win10.qcow2,format=qcow2,size=50 \
--disk /opt/virtio-win-0.1.126.iso \
--cdrom /opt/cn_windows_10_business_editions_version_1909_updated_jan_2020_x64_dvd_b3e1f3a6.iso \
--network network=default \
--graphics vnc,listen=0.0.0.0  \
--noautoconsole 
# Win10安装过程中要给足磁盘和内存, 否则会导致安装慢或失败

[root@kvm01 /opt]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

tcp        0      0 0.0.0.0:5902            0.0.0.0:*               LISTEN      30119/qemu-kvm      

img

img

img

img

img

img

img

img

img

Kvm虚拟机管理

Kvm基础管理操作

显示所有的主机

[root@kvm01 /opt]# virsh  list  --all
 Id    Name                           State
----------------------------------------------------
 -     centos7_web01                  shut off

启动一台主机

[root@kvm01 /opt]# virsh  start centos7_web01 
Domain centos7_web01 started

只显示已经运行的主机

[root@kvm01 /opt]# virsh  list  
 Id    Name                           State
----------------------------------------------------
 2     centos7_web01                  running
#每启动一台主机,就启动对应的一个端口
[root@kvm01 /opt]# netstat  -lntp | grep 59
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      11619/qemu-kvm      

#根据内网IP地址进行ssh连接
[root@kvm01 /opt]# ssh root@192.168.122.91

显示全部主机

[root@kvm01 /opt]# virsh  list  --all
 Id    Name                           State
----------------------------------------------------
 2     centos7_web01                  running

关机

[root@kvm01 /opt]# virsh  shutdown  centos7_web01 
Domain centos7_web01 is being shutdown

[root@kvm01 /opt]# virsh list  --all
 Id    Name                           State
----------------------------------------------------
 -     centos7_web01                  shut off

强制关机 === 拔掉电源

[root@kvm01 /opt]# virsh  destroy  centos7_web01 
Domain centos7_web01 destroyed

显示主机的信息

[root@kvm01 /opt]# virsh  dominfo  centos7_web01 
Id:             4
Name:           centos7_web01
UUID:           158ca26b-eebd-41f3-8dc0-5752bd98d151
OS Type:        hvm
State:          running
CPU(s):         1
CPU time:       22.2s
Max memory:     1048576 KiB
Used memory:    1048576 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: none
Security DOI:   0

查看主机对应的端口

#:0  ===  5900
[root@kvm01 /opt]# virsh  vncdisplay  centos7_web01 
:0

修改内存的大小

#只能调小
[root@kvm01 /opt]# virsh setmem  centos7_web01  524288

[root@kvm01 /opt]# virsh  dominfo centos7_web01 
Id:             4
Name:           centos7_web01
UUID:           158ca26b-eebd-41f3-8dc0-5752bd98d151
OS Type:        hvm
State:          running
CPU(s):         1
CPU time:       25.6s
Max memory:     1048576 KiB
Used memory:    524288 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: none
Security DOI:   0

#调大内存

[root@kvm01 /opt]# virsh  shutdown  centos7_web01 
Domain centos7_web01 is being shutdown

[root@kvm01 /opt]# virsh  list  --all
 Id    Name                           State
----------------------------------------------------
 -     centos7_web01                  shut off


#修改主机的配置文件

[root@kvm01 /opt]# virsh  edit  centos7_web01 
Domain centos7_web01 XML configuration edited.

  <memory unit='KiB'>2097152</memory>               #内存的总大小
  <currentMemory unit='KiB'>1048576</currentMemory> #当前可以使用的内存的大小
  <vcpu placement='static'>2</vcpu>                 #cpu的核心


 [root@kvm01 /opt]# systemctl  restart libvirtd.service 

[root@kvm01 /opt]# virsh  start centos7_web01 
Domain centos7_web01 started

[root@kvm01 /opt]# virsh  dominfo  centos7_web01 
Id:             5
Name:           centos7_web01
UUID:           158ca26b-eebd-41f3-8dc0-5752bd98d151
OS Type:        hvm
State:          running
CPU(s):         2
CPU time:       28.9s
Max memory:     2097152 KiB
Used memory:    1048576 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: none
Security DOI:   0

#命令行修改最大内存

[root@kvm01 /opt]# virsh  shutdown  centos7_web01 
Domain centos7_web01 is being shutdown

[root@kvm01 /opt]# virsh setmaxmem  centos7_web01  1048576

[root@kvm01 /opt]# virsh  dominfo  centos7_web01 
Id:             -
Name:           centos7_web01
UUID:           158ca26b-eebd-41f3-8dc0-5752bd98d151
OS Type:        hvm
State:          shut off
CPU(s):         2
Max memory:     1048576 KiB
Used memory:    1048576 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: none
Security DOI:   0

查看CPU的信息

[root@kvm01 /opt]# virsh  vcpuinfo  centos7_web01 
VCPU:           0
CPU:            2
State:          running
CPU time:       17.2s
CPU Affinity:   yyyyyyyy

VCPU:           1
CPU:            2
State:          running
CPU time:       8.4s
CPU Affinity:   yyyyyyyy

编辑配置文件

#客户机的磁盘文件(内含镜像)  
[root@kvm01 /opt]# ll -h
total 5.7G
-rw------- 1 qemu qemu  10G 2020-04-07 09:39 centos7_web01.raw

#客户机的主配置文件
[root@kvm01 /opt]# ll /etc/libvirt/qemu/
total 8
-rw------- 1 root root 4193 2020-04-03 16:37 centos7_web01.xml

#快速编辑配置文件(具备语法校验,方便操作)
[root@kvm01 /opt]# virsh  edit  centos7_web01 

#开机状态下导出主机的配置信息
[root@kvm01 /opt]# virsh  dumpxml  centos7_web01  > centos7_web01_bak.xml
[root@kvm01 /opt]# ll
total 5876740
-rw-r--r-- 1 root root        5261 2020-04-07 10:07 centos7_web01_bak.xml

[root@kvm01 /opt]# virsh  shutdown  centos7_web01 

[root@kvm01 /opt]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 -     centos7_web01                  shut off

#关机状态下导出的配置(关机状态导出更省资源)
[root@kvm01 /opt]# virsh  dumpxml  centos7_web01  > centos7_web01_bak_shutdown.xml 
[root@kvm01 /opt]# ll
total 5876744
-rw-r--r-- 1 root root        3963 2020-04-07 10:09 centos7_web01_bak_shutdown.xml
-rw-r--r-- 1 root root        5261 2020-04-07 10:07 centos7_web01_bak.xml

#删除主机信息
[root@kvm01 /opt]# virsh undefine centos7_web01

#恢复
[root@kvm01 /opt]# virsh  define  centos7_web01_bak.xml 

[root@kvm01 /opt]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 -     centos7_web01                  shut off

[root@kvm01 /opt]# virsh  start centos7_web01 
Domain centos7_web01 started

[root@kvm01 /opt]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 1     centos7_web01                  running

[root@kvm01 /opt]# ll /etc/libvirt/qemu/
total 8
-rw------- 1 root root 4531 2020-04-07 10:15 centos7_web01.xml
drwx------ 3 root root   42 2020-04-03 14:45 networks

重命名主机

#必须在关机状态下执行
[root@kvm01 /opt]# virsh  shutdown  centos7_web01 
Domain centos7_web01 is being shutdown

[root@kvm01 /opt]# virsh domrename  centos7_web01  Centos7_db01
Domain successfully renamed

[root@kvm01 /opt]# virsh  list  --all
 Id    Name                           State
----------------------------------------------------
 -     Centos7_db01                   shut off

[root@kvm01 /opt]# ll /etc/libvirt/qemu/
total 8
-rw------- 1 root root 4529 2020-04-07 10:26 Centos7_db01.xml
drwx------ 3 root root   42 2020-04-03 14:45 networks

#重命名磁盘
[root@kvm01 /opt]# ll
-rw------- 1 root root 10737418240 2020-04-07 10:26 centos7_web01.raw

[root@kvm01 /opt]# virsh  edit Centos7_db01 
 <source file='/opt/Centos7_db01.raw'/>

[root@kvm01 /opt]# systemctl  restart  libvirtd.service 
[root@kvm01 /opt]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 -     Centos7_db01                   shut off

[root@kvm01 /opt]# ll 
total 5876744
-rw-r--r-- 1 root root        3963 2020-04-07 10:09 centos7_web01_bak_shutdown.xml
-rw-r--r-- 1 root root        5261 2020-04-07 10:07 centos7_web01_bak.xml
-rw------- 1 root root 10737418240 2020-04-07 10:26 centos7_web01.raw
-rw-r--r-- 1 qemu qemu  4588568576 2020-04-03 15:03 CentOS-7-x86_64-DVD-1810.iso

[root@kvm01 /opt]# mv centos7_web01.raw  Centos7_db01.raw

[root@kvm01 /opt]# virsh  start Centos7_db01 
Domain Centos7_db01 started

[root@kvm01 /opt]# virsh  list 
 Id    Name                           State
----------------------------------------------------
 1     Centos7_db01                   running

[root@kvm01 /opt]# ll
total 5876744
-rw------- 1 qemu qemu 10737418240 2020-04-07 10:30 Centos7_db01.raw
-rw-r--r-- 1 root root        3963 2020-04-07 10:09 centos7_web01_bak_shutdown.xml
-rw-r--r-- 1 root root        5261 2020-04-07 10:07 centos7_web01_bak.xml
-rw-r--r-- 1 qemu qemu  4588568576 2020-04-03 15:03 CentOS-7-x86_64-DVD-1810.iso

挂起和恢复

[root@kvm01 /opt]# virsh  suspend  Centos7_db01 
Domain Centos7_db01 suspended

[root@kvm01 /opt]# virsh  resume   Centos7_db01
Domain Centos7_db01 resumed

console登录虚拟机

#centos7系统进行console登录
[root@kvm01 /opt]# ssh root@192.168.122.91

##客户机里面进行执行
[root@web01 ~]# grubby  --update-kernel=ALL --args="console=ttyS0,115200n8"

注1:115200n8:能显示虚拟机的启动过程。重启完成后,使用virsh console 连接虚拟机。
注2:查看终端 
[root@centos7 ~]# who
root     ttyS0        2020-04-07 11:53
注3:第二次连接后要敲一下回车,就可以直接进入

[root@web01 ~]# reboot

[root@kvm01 /opt]# virsh  console  Centos7_db01 
Connected to domain Centos7_db01
Escape character is ^]

CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64

web01 login: root
Password: 

##按Ctrl键加] 退出

#centos6进行consle登录

##客户端添加ttyS0的许可,允许root登录
[root@centos6-web01 ~]# echo "ttyS0"  >> /etc/securetty

##添加终端console=ttyS0
[root@centos6-web01 ~]# vi /boot/grub/grub.conf
kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=22f504a0-3488-48b0-931d-dde0cc7a17a1 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0

##让其显示登录信息
[root@centos6-web01 ~]# echo 'S0:12345:respawn:/sbin/agetty ttyS0 115200' >>/etc/inittab

[root@centos6-web01 ~]# reboot

[root@kvm01 /opt]# virsh  console  centos6_web01 
Connected to domain centos6_web01
Escape character is ^]

img效果展示

#报错
[root@kvm01 ~]# virsh console centos_web01 
Connected to domain centos_web01
Escape character is ^]
error: operation failed: Active console session exists for this domain

##原因:进程还在运行

##解决方法
ps aux | grep console
kill -9+进程号

虚拟机开机自启动

#前提:libvirtd服务是开机自启动的

[root@kvm01 ~]# systemctl  enable libvirtd

[root@kvm01 ~]# virsh  autostart  Centos7_db01 
Domain Centos7_db01 marked as autostarted

[root@kvm01 ~]# virsh  dominfo  Centos7_db01 
Autostart:      enable

#实质就是创建一个软链接
[root@kvm01 ~]# ll /etc/libvirt/qemu/autostart/
total 0
lrwxrwxrwx 1 root root 34 2020-04-07 14:35 Centos7_db01.xml -> /etc/libvirt/qemu/Centos7_db01.xml

#关闭开机自启动
[root@kvm01 ~]# virsh autostart --disable Centos7_db01 
Domain Centos7_db01 unmarked as autostarted

[root@kvm01 ~]# ll /etc/libvirt/qemu/autostart/
total 0

Kvm磁盘管理

#1.虚拟机的磁盘格式转换

https://blog.csdn.net/zhengmx100/article/details/53887162

#创建一块qcow2的虚拟硬盘
[root@kvm01 ~]# qemu-img  create  -f qcow2  test.qcow2  2G
Formatting 'test.qcow2', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 lazy_refcounts=off 

[root@kvm01 ~]# ll -h
-rw-r--r--  1 root root 193K 2020-04-07 14:46 test.qcow2

#查看硬盘信息
[root@kvm01 ~]# qemu-img  info test.qcow2 
image: test.qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

#将raw格式转换为qcow2格式
[root@kvm01 /opt]# qemu-img  convert  -f raw -O qcow2  Centos7_db01.raw  Centos7_db01.qcow2
[root@kvm01 /opt]# ll -h
-rw-r--r-- 1 root root 1.4G 2020-04-07 14:53 Centos7_db01.qcow2


#修改配置文件
[root@kvm01 /opt]# virsh  edit Centos7_db01 

      <driver name='qemu' type='qcow2'/>
      <source file='/opt/Centos7_db01.qcow2'/>

[root@kvm01 /opt]# virsh  shutdown  Centos7_db01 
Domain Centos7_db01 is being shutdown

#重新启动虚拟机,确认硬盘可用
[root@kvm01 /opt]# virsh  start  Centos7_db01 
Domain Centos7_db01 started

[root@kvm01 /opt]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 2     Centos7_db01                   running
 -     centos6_web01                  shut off

[root@kvm01 /opt]# virsh  console  Centos7_db01 

[root@web01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3       8.5G 1001M  7.6G  12% /
devtmpfs        485M     0  485M   0% /dev
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           496M  6.7M  489M   2% /run
tmpfs           496M     0  496M   0% /sys/fs/cgroup
/dev/vda1       509M  120M  389M  24% /boot
tmpfs           100M     0  100M   0% /run/user/0

[root@web01 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   10G  0 disk 
├─vda1 253:1    0  512M  0 part /boot
├─vda2 253:2    0    1G  0 part [SWAP]
└─vda3 253:3    0  8.5G  0 part /

Kvm快照管理

raw格式不支持快照

#创建快照

#开机状态下创建快照
[root@kvm01 /opt]# virsh  snapshot-create  Centos7_db01 

#查看主机快照列表
[root@kvm01 /opt]# virsh  snapshot-list  Centos7_db01 
 Name                 Creation Time             State
------------------------------------------------------------
 1586243623           2020-04-07 15:13:43 +0800 running

#名称以秒级创建
[root@kvm01 /opt]# date +%s
1586243661

#查看快照信息
[root@kvm01 /opt]# virsh snapshot-info  Centos7_db01  --snapshotname  1586243623
Name:           1586243623
Domain:         Centos7_db01
Current:        yes
State:          running
Location:       internal
Parent:         -
Children:       0
Descendants:    0
Metadata:       yes


#关机状态下创建快照(占用资源比开机更少)
[root@kvm01 /opt]# virsh  shutdown  Centos7_db01 
Domain Centos7_db01 is being shutdown

[root@kvm01 /opt]# virsh  snapshot-create  Centos7_db01 
Domain snapshot 1586243807 created

[root@kvm01 /opt]# virsh  snapshot-list  Centos7_db01 
 Name                 Creation Time             State
------------------------------------------------------------
 1586243623           2020-04-07 15:13:43 +0800 running
 1586243807           2020-04-07 15:16:47 +0800 shutoff

[root@kvm01 /opt]# virsh snapshot-info  Centos7_db01  --snapshotname  1586243807
Name:           1586243807
Domain:         Centos7_db01
Current:        yes
State:          shutoff
Location:       internal
Parent:         1586243623
Children:       0
Descendants:    0
Metadata:       yes

#登录进行破坏 rm -rf 

#恢复快照
[root@kvm01 /opt]# virsh  snapshot-list  Centos7_db01 
 Name                 Creation Time             State
------------------------------------------------------------
 1586243623           2020-04-07 15:13:43 +0800 running
 1586243807           2020-04-07 15:16:47 +0800 shutoff

[root@kvm01 /opt]# virsh snapshot-revert  Centos7_db01  1586243623

#快照的位置
[root@kvm01 /opt]# ll /var/lib/libvirt/qemu/snapshot/
total 0
drwxr-xr-x 2 root root 50 2020-04-07 15:20 Centos7_db01
[root@kvm01 /opt]# ll /var/lib/libvirt/qemu/snapshot/Centos7_db01/
total 16
-rw------- 1 root root 5063 2020-04-07 15:20 1586243623.xml
-rw------- 1 root root 5085 2020-04-07 15:20 1586243807.xml

#删除快照
[root@kvm01 /opt]# virsh  snapshot-delete Centos7_db01  1586243623 
Domain snapshot 1586243623 deleted

[root@kvm01 /opt]# virsh  snapshot-delete Centos7_db01  1586243807
Domain snapshot 1586243807 deleted

[root@kvm01 /opt]# virsh  snapshot-list  Centos7_db01 
 Name                 Creation Time             State
------------------------------------------------------------
 1586244456           2020-04-07 15:27:36 +0800 running
 1586244501           2020-04-07 15:28:21 +0800 shutoff

[root@kvm01 /opt]# ll /var/lib/libvirt/qemu/snapshot/Centos7_db01/
total 16
-rw------- 1 root root 5063 2020-04-07 15:29 1586244456.xml
-rw------- 1 root root 5085 2020-04-07 15:28 1586244501.xml

Kvm热添加硬盘

[root@kvm01 /opt]# qemu-img  create -f qcow2  /opt/Centos7_db01_add01.qcow2  10G
Formatting '/opt/Centos7_db01_add01.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off 


[root@kvm01 /opt]# qemu-img  info  Centos7_db01_add01.qcow2 
image: Centos7_db01_add01.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

#给centos7主机添加硬盘
[root@kvm01 /opt]# virsh attach-disk  Centos7_db01  /opt/Centos7_db01_add01.qcow2  vdb --live  --cache=none  --subdriver=qcow2 
Disk attached successfully

vdb     #第二块虚拟磁盘

--live      #在线热添加

--cache=none    #开启宿主机对客户机的镜像的读取缓存  off 关闭


--subdriver     #驱动类型

#客户机进行查看

[root@web01 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   10G  0 disk 
├─vda1 253:1    0  512M  0 part /boot
├─vda2 253:2    0    1G  0 part [SWAP]
└─vda3 253:3    0  8.5G  0 part /
vdb    253:16   0   10G  0 disk 

#移除硬盘


[root@kvm01 /opt]# virsh  detach-disk  Centos7_db01  vdb
Disk detached successfully


[root@web01 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   10G  0 disk 
├─vda1 253:1    0  512M  0 part /boot
├─vda2 253:2    0    1G  0 part [SWAP]
└─vda3 253:3    0  8.5G  0 part /


[root@web01 ~]# fdisk    /dev/vdb
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):  
Using default response p
Partition number (1-4, default 1):  #回车 
First sector (2048-20971519, default 2048): #回车 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): #回车
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): w

[root@web01 ~]# ll /dev/vdb*
brw-rw---- 1 root disk 253, 16 Apr  7 16:05 /dev/vdb
brw-rw---- 1 root disk 253, 17 Apr  7 16:05 /dev/vdb1

[root@web01 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   10G  0 disk 
├─vda1 253:1    0  512M  0 part /boot
├─vda2 253:2    0    1G  0 part [SWAP]
└─vda3 253:3    0  8.5G  0 part /
vdb    253:16   0   10G  0 disk 
└─vdb1 253:17   0   10G  0 part 

[root@web01 ~]# mkfs.xfs  /dev/vdb1 

[root@web01 ~]# mkdir  /data

[root@web01 ~]# mount /dev/vdb1  /data

[root@web01 ~]# df -h
/dev/vdb1        10G   33M   10G   1% /data

#移除已经在使用的硬盘
[root@web01 ~]# rm -f /data/test.log 

[root@web01 ~]# umount  /dev/vdb1

[root@web01 ~]# fdisk  /dev/vdb
Command (m for help): d
Command (m for help): p
Command (m for help): w

[root@web01 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   10G  0 disk 
├─vda1 253:1    0  512M  0 part /boot
├─vda2 253:2    0    1G  0 part [SWAP]
└─vda3 253:3    0  8.5G  0 part /
vdb    253:16   0   10G  0 disk 


[root@kvm01 /opt]# virsh  detach-disk  Centos7_db01  vdb
Disk detached successfully

[root@web01 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   10G  0 disk 
├─vda1 253:1    0  512M  0 part /boot
├─vda2 253:2    0    1G  0 part [SWAP]
└─vda3 253:3    0  8.5G  0 part /


#根分区扩容

#无法为已经存在快照的硬盘进行扩容
[root@kvm01 /opt]# qemu-img  resize  /opt/Centos7_db01.qcow2    +10G
qemu-img: Can't resize an image which has snapshots
qemu-img: This image does not support resize

#扩容磁盘大小
[root@kvm01 /opt]# qemu-img  resize  /opt/Centos7_db01.qcow2    +10G
Image resized.

[root@kvm01 /opt]# qemu-img  info  Centos7_db01.qcow2 
image: Centos7_db01.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 1.5G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

[root@kvm01 /opt]# virsh  shutdown  Centos7_db01 
Domain Centos7_db01 is being shutdown

[root@kvm01 /opt]# virsh  start   Centos7_db01 
Domain Centos7_db01 started

[root@kvm01 ~]# virsh console centos_web01 

[root@web01 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   30G  0 disk 
├─vda1 253:1    0  512M  0 part /boot
├─vda2 253:2    0    1G  0 part [SWAP]
└─vda3 253:3    0  8.5G  0 part /


[root@web01 ~]# fdisk  /dev/vda

Command (m for help): p

Disk /dev/vda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c8686

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1            2048     1050623      524288   83  Linux
/dev/vda2         1050624     3147775     1048576   83  Linux
/dev/vda3         3147776    20971519     8911872   83  Linux

Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 is deleted

Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
Partition number (3,4, default 3): 3
First sector (3147776-62914559, default 3147776): #回车
Using default value 3147776
Last sector, +sectors or +size{K,M,G} (3147776-62914559, default 62914559): #回车
Using default value 62914559
Partition 3 of type Linux and of size 28.5 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

[root@web01 ~]# reboot

[root@web01 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   30G  0 disk 
├─vda1 253:1    0  512M  0 part /boot
├─vda2 253:2    0    1G  0 part [SWAP]
└─vda3 253:3    0 28.5G  0 part /

[root@web01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3       8.5G  1.3G  7.3G  15% /

[root@web01 ~]# xfs_growfs /dev/vda3        #重新格式化,不删除里面的数据

[root@web01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        29G  1.3G   28G   5% /

Kvm的克隆

宿主机必须在关机状态下才能进行克隆

完整克隆

#方法一:使用virt-clone进行完整克隆

[root@kvm01 /opt]# virt-clone  --auto-clone  -o  web01  -n web02

#参数解释
  -o ORIGINAL_GUEST, --original ORIGINAL_GUEST
                        Name of the original guest; The status must be shut
                        off or paused.
  #指定被克隆的客户机名称

  --auto-clone          Auto generate clone name and storage paths from the
                        original guest configuration.
  #根据源客户机,自动生成克隆后的配置文件名称和存储路径

  -n NEW_NAME, --name NEW_NAME
                        Name for the new guest
  #给新的客户机取个名字

[root@kvm01 /opt]# ll web02.qcow2 
-rw------- 1 root root 1568538624 2020-04-08 09:51 web02.qcow2

[root@kvm01 /opt]# ll /etc/libvirt/qemu/web02.xml 
-rw------- 1 root root 4511 2020-04-08 09:51 /etc/libvirt/qemu/web02.xml

[root@kvm01 /opt]# virsh  start web02
Domain web02 started

[root@kvm01 /opt]# virsh  console  web02
Connected to domain web02
Escape character is ^]

CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64

web01 login: root
Password: 
Last login: Wed Apr  8 08:44:35 on ttyS0
[root@web01 ~]# 
#方法二:使用拷贝的一种方式进行完整克隆

#1. 拷贝磁盘镜像文件
[root@kvm01 /opt]# cp -a  web01.qcow2  web03.qcow2
[root@kvm01 /opt]# ll -h web03.qcow2
-rw-r--r-- 1 root root 2.7G 2020-04-08 09:04 web03.qcow2

#2.导出源客户机的配置信息
[root@kvm01 /opt]# virsh  dumpxml  web01 > web03.xml
[root@kvm01 /opt]# ll web03.xml
-rw-r--r-- 1 root root 4289 2020-04-08 10:08 web03.xml

#3. 修改配置信息
[root@kvm01 /opt]# vim web03.xml 
  <name>web03</name>
  删除UUID一行
  <source file='/opt/web03.qcow2'/>
  删除mac地址

#4.导入配置信息
[root@kvm01 /opt]# virsh  define  web03.xml 
Domain web03 defined from web03.xml

[root@kvm01 /opt]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 8     web02                          running
 -     web01                          shut off
 -     web03                          shut off

#5. 检查登录测试
[root@kvm01 /opt]# ll /etc/libvirt/qemu/web03.xml 
-rw------- 1 root root 4511 2020-04-08 10:12 /etc/libvirt/qemu/web03.xml

[root@kvm01 /opt]# virsh  start web03
Domain web03 started

[root@kvm01 /opt]# virsh  console  web03

[root@web01 ~]# ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.122.112/24 brd 192.168.122.255 scope global noprefixroute dynamic eth0
#方法三:自动化完整克隆
[root@kvm01 /opt]# cat complete_link.sh 
#!/bin/bash
#定义变量
Old_name=1
New_name=2
#判断环境变量的个数
if [ # -ne 2 ];then
    echo "Usage: sh0 Old_Name New_Name"
    exit
fi
#关闭源客户机
virsh shutdown  Old_name  &>/dev/null && sleep 3
#判断源客户机是否关机
virsh list | grep "Old_name" &>/dev/null
if [ ? -eq 0 ];then
    echo -e "\033[31m 客户机关闭失败,尝试强制关机 \033[0m"
    virsh destroyOld_name
fi
#进行完整克隆
virt-clone  --auto-clone  -o Old_name  -nNew_name
if [ ? -ne 0 ];then
    echo -e "\033[31m 完整克隆失败!\033[0m"         exit
fi
#启动测试
virsh startNew_name  &>/dev/null
if [ ? -ne 0 ];then      echo -e "\033[31m 启动{New_Name}失败 \033[0m"   
    exit                                                       
fi
#console登录测试
virsh console $New_name

链接克隆

#手动进行链接克隆  

#1. 创建一个基于链接克隆的虚拟磁盘文件
[root@kvm01 /opt]# qemu-img  create -f qcow2  -b  web01.qcow2  db01.qcow2

[root@kvm01 /opt]# ll
-rw-r--r-- 1 root root     197120 2020-04-08 10:38 db01.qcow2

[root@kvm01 /opt]# ll -h db01.qcow2 
-rw-r--r-- 1 root root 193K 2020-04-08 10:38 db01.qcow2

#2.导出源客户机的配置信息
[root@kvm01 /opt]# virsh  dumpxml  web01 > db01.xml

#3.修改配置信息
[root@kvm01 /opt]# vim db01.xml 
  <name>db01</name>
  删除UUID一行
  <source file='/opt/db01.qcow2'/>
  删除mac地址


#4.导入配置
[root@kvm01 /opt]# virsh  define  db01.xml 
Domain db01 defined from db01.xml


[root@kvm01 /opt]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 -     db01                           shut off

[root@kvm01 /opt]# ll /etc/libvirt/qemu/db01.xml 
-rw------- 1 root root 4508 2020-04-08 10:40 /etc/libvirt/qemu/db01.xml

#5.登录测试
[root@kvm01 /opt]# virsh  start db01
Domain db01 started

[root@kvm01 /opt]# virsh  console  db01
Connected to domain db01
Escape character is ^]
#自动化进行克隆  
[root@kvm01 /opt]# cat link_clone.sh
#!/bin/bash
#定义变量
Old_name=1
New_name=2
#判断环境变量的个数
if [ # -ne 2 ];then
    echo "Usage: sh0 Old_Name New_Name"
    exit
fi
#关闭源客户机
virsh shutdown  Old_name  &>/dev/null && sleep 3
#判断源客户机是否关机
virsh list | grep "Old_name" &>/dev/null
if [ ? -eq 0 ];then
    echo -e "\033[31m 客户机关闭失败,尝试强制关机 \033[0m"
    virsh destroyOld_name
fi
#导出源客户机的配置信息
virsh dumpxml Old_name >/opt/{New_name}.xml
if [ ? -ne 0 ];then
    echo -e "\033[31m 配置文件导出失败!\033[0m"      
fi
#创建一个基于源客户机磁盘的磁盘文件
qemu-img create -f qcow2 -b /opt/{Old_name}.qcow2  /opt/{New_name}.qcow2  &>/dev/null
if [? -ne 0 ];then
    echo -e "\033[31m 链接克隆失败!\033[0m"      
    exit
fi
#修改配置信息
sed -i "s#Old_name#New_name#g"   /opt/{New_name}.xml
if [? -ne 0 ];then
    echo -e "\033[31m 重命名失败! \033[0m"      
    exit
fi
sed -ri '/uuid|mac address/d'  /opt/{New_name}.xml
if [? -ne 0 ];then
    echo -e "\033[31m uuid及mac地址删除失败! \033[0m"      
    exit
fi
#导入配置信息
virsh define  /opt/{New_name}.xml  &>/dev/null
if [? -ne 0 ];then   
    echo -e "\033[31m 配置文件信息导入失败! \033[0m"
    exit                                                       
fi
#启动测试
virsh start  New_name  &>/dev/null
if [? -ne 0 ];then   
    echo -e "\033[31m 启动{New_Name}失败 \033[0m"      exit                                                       
fi
#console登录测试
virsh consoleNew_name


[root@kvm01 /opt]# sh link_clone.sh  web01  lb01
Connected to domain lb01
Escape character is ^]

CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64

web01 login: root
Password: 
Last login: Wed Apr  8 08:44:35 on ttyS0

[root@web01 ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.122.73/24 brd 192.168.122.255 scope global noprefixroute dynamic eth0

Kvm虚拟机的桥接网络

NAT 模式上网原理

imgNAT上网

[root@kvm01 /opt]# sysctl  -a |grep  net.ipv4.ip_forward
net.ipv4.ip_forward = 1

桥接模式

img桥接上网

#创建一个桥接网络
[root@kvm01 /opt]# virsh  iface-bridge  eth0  br0

[root@kvm01 /opt]# cat  /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE="br0"

[root@kvm01 /opt]# cat  /etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="10.0.0.11"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
DHCPV6C="no"
STP="on"
DELAY="0"

#查看桥接网络信息
[root@kvm01 /opt]# brctl  show
bridge name bridge id       STP enabled interfaces
br0     8000.000c29a68661   yes     eth0
virbr0      8000.525400347f33   yes     virbr0-nic
                            vnet1

#修改虚拟机的配置信息
[root@kvm01 /opt]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 -     db01                           shut off
 -     lb01                           shut off
 -     web01                          shut off
 -     web02                          shut off
 -     web03                          shut off

[root@kvm01 /opt]# virsh edit  web03

<interface type='bridge'>  #网络类型

<source bridge='br0'/>  #类型和名称

#启动并连接客户机
[root@kvm01 /opt]# virsh  start  web03
Domain web03 started

[root@kvm01 /opt]# virsh  console web03

#修改客户机网卡配置
[root@web01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="none"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="10.0.0.101"
PREFIX="24"
GATEWAY="10.0.0.254"
DNS1="223.5.5.5"

#重启网络
[root@web01 ~]# systemctl  restart network
[root@web01 ~]# systemctl  stop  NetworkManager
[root@web01 ~]# systemctl  disable  NetworkManager

[root@web01 ~]# ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 10.0.0.101/24 brd 10.0.0.255 scope global noprefixroute eth0

[root@web01 ~]# ping baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=30.5 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=128 time=32.9 ms

#本地进行连接测试
[C:\~]$ ssh  root@10.0.0.101

虚拟机冷迁移

#冷迁移的步骤

#准备另一台主机的环境
角色:kvm02 IP:10.0.0.12

[root@kvm02 ~]# yum install libvirt  virt-install qemu-kvm -y

[root@kvm02 ~]# systemctl  start libvirtd.service

[root@kvm02 ~]# systemctl  enable  libvirtd.service 

[root@kvm02 ~]# virsh   list --all
 Id    Name                           State
----------------------------------------------------

#关闭的客户机   
[root@kvm01 /opt]# virsh  shutdown  web03 
Domain web03 is being shutdown

[root@kvm01 /opt]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 -     db01                           shut off
 -     lb01                           shut off
 -     web01                          shut off
 -     web02                          shut off
 -     web03                          shut off


#导出配置信息   
[root@kvm01 /opt]# virsh  dumpxml  web03 > web03.xml

[root@kvm01 /opt]# ll web03.xml 
-rw-r--r-- 1 root root 4283 2020-04-09 09:19 web03.xml


#将磁盘格式转换为qcow2    
qemu-img  convert  -f  raw  -O qcow2   old_disk   new_disk

[root@kvm01 /opt]# ll web03.qcow2 
-rw-r--r-- 1 root root 2816475648 2020-04-09 09:17 web03.qcow2


#将磁盘文件和配置信息传送到另一台主机 
[root@kvm01 /opt]# scp -rp /opt/web03.*   root@172.16.1.12:/opt


#修改配置信息  
[root@kvm02 ~]# vim  /opt/web03.xml 
     <driver name='qemu' type='qcow2'/>

#导入配置
[root@kvm02 ~]# virsh  define   /opt/web03.xml 
Domain web03 defined from /opt/web03.xml

[root@kvm02 ~]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 -     web03                          shut off

[root@kvm02 ~]# systemctl  restart libvirtd.service

[root@kvm02 ~]# virsh  define   /opt/web03.xml 
Domain web03 defined from /opt/web03.xml

[root@kvm02 ~]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 -     web03                          shut off


#启动并连接测试
[root@kvm02 ~]# virsh  start  web03 
Domain web03 started

[root@kvm02 ~]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 1     web03                          running

[C:\~]$ ssh  root@10.0.0.101

虚拟机的热迁移

磁盘文件:共享存储

热迁移的流程:
在运行的过程中,发送Kvm01主机的配置文件及运行在内存中的数据到Kvm02 

img

#1.所有服务器安装nfs
[root@nfs ~]# yum  install -y nfs-utils

#2.nfs服务端进行配置
[root@nfs ~]# vim /etc/exports
[root@nfs ~]# cat /etc/exports
/opt  10.0.0.0/24(rw,sync,no_root_squash,no_all_squash)

#3.启动nfs服务
[root@nfs ~]# systemctl  restart rpcbind
[root@nfs ~]# systemctl  restart nfs

#4.检查两台客户端是否可以进行挂载
[root@kvm01 /opt]# showmount  -e 10.0.0.31
Export list for 10.0.0.31:
/opt 10.0.0.0/24

[root@kvm01 ~]# mkdir  /kvm_disk

[root@kvm01 ~]# mount  -t nfs  10.0.0.31:/opt  /kvm_disk
[root@kvm01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
10.0.0.31:/opt   48G  1.9G   46G   4% /kvm_disk

#创建主机
[root@kvm01 ~]# cd /kvm_disk/
[root@kvm01 /kvm_disk]# ll
total 0
[root@kvm01 /kvm_disk]# cp -a  /opt/web03.qcow2   ./

[root@kvm01 /kvm_disk]# virsh  shutdown  web03
Domain web03 is being shutdown

[root@kvm01 /kvm_disk]# ll
total 2162696
-rw-r--r-- 1 qemu qemu 2816475648 2020-04-09 10:35 web03.qcow2

[root@kvm01 /kvm_disk]# mv web03.qcow2  web04.qcow2 

[root@kvm01 /kvm_disk]# virsh  dumpxml  web03  > /opt/web04.xml
 <name>web04</name>

      <driver name='qemu' type='qcow2'/>
      <source file='/kvm_disk/web04.qcow2'/>

      <driver name='qemu' type='qcow2'/>

    <interface type='bridge'>

      <source bridge='br0'/>

    删除uuid和mac行


[root@kvm01 /kvm_disk]# virsh  define   /opt/web04.xml
Domain web04 defined from /opt/web04.xml

[root@kvm01 /kvm_disk]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 -     db01                           shut off
 -     lb01                           shut off
 -     web01                          shut off
 -     web02                          shut off
 -     web03                          shut off
 -     web04                          shut off


[root@kvm01 /kvm_disk]# virsh  start  web04
Domain web04 started

[root@kvm01 /kvm_disk]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 15    web04                          running

#开始进行热迁移
[root@kvm01 /kvm_disk]# virsh  migrate  --live --verbose  web04  qemu+ssh://10.0.0.12/system  --unsafe


#出现报错  
error: Unable to resolve address 'kvm02' service '49152': Name or service not known

#进行hosts文件解析
[root@kvm01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.12  kvm02

[root@kvm01 /kvm_disk]# virsh  migrate  --live --verbose  web04  qemu+ssh://10.0.0.12/system  --unsafe
root@10.0.0.12's password: 
Migration: [100 %]

#在热迁移的过程中,丢失了一个数据包(ping+ip)

img

#热迁移只是临时迁移进程,关机之后虚拟机就会消失 
[root@kvm02 ~]# ll /run/libvirt/qemu/web04.xml
-rw------- 1 root root 9833 2020-04-09 10:47 /run/libvirt/qemu/web04.xml

#导出web04的配置
[root@kvm02 ~]# virsh  dumpxml  web04  > /etc/libvirt/qemu/web04.xml

[root@kvm02 ~]# virsh  define  /etc/libvirt/qemu/web04.xml
Domain web04 defined from /etc/libvirt/qemu/web04.xml

[root@kvm02 ~]# virsh  start web04
Domain web04 started

[root@kvm02 ~]# virsh  list --all
 Id    Name                           State
----------------------------------------------------
 4     web04                          running

virt-manager管理管理虚拟机

#1.安装图形界面
[root@kvm01 ~]# yum  groupinstall  -y  "GNOME  Desktop"

#2.安装vnc的服务端
[root@kvm01 ~]# yum install -y tigervnc-server

#3.给vnc设置个密码
[root@kvm01 ~]# vncpasswd 
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

#4.开启vnc
[root@kvm01 ~]# vncserver  :1
xauth:  file /root/.Xauthority does not exist

New 'kvm01:1 (root)' desktop is kvm01:1

Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/kvm01:1.log

[root@kvm01 ~]# netstat  -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      16460/Xvnc                    
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      16460/Xvnc                                
tcp6       0      0 :::5901                 :::*                    LISTEN      16460/Xvnc                   
tcp6       0      0 :::6001                 :::*                    LISTEN      16460/Xvnc          

#安装管理工具
[root@kvm01 ~]# yum  install -y  virt-manager

img

img

img

img

管理多台宿主机

img

img

img宿主机的登录密码

img报错原因:缺少openssh-askpass包

#安装ssh插件
[root@kvm01 ~]# yum install -y openssh-askpass

热迁移

img

img

img

Copyright © 2009 - Now . XPBag.com . All rights Reserved.
夜心的小站 » KVM 虚拟化部署管理迁移等深入详解

提供最优质的资源集合

立即查看 了解详情