Kvm

1. 什么是云计算 ?

云计算就是一种按量付费的模式,它的底层主要使用虚拟化技术实现的。
#1. 水龙头的观点论
#2. 荤段子的观点论
#3. 共享单车观点论
#4. 一日三餐观点论

云计算的特点:
#1. 大规模,分布式
#2. 虚拟化

    IDC  云厂商为每个客户提供了一个IDC机房

#3. 高可用性和扩展性

    7*24小时运行,动态伸缩 

#4. 按需服务,经济实惠

    用户可以根据自己的要求进行购买服务。 资源利用率。

#5. 安全

    网络安全是每个人或者每个企业都需要考虑到的问题。 有专业的安全团队提供网络安全服务。


云里雾里   拨开云雾
一个问题:如何想让计算机变强 ?
使用更多的机器, 就是不同计算机之间如何协同工作

小项目:    项目管理  

并行计算。

负载均衡   

热备冗余  高可用  单点故障   

虚拟化


Elastic Compute Service 云服务器


云计算( Cloud  Computing ):  

分布式计算:

效用计算:

网络存储:

虚拟化:

负载均衡:

热备冗余:

由传统计算机技术发展融合而成的产物。

网格计算  



最基础的的条件:

    1. 计算资源的虚拟化,按计算你能来购买才是真正的云计算。

    2. 云计算的弹性伸缩能力,一定是想用多少就是多少,不用的时候就释放掉。

2. 为什么要用云计算 ?

上线一款游戏:  招个运维,部署一个架构,10台物理服务器,  租个IDC机房的机柜托管,企业级的带宽。


小公司:    灵活扩展,节约成本


大公司:    云计算厂商,多余的就出租,内存压缩技术

    物理服务器:  64G内存   2CPU 24个核心  

    1核1G的内存     虚拟64台主机

3. 云计算的服务类型

1. IAAS   infrastructure  as  a  service   基础设施即服务      云厂商都是这种服务类型

虚拟机  虚拟网络 云存储     虚拟化   Kvm管理平台  OpenStack  

如果你采用了IAAS服务,那么意味着你就不用自己买服务器了,随便在哪一家购买虚拟机,但是你自己需要安装服务器软件。


2. PAAS      Platform  as  a  service   平台即服务    heroku  salesfocre CRM  CloudFoundry是一个提供夸平台、多语言应用框架的开源PaaS


数据库服务   web应用   容器服务     docker容器   k8s   kubernetes

如果你使用了PAAS服务,那么就意味着你既不需要购买服务器,也不需要自己安装服务器软件,只需要自己开发网站程序。

3. SAAS   Software  as  a  service   软件即服务    Gmail   paypal 纳斯达克  QQ  微信

各类网盘,gitlab  github  第三方       企业邮箱服务  rds  cdn   Oss NAS  运维+开发 

购买某些在线论坛或者在线其他服务,这就意味着你不用自己开发应用程序,只需要使用就可以了。升级,维护,增加服务器都不用负责,

4. 云计算的部署模式

三种:


私有云  Private  cloud

自建    内部网络   只能自己或者本公司内部访问

自主可控   数据私密性好       

金融  医疗  政务  信息 


公有云  Public   Cloud

云厂商   外部网络  所有人都可以访问,安全方面不一样  

规模化  运维可靠  弹性强   

游戏   视频网站  教育  


混合云 Hybrid  Cloud

两个或者两个以上的云   私有云 + 社区云 + 公有云  

弹性、灵活  架构复杂    

金融    医疗



社群云  社区云    Community Cloud

由多个公司共同开发的平台   



https://yq.aliyun.com/

5. 虚拟化介绍

1、什么是虚拟化
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率
虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

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

提高计算机的工作效率。 
把所有的资源进行整合,提高资源的利用率 
按需分配   

2、为什么要使用虚拟化?

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

优势:

1. 降低运营成本
服务器虚拟化降低了IT基础设施的运营成本,令系统管理员摆脱了繁重的物理服务器、OS、中间件及兼容性的管理工作,减少人工干预频率,使管理更加强大、便捷。

2. 提高应用兼容性
服务器虚拟化提供的封装性和隔离性使大量应用独立运行于各种环境中,管理人员不需频繁根据底层环境调整应用,只需构建一个应用版本并将其发布到虚拟化后的不同类型平台上即可。

3. 加速应用部署
采用服务器虚拟化技术只需输入激活配置参数、拷贝虚拟机、启动虚拟机、激活虚拟机即可完成部署,大大缩短了部署时间,免除人工干预,降低了部署成本.

4. 提高服务可用性
用户可以方便地备份虚拟机,在进行虚拟机动态迁移后,可以方便的恢复备份,或者在其他物理机上运行备份,大大提高了服务的可用性。

5. 提升资源的利用率
通过服务器虚拟化的整合,提高了CPU、内存、存储、网络等设备的利用率,同时保证原有服务的可用性,使其安全性及性能不受影响。

6. 动态资源分配
在服务器虚拟化技术中,数据中心从传统的单一服务器变成了统一的资源池,用户可以即时地调整虚拟机资源,同时数据中心管理程序和数据中心管理员可以灵活根据虚拟机内部资源使用情况灵活分配调整给虚拟机的资源。


7. 降低能源消耗
通过减少运行的物理服务器数量,减少CPU以外各单元的耗电量,达到节能减排的目的。

3、虚拟化的应用场景

场景1:多版本操作系统共存,小公司经常会出现的一种比较尴尬的问题,只有一台服务器,非要同时运行windows和Linux,只有虚拟化才能完美解决.

场景2:机房迁移,没有虚拟化之前,迁移非常痛苦,物理机搬迁中途损伤,新机房很难复原旧环境,物理机老化可能再也开不了机,这些都是问题,有了虚拟化之后,搬迁变得简单,只需拷贝虚拟机的文件即可

场景3:相同业务部署,在没有虚拟化之前,部署业务,每次都是从安装系统开始,一步一步安装软件,效率非常低!有了虚拟化,只需克隆模板机即可

场景4:软件发布体验,有的软件安装特别繁琐,导致很多普通用户都无法安装成功,为了让这部分用户能体验到软件的功能,可以制作一个虚拟机模板,让用户直接使用体验,例如zabbix就有现成的虚拟机模板 


4、虚拟化的软件介绍

Xen   
是一个开放源代码虚拟机监视器,由XenProject开发。它打算在单个计算机上运行多达128个有完全功能的操作系统。在旧(无虚拟硬件)的处理器上执行Xen,操作系统必须进行显式地修改("移植")以在Xen上运行(但是提供对用户应用的兼容性)。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。
软件纯模拟全虚拟化软件,特别慢!

QEMU
QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的模拟处理器的自由软件。它与Bochs(Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。),PearPC(实现PC机上安装Mac OS)近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由KVM(早期为kqemu加速器,现在kqemu已被KVM取代)这个开源的加速器,QEMU能模拟至接近真实电脑的速度。QEMU有两种主要运作模式: 
User mode模拟模式,亦即是用户模式。
QEMU能引导那些为不同中央处理器编译的Linux程序。而Wine(运行 Windows 应用的兼容层。)及Dosemu(DOS模拟器)是其主要目标。  
System mode模拟模式,亦即是系统模式。
QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及除错工作变得容易。其亦能用来在一部主机上模拟数部不同虚拟电脑。
性能特别好,但是需要使用专门修改之后的内核。  

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

VirtualBox    
开源的虚拟机软件   

Kvm  虚拟化管理平台   使用范围很广  
1.KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。
2.是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。
3.它包含一个为处理器提供底层虚拟化,可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
4.KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
5.KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)同时KVM还能够使用ksm技术帮助宿主服务器节约内存。
6.在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。
Kvm的优点:KVM是一种年轻的虚拟化技术,在出生的时候就吸收了其他虚拟化技术的优点,而且架构简单,没有历史兼容性的包袱,性能表现优异,使用越来越广!

6. 安装部署Kvm

#虚拟机需要开启内核虚拟化  

内存 == 4G    磁盘  ==  100G

[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     本地电脑压缩数据包目录里面找


#安装虚拟机的参数
参数                     参数说明
--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的操作系统
[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    

#显示所有的主机
[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]# virsh  list  --all
 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
The authenticity of host '192.168.122.91 (192.168.122.91)' can't be established.
ECDSA key fingerprint is SHA256:rmgopVnnY7KphZG8llZSoViZu9vN2A8NtM9Qce7DLuw.
ECDSA key fingerprint is MD5:d5:1d:1b:87:7e:4c:f6:cc:3f:fb:be:2c:13:89:78:f3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.91' (ECDSA) to the list of known hosts.
root@192.168.122.91's password: 
Last login: Fri Apr  3 16:16:02 2020


#关机
[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

7. Kvm基础管理操作

#客户机的镜像文件  磁盘  
[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 
Domain centos7_web01 XML configuration not changed.

语法校验   方便操作

#开机状态下导出主机的配置信息
[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 
Domain centos7_web01 is being shutdown

[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]# rm -f /etc/libvirt/qemu/centos7_web01.xml 

[root@kvm01 /opt]# systemctl  restart  libvirtd
[root@kvm01 /opt]# virsh  list  --all
 Id    Name                           State
----------------------------------------------------

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


#恢复
[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:13 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]# virsh  define  centos7_web01_bak.xml 
Domain centos7_web01 defined from 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
qemu/            qemu.conf        qemu-lockd.conf  
[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
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]# 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

8. 安装centos6客户机

必须要有swap分区,主机启动不起来  


virt-install  --virt-type  kvm   --os-type=linux  --os-variant rhel6  --name=centos6_web01  --memory  1024  --vcpus  1  --disk  /opt/centos6_web01.raw,format=raw,size=10  --cdrom=/opt/CentOS-6.7-x86_64-bin-DVD1.iso  --network  network=default --graphics vnc,listen=0.0.0.0 --noautoconsole


#centos6进行consle登录

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

#2. 添加终端
[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

#3.让其显示登录界面
[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 ^]

[root@centos6-web01 ~]# 
[root@centos6-web01 ~]# 
[root@centos6-web01 ~]# 
[root@centos6-web01 ~]# 
[root@centos6-web01 ~]# 
[root@centos6-web01 ~]# 
[root@centos6-web01 ~]# 
[root@centos6-web01 ~]#

9. 虚拟机的console登录

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

[root@kvm01 /opt]# 

#centos7系统进行console登录

[root@kvm01 /opt]# ssh root@192.168.122.91
root@192.168.122.91's password: 
Last login: Tue Apr  7 10:31:55 2020

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

[root@web01 ~]# reboot
Connection to 192.168.122.91 closed by remote host.
Connection to 192.168.122.91 closed.

[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: 
Last login: Tue Apr  7 11:05:40 from gateway
[root@web01 ~]# 

按Ctrl键加] 退出

10. 客户机开机自启动

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

[root@kvm01 ~]# systemctl  enable libvirtd
Autostart:      disable

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

[root@kvm01 ~]# virsh  dominfo  Centos7_db01 
Id:             -
Name:           Centos7_db01
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:      enable
Managed save:   no
Security model: none
Security DOI:   0

#实质就是创建一个软连接
[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

11. 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
total 204
-rw-------. 1 root root   1558 2019-05-08 18:33 anaconda-ks.cfg
-rw-r--r--  1 root root    513 2019-12-07 11:36 hostname_ip.sh
-rw-r--r--  1 root root 197120 2020-04-07 14:46 test.qcow2
[root@kvm01 ~]# ll -h
total 204K
-rw-------. 1 root root 1.6K 2019-05-08 18:33 anaconda-ks.cfg
-rw-r--r--  1 root root  513 2019-12-07 11:36 hostname_ip.sh
-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
total 13G
-rw-r--r-- 1 qemu qemu 3.7G 2019-10-25 11:54 CentOS-6.7-x86_64-bin-DVD1.iso
-rw------- 1 qemu qemu  10G 2020-04-07 14:32 centos6_web01.raw
-rw-r--r-- 1 root root 1.4G 2020-04-07 14:53 Centos7_db01.qcow2
-rw------- 1 qemu qemu  10G 2020-04-07 14:53 Centos7_db01.raw
-rw-r--r-- 1 qemu qemu 4.3G 2020-04-03 15:03 CentOS-7-x86_64-DVD-1810.iso

#修改配置文件
[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]# 
[root@kvm01 /opt]# 
[root@kvm01 /opt]# virsh  start  Centos7_db01 
Domain Centos7_db01 started

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

[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: 
CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64

web01 login: root
Password: 
Last login: Tue Apr  7 12:38:02 on ttyS0
[root@web01 ~]# 
[root@web01 ~]# 
[root@web01 ~]# ll
total 4
-rw-------. 1 root root 1346 Apr  3 15:57 anaconda-ks.cfg
[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 /

12. Kvm快照管理

raw格式不支持快照

#创建快照

#开机状态下
[root@kvm01 /opt]# virsh  snapshot-create  Centos7_db01 
Domain snapshot 1586243623 created
[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

#登录进行破坏

#恢复快照
[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

13. 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
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x2436757c.

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
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@web01 ~]# 
[root@web01 ~]# 
[root@web01 ~]# 
[root@web01 ~]# 
[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/vdb
vdb   vdb1  
[root@web01 ~]# mkfs.xfs  /dev/vdb1 
meta-data=/dev/vdb1              isize=512    agcount=4, agsize=655296 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621184, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@web01 ~]# mkdir  /data
[root@web01 ~]# mount /dev/vdb1  /data
[root@web01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3       8.5G  1.3G  7.3G  15% /
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
/dev/vdb1        10G   33M   10G   1% /data

#移除已经在使用的硬盘

[root@web01 ~]# rm -f /data/test.log 
[root@web01 ~]# 
[root@web01 ~]# 
[root@web01 ~]# 
[root@web01 ~]# 
[root@web01 ~]# umount  /dev/vdb1

[root@web01 ~]# fdisk  /dev/vdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Selected partition 1
Partition 1 is deleted

Command (m for help): p

Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0x2436757c

   Device Boot      Start         End      Blocks   Id  System
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@web01 ~]# 
[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]# systemctl  restart libvirtd
[root@kvm01 /opt]# 
[root@kvm01 /opt]# 
[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@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
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


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% /
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 ~]# xfs_growfs /dev/vda3        #重新格式化,不删除里面的数据
meta-data=/dev/vda3              isize=512    agcount=4, agsize=556992 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2227968, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2227968 to 7470848
[root@web01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        29G  1.3G   28G   5% /
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 ~]#

14. Kvm的克隆

#完整克隆

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


  -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]# virt-clone  --auto-clone  -o  web01  -n web02
Allocating 'web02.qcow2'                                                                                       |  30 GB  00:00:06     

Clone 'web02' created successfully.


[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]# 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
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:23:13:f9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.112/24 brd 192.168.122.255 scope global noprefixroute dynamic eth0
       valid_lft 3593sec preferred_lft 3593sec
    inet6 fe80::b588:2d5b:90f5:9830/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::cf48:f450:d25a:7c02/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

#链接克隆

#手动进行链接克隆  

#1. 创建一个基于链接克隆的虚拟磁盘文件


[root@kvm01 /opt]# qemu-img  create -f qcow2  -b  web01.qcow2  db01.qcow2
Formatting 'db01.qcow2', fmt=qcow2 size=32212254720 backing_file='web01.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off 
[root@kvm01 /opt]# ll
total 10993740
-rw-r--r-- 1 root root 1060175872 2020-04-07 16:08 Centos7_db01_add01.qcow2
-rw-r--r-- 1 qemu qemu 4588568576 2020-04-03 15:03 CentOS-7-x86_64-DVD-1810.iso
-rw-r--r-- 1 root root     197120 2020-04-08 10:38 db01.qcow2
-rw-r--r-- 1 root root 2816475648 2020-04-08 09:04 web01.qcow2
-rw------- 1 qemu qemu 1568538624 2020-04-08 10:25 web02.qcow2
-rw-r--r-- 1 qemu qemu 2816475648 2020-04-08 10:32 web03.qcow2
-rw-r--r-- 1 root root       4196 2020-04-08 10:11 web03.xml
[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]# rm -f web03.xml 
[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
----------------------------------------------------
 8     web02                          running
 9     web03                          running
 -     db01                           shut off
 -     web01                          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
#1.定义变量
Old_name=$1
New_name=$2
#2.关闭源客户机
virsh shutdown  $Old_name  &>/dev/null && sleep 3
#3.导出源客户机的配置信息
virsh dumpxml $Old_name  > /opt/${New_name}.xml
#4.创建一个基于源客户机磁盘的磁盘文件
qemu-img create -f qcow2 -b /opt/${Old_name}.qcow2  /opt/${New_name}.qcow2  &>/dev/null
#5.修改配置信息
sed -i "s#$Old_name#$New_name#g"   /opt/${New_name}.xml
sed -ri '/uuid|mac address/d'  /opt/${New_name}.xml
#6.导入配置信息
virsh define  /opt/${New_name}.xml  &>/dev/null
#7.启动测试
virsh start  $New_name  &>/dev/null
#8.console登录测试
virsh console $New_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
    link/ether 52:54:00:48:31:fe brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.73/24 brd 192.168.122.255 scope global noprefixroute dynamic eth0
       valid_lft 3587sec preferred_lft 3587sec
    inet6 fe80::cf48:f450:d25a:7c02/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::b588:2d5b:90f5:9830/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::9692:5c60:2f96:647/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever

15. Kvm虚拟机的桥接网络

NAT 模式上网原理

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


桥接模式  



#创建一个桥接网络


[root@kvm01 /opt]# virsh  iface-bridge  eth0  br0
Created bridge br0 with attached device eth0
Bridge interface br0 started

[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]# 

#修改虚拟机的配置信息

[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
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:23:13:f9 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.101/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe23:13f9/64 scope link tentative 
       valid_lft forever preferred_lft forever
[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

--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 30.533/31.743/32.953/1.210 ms
[root@web01 ~]# 


#本地进行连接测试

[C:\~]$ ssh  root@10.0.0.101


Connecting to 10.0.0.101:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last failed login: Wed Apr  8 15:46:21 CST 2020 from 10.0.0.1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Wed Apr  8 15:41:30 2020
[root@web01 ~]# 
[root@web01 ~]# 
[root@web01 ~]#

NAT 在这里插入图片描述桥接模式 在这里插入图片描述

16. 虚拟机冷迁移

#冷迁移的步骤

准备另一台主机的环境  

[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@kv

[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
m02 ~]# 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


Connecting to 10.0.0.101:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last failed login: Thu Apr  9 09:28:50 CST 2020 from 10.0.0.1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Thu Apr  9 09:28:33 2020
[root@web01 ~]#

17. 虚拟机的热迁移

磁盘文件  :  共享存储


热迁移的流程:

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


#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
/dev/sda3        48G  2.0G   46G   5% /
devtmpfs        2.0G     0  2.0G   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           2.0G   12M  2.0G   1% /run
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/sdb1       100G   11G   90G  11% /opt
/dev/sda1       197M  105M   93M  54% /boot
tmpfs           394M     0  394M   0% /run/user/0
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]# 
[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


#出现报错  
[root@kvm01 /kvm_disk]# ll
total 2162572
-rw-r--r-- 1 qemu qemu 2816475648 2020-04-09 10:42 web04.qcow2
[root@kvm01 /kvm_disk]# virsh  migrate  --live --verbose  web04  qemu+ssh://10.0.0.12/system  --unsafe
The authenticity of host '10.0.0.12 (10.0.0.12)' can't be established.
ECDSA key fingerprint is SHA256:K8NapPzlTxhCMXC/bRFTtI9mdwr63FH4Wu7psrXXqBs.
ECDSA key fingerprint is MD5:73:9f:67:f1:5d:39:10:3d:b2:be:f7:c1:66:aa:00:6e.
Are you sure you want to continue connecting (yes/no)? yes
root@10.0.0.12's password: 
error: Unable to resolve address 'kvm02' service '49152': Name or service not known

[root@kvm01 /kvm_disk]# 


#进行hosts文件解析

[root@kvm02 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.11  kvm01
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 %]

#在热迁移的过程中,丢失了一个数据包

[root@kvm02 ~]# ll /run/libvirt/qemu/web04.xml
-rw------- 1 root root 9833 2020-04-09 10:47 /run/libvirt/qemu/web04.xml


[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

18. 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:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      16460/Xvnc          
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      9430/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      9043/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      9319/master         
tcp6       0      0 :::5901                 :::*                    LISTEN      16460/Xvnc          
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::6001                 :::*                    LISTEN      16460/Xvnc          
tcp6       0      0 :::22                   :::*                    LISTEN      9043/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      9319/master       

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

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

19. Kvm之WebVirtMgr背景

Kvm宿主机越来越多,需要对宿主机的状态进行调控,决定采用WebVirtMgr作为Kvm虚拟化的web管理工具,图形化的WEB,让人能更方便的查看Kvm宿主机的情况和操作。
WebVirtMgr是近两年来发展较快,比较活跃,非常清新的一个Kvm管理平台,提供对宿主机和虚机的统一管理,它有别于Kvm自带的图形管理工具(virtual machine manager),让Kvm管理变得更为可视化,对中小型Kvm应用场景带来了更多方便。
WebVirtMgr采用几乎纯Python开发,其前端是基于Python的Django,后端是基于Libvirt的Python接口,将日常Kvm的管理操作变的更加的可视化。


特点:
操作简单,便于易用
通过libvirt的API接口进行管理
提供对虚拟机的生命周期管理

支持的功能:
宿主机支持的功能:
CPU的利用率
内存的利用率
网络资源管理
存储资源管理
虚拟机的镜像管理
虚拟机的克隆
虚拟机的快照
虚拟机的日志管理
虚拟机的迁移


虚拟机支持的功能:
CPU 
内存
状态管理
快照  
VNC连接
安装虚拟机

20. 安装部署WebVirtMgr

官网:https://github.com/retspen/webvirtmgr/wiki/Install-WebVirtMgr 
#1.下载epel源
[root@kvm02 ~]# yum install epel-release

#安装依赖
[root@kvm02 ~]# yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx  gcc python-devel

#更新pip的版本
[root@kvm02 ~]# pip install --upgrade pip

#安装numpy
[root@kvm02 ~]# pip install numpy

#pip安装加速的命令
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple    numpy


#安装部署Python环境

[root@kvm02 ~]# cd /usr/local/src/

[root@kvm02 /usr/local/src/webvirtmgr]#  pip install -r requirements.txt  -i https://pypi.tuna.tsinghua.edu.cn/simple 

#检查sqlite3
[root@kvm02 /usr/local/src/webvirtmgr]# python
Python 2.7.5 (default, Aug  7 2019, 00:51:29) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> exit()

#初始化账户

[root@kvm02 /usr/local/src/webvirtmgr]# ./manage.py syncdb
WARNING:root:No local_settings file found.
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table servers_compute
Creating table instance_instance
Creating table create_flavor

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes            #是否创建超级管理用户
Username (leave blank to use 'root'): admin                #创建admin
Email address: admin@qq.com                                #邮箱
Password:                         #设置密码
Password (again):                 #确认密码
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 6 object(s) from 1 fixture(s)


#生成的配置文件信息

[root@kvm02 /usr/local/src/webvirtmgr]# ./manage.py collectstatic
WARNING:root:No local_settings file found.

You have requested to collect static files at the destination
location as specified in your settings.

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes
Copying '/usr/local/src/webvirtmgr/webvirtmgr/static/css/bootstrap-multiselect.css'
Copying '/usr/local/src/webvirtmgr/webvirtmgr/static/css/bootstrap.min.css'

#创建超级管理员用户
[root@kvm02 /usr/local/src/webvirtmgr]# ./manage.py createsuperuser
WARNING:root:No local_settings file found.
Username (leave blank to use 'root'): qls
Email address: qls@qq.com
Password: 
Password (again): 
Superuser created successfully.


#生成密钥对
[root@kvm02 ~]# ssh-keygen  -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1apKP2Kzyu3anJyb3Ume5cyNYp0g2WuJgicX4MecPc4 root@kvm02
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|           .     |
|          . .    |
|    .    . .     |
|   . + oSo.      |
|    . * =.o      |
|     o.+.+.=..   |
|   .o*BBE+*Boo   |
|    +O&*o+=.= .  |
+----[SHA256]-----+
[root@kvm02 ~]# ssh-copy-id  10.0.0.12
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.0.0.12's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '10.0.0.12'"
and check to make sure that only the key(s) you wanted were added.

#设置加密连接
[root@kvm02 ~]# ssh 10.0.0.12  -L localhost:8000:localhost:8000 -L localhost:6080:localhost:6080

21. 配置Nginx

[root@kvm02 ~]# mkdir /var/www
[root@kvm02 ~]# cd /usr/local/src/webvirtmgr
[root@kvm02 /usr/local/src/webvirtmgr]# cd ..
[root@kvm02 /usr/local/src]# mv webvirtmgr/ /var/www


[root@kvm02 ~]# cat /etc/nginx/conf.d/webvirtmgr.conf
server {
    listen 80 default_server;

    server_name $hostname;
    #access_log /var/log/nginx/webvirtmgr_access_log; 

    location /static/ {
        root /var/www/webvirtmgr/webvirtmgr; # or /srv instead of /var
        expires max;
    }

    location ~ .*\.(js|css)$ {
           proxy_pass http://127.0.0.1:8000;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        client_max_body_size 1024M; # Set higher depending on your needs 
    }
}

#将此文件的server全部注释
[root@kvm02 ~]# vim /etc/nginx/nginx.conf

[root@kvm02 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@kvm02 ~]# systemctl  start nginx.service 
[root@kvm02 ~]# systemctl  enable  nginx.service

22. 配置部署超级管理

[root@kvm02 ~]# chown -R nginx:nginx /var/www/webvirtmgr

[root@kvm02 ~]# cat /etc/supervisord.d/webvirtmgr.ini
[program:webvirtmgr]
command=/usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
logfile=/var/log/supervisor/webvirtmgr.log
log_stderr=true
user=nginx

[program:webvirtmgr-console]
command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=nginx


[root@kvm02 ~]# systemctl  start supervisord
[root@kvm02 ~]# systemctl  enable  supervisord

23. 更新

[root@kvm02 ~]#  cd /var/www/webvirtmgr
[root@kvm02 /var/www/webvirtmgr]#  git pull
Already up-to-date.
[root@kvm02 /var/www/webvirtmgr]# ./manage.py collectstatic
WARNING:root:No local_settings file found.

You have requested to collect static files at the destination
location as specified in your settings.

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes
Copying '/var/www/webvirtmgr/webvirtmgr/static/css/bootstrap-multiselect.css'
Copying '/var/www/webvirtmgr/webvirtmgr/static/css/bootstrap.min.css'
Copying '/var/www/webvirtmgr/webvirtmgr/static/css/signin.css'

[root@kvm02 /var/www/webvirtmgr]# systemctl  restart  supervisord.service


#访问


http://x.x.x.x:8000

24.远程链接

#使用tcp进行对远程libvirtd进行连接访问的配置如下:
#1.修改文件/etc/sysconfig/libvirtd,用来启用tcp的端口

[root@kvm02 ~]# grep -Ev "^$|#" /etc/sysconfig/libvirtd
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS="--listen"

#2.修改文件/etc/libvirt/libvirtd.conf
[root@kvm02 ~]# grep -Ev "^$|#" /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "none"

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

#4.查看端口16509是否启动
[root@kvm02 ~]# netstat -lntp|grep 16509
tcp 0 0 0.0.0.0:16509 0.0.0.0:* LISTEN 15344/libvirtd

#5.在source host连接dest host远程libvirtd查看信息
[root@kvm02 ~]# virsh -c qemu+tcp://10.0.0.182/system
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh #         #表示成功
virsh #

#6.web端进行tcp连接

在这里插入图片描述

25.添加多台进行管理

在这里插入图片描述在这里插入图片描述

kvm虚拟化管理平台WebVirtMgr部署(创建实例及web详解) https://www.cnblogs.com/kevingrace/p/5739009.html

Copyright © 高程程 all right reserved,powered by Gitbook修订于: 2021-05-18 21:15:10

results matching ""

    No results matching ""