KVM虚拟化

KVM虚拟化

虚拟化技术

  • 虚拟化技术就是对资源的抽象,如虚拟机,虚拟内存等

  • 虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统,在70年代的 System370 系列中逐渐流行起来,这些机器通过一种叫**虚拟机监控器(Virtual Machine Monitor,VMM)**的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例

  • VMM虚拟机监控器也叫做Hypervisor,就是为了虚拟化而引入的一个软件层。它向下掌控实际的物理资源,向上呈现出N份逻辑资源。

  • 虚拟机监控器运行的实际物理环境,称为宿主机;其上虚拟出来的逻辑主机,称为客户机。

  • 分类

    • 从资源提供角度分

      • 平台虚拟化:把CPU,内存,外设等作为资源提供给虚拟机使用。在同一个X86平台上面,可以虚拟多个X86平台,每个平台可以运行自己完全独立的操作系统。如QEMU,KVM,VMware等所管理的虚拟机
      • 操作系统虚拟化:如果把操作系统及其提供的系统调用作为资源,那虚拟化就表现为操作系统虚拟化,例如Linux容器虚拟化技术就是在同一个Linux操作系统之上,虚拟出多个同样的操作系统,每个应用程序认为自己运行在一个独立的OS。如LXC或Docker等所管理的容器
    • 从虚拟化实现方式分

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-evuMv5LW-1644590514274)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224142601421.png)]

      • Type I:虚拟机直接运行在系统硬件上,被称为裸机型,没有所谓的宿主机操作系统。他们直接控制硬件资源以及客户机。这种方案的性能处于主机虚拟化与操作系统虚拟化之间。如xen和vmware ESX
      • Type II:虚拟机运行在传统操作系统上,同样创建的是硬件全仿真实例,被称为**托管(宿主)**型。Hypervisor构建出一整套虚拟硬件平台,使用者根据需要安装新的操作系统和应用软件,底层和上层的操作系统可以完全无关化。简单的说这类VMM通常就是宿主机操作系统上的一个应用程序,像其他应用程序一样受宿主机操作系统的管理,通常抽象为进程。如VMware workstation、KVM。主机虚拟化中VM的应用程序调用硬件资源时需要经过:VM内核->Hypervisor->主机内核,相对来说,性能是几种虚拟化技术中最差的
  • Hypervisor管理工具的对比

工具厂商主CPU目标CPU主系统目标系统
qemuFebrice,BellardInter,AMD,ARMx86/x86-64/ARMWindows,Linux,Mac OSLinux
kvmRed HatInter/AMDx86/x86-64LinuxWindows/Linux
Xen剑桥大学,Inter/AMDInter/AMDx86/x86-64Windows/Linux/SolarisWindows/Linux
Hyper-V微软Inter/AMDx86/x86-64WindowsWindows/Linux
VMware ESXi ServerVMwareInter/AMDx86/x86-64裸机安装Windows/Linux
Oracle VMOracleInter/AMDx86/x86-64裸机安装Windows/Linux

KVM架构

KVM内核模块

  • 它属于标准Linux内核的一部分,是一个专门提供虚拟化功能的模块,主要负责CPU和内存的虚拟化
  • 本质上,KVM是管理虚拟硬件设备的驱动,该驱动使用字符设备**/dev/kvm**(由KVM本身创建)作为管理接口,主要负责vCPU的创建,虚拟内存的分配,vCPU寄存器的读写以及vCPU的运行

QEMU

  • QEMU是用户态工具,可以为客户机提供设备模拟的功能,包括模拟BIOS、数据总线、磁盘、网卡、显卡、声卡、键盘、鼠标等。

  • 我们知道KVM只负责CPU和内存的虚拟化,加载了它以后,用户就可以进一步通过工具创建虚拟机(KVM提供接口),但仅有KVM还是不够的,用户无法直接控制内核去做事情(KVM只提供接口,怎么创建虚拟机,分配vCPU等并不在它上面进行),还必须有个运行在用户空间的工具才行,KVM的开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,并对其进行了修改,最后形成了QEMU-KVM。

  • 在QEMU-KVM中,KVM运行在内核空间QEMU运行在用户空间,实际模拟创建,管理各种虚拟硬件,QEMU将KVM整合了进来,通过/ioctl 调用 /dev/kvm,从而将CPU指令的部分交给内核模块来做,KVM实现了CPU和内存的虚拟化,但kvm不能虚拟其他硬件设备,因此qemu还有模拟IO设备(磁盘,网卡,显卡等)的作用,KVM加上QEMU后就是完整意义上的服务器虚拟化。但是,由于qemu模拟io设备效率不高的原因,现在常常采用半虚拟化的virtio方式来虚拟IO设备。

  • KVM负责提供对cpu,内存的虚拟

  • QEMU负责除CPU和内存外的其他设备的虚拟以及对各种虚拟设备的创建与调用

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kHeoKql-1644590514275)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224154333919.png)]

libvirt

  • libvirt是一套免费、开源的支持Linux下主流虚拟化管理程序的C函数库,其旨在为包括KVM在内的各种虚拟化管理程序提供一套方便、可靠的编程接口。 当前主流Linux平台上默认的虚拟化管理工具virt-manager,virsh等都是基于libvirt开发。
  • libvirt是一个针对各种虚拟化平台的虚拟机管理的API库。一些常用的虚拟机管理工具如virsh(类似vim编辑器),virt-install,virt-manager等和云计算框架平台(如OpenStack,OpenNebula,Eucalyptus等)都在底层使用libvirt提供的应用程序接口。
  • libvirt主要由三个部分组成:API库,一个守护进程 libvirtd 和一个默认命令行管理工具 virsh。

总结

  • QEMU是一个独立的虚拟化解决方案,并不依赖KVM(它本身自己可以做CPU和内存的模拟,只不过效率较低)。而KVM是另一套虚拟化解决方案,对CPU进行虚拟效率较高(采用了硬件辅助虚拟化),但本身不提供其他设备的虚拟化,借用了QEMU的代码进行了定制,所以KVM方案一定要依赖QEMU。即使后来RedHat后来开发了libvirt,也只能简单的认为libvirt是个虚拟机管理工具,仍然需要通过用户空间QEMU来与KVM进行交互。

KVM虚拟机部署

环境准备

  • Linux主机需要安装图形化桌面

最小化——>图形

  • yum groupinstall -y “GNOME 桌面”

  • 重启

  • startx临时开启终端(不推荐)

  • systemctl set-default graphical.targer

    [root@server1 ~]# systemctl get-default
    graphical.target

  • 注意合理分配CPU,内存,磁盘空间等

  • 确保开启硬件辅助虚拟化

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3lHTurEu-1644590514276)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224161856595.png)]

[root@server5 ~]# lscpu|grep '虚拟化'
虚拟化:           VT-x
虚拟化类型:     完全
  • 查看CPU支持的功能(vmx:INTEL的虚拟化功能|svm:AMD的虚拟化功能)
[root@server5 ~]# grep -E 'svm|vmx' /proc/cpuinfo 
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat pku ospke md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities

安装kvm

清理干净KVM相关的预装环境
[root@server5 ~]# yum remove `rpm -qa |egrep 'qemu|virt|kvm'`
[root@server5 ~]# rm -rf /var/lib/libvirt/
[root@server5 ~]# rm -rf /etc/libvirt/

查看分组
[root@server5 ~]# yum grouplist

安装kvm分组(可译为虚拟化的包都会被安装)
[root@server5 ~]# yum install *qemu* *virt* librbd1-devel -y

开启libvirt
[root@server5 ~]# systemctl start libvirtd
[root@server5 ~]# systemctl enable libvirtd
[root@server5 ~]# systemctl status libvirtd
[root@server5 ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------

确保kvm模块已被加载
[root@server5 ~]# lsmod |grep kvm
kvm_intel             188740  0 
kvm                   637515  1 kvm_intel
irqbypass              13503  1 kvm

设置防火墙规则
[root@server5 ~]# systemctl start firewalld.service 
[root@server5 ~]# systemctl enable firewalld.service 
[root@server5 ~]# firewall-cmd --zone=public --add-masquerade --permanent 
success
[root@server5 ~]# firewall-cmd --zone=public --add-masquerade
success
[root@server5 ~]# firewall-cmd --zone=public --list-all 
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Guest OS安装

图形化安装

  • 调出虚拟系统管理器
[root@server5 ~]# virt-manager

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-udOeBo8i-1644590514277)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224210105806.png)]

  • 上传系统镜像
[root@server5 ~]# rz

[root@server5 ~]# ls
anaconda-ks.cfg                   公共  视频  文档  音乐
CentOS-7-x86_64-Minimal-2009.iso  模板  图片  下载  桌面
  • 使用镜像安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zVuhEbwS-1644590514278)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211531099.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TfpGvlby-1644590514279)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211605051.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZM1rW4nh-1644590514279)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211715726.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-efTIacru-1644590514280)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211806367.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v7TlaHMy-1644590514280)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211831558.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e2zY9Ktj-1644590514281)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211933970.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gA36utF5-1644590514281)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224212044427.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nCqmWlFA-1644590514282)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224212242379.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n6BBH9K5-1644590514283)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224212642808.png)]

  • 自定义配置(配置完成后点击:左上角开始安装)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yL0kpWaH-1644590514283)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224213650937.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V3XAn4zi-1644590514284)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224213916580.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-73fMGMQ9-1644590514284)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224214524788.png)]

  • 安装过程中可以参考CentOS7的安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h283yiRA-1644590514285)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224221338233.png)]

命令行安装

  • 帮助信息
[root@server5 ~]# virt-install --help
# 仅保留常用选型
usage: virt-install --name NAME --memory MB STORAGE INSTALL [options]
选项:
  -h, --help            show this help message and exit
  -n NAME, --name NAME  客户机实例名称
  --memory MEMORY       Configure guest memory allocation. Ex:
                        --memory 1024 (in MiB)
                        --memory 512,maxmemory=1024
  --vcpus VCPUS         Number of vcpus to configure for your guest. Ex:
                        --vcpus 5
                        --vcpus 5,maxvcpus=10,cpuset=1-4,6,8
  --cdrom CDROM         光驱安装介质
  --disk DISK           指定存储的各种选项。例如:
                        --disk size=10 (在默认位置创建 10GiB 镜像)
                        --disk /my/existing/disk,cache=none
                        --disk device=cdrom,bus=scsi
                        --disk=?
  -w NETWORK, --network NETWORK
                        配置客户机网络接口。例如:
                        --network bridge=mybr0
                        --network network=my_libvirt_virtual_net
                        --network 
  --graphics GRAPHICS   配置客户机显示设置。例如:
                        --graphics vnc
                        --graphics spice,port=5901,tlsport=5902
                        --graphics none
                        --graphics vnc,password=foobar,port=5910,keymap=ja
  --arch ARCH           模拟 CPU 架构
  --autostart           主机启动时自动启动域。
  --noautoconsole       不要自动尝试连接到客户端控制台
  • 安装示例
[root@server5 ~]# virt-install \
	--name=centos7.6-1 \
	--vcpus=1 \
	--ram=1024 \
	--arch=x86_64 \
	--os-type=linux \
	--os-variant=rhel7 \
	--graphics vnc,listen=0.0.0.0,port=5901,keymap=en-us \
	--disk path=/var/lib/libvirt/images/centos7.6-1.img,size=3,format=qcow2 \
	--cdrom=/home/CentOS-7-x86_64-Minimal-2009.iso \
	--network bridge=virbr0
选型(为空表示可追加)可更换为
–graphics vnc,listen=0.0.0.0,
port=5901,keymap=en-us
–nographics
–noautoconsole
–network bridge=virbr0–bridge=virbr0
–ram=1024–memory 512,maxmemory=1024
–vcpus=1–vcpus 1,maxvcpus=4
–autostart

基本使用

  • 查看客户机
查看正在运行的虚拟机
[root@server5 ~]# virsh list 
 Id    名称                         状态
----------------------------------------------------

查看所有虚拟机
[root@server5 ~]# virsh list --all 
 Id    名称                         状态
----------------------------------------------------
 -     centos7.6-1                    关闭

查看域信息
[root@server5 ~]# virsh dominfo centos7.6-1
Id:             1
名称:       centos7.6-1
UUID:           92891b9c-37cc-4511-9bf6-59a8170c434c
OS 类型:    hvm
状态:       running
CPU:          1
CPU 时间:   20.5s
最大内存: 1048576 KiB
使用的内存: 1048576 KiB
持久:       是
自动启动: 禁用
管理的保存: 否
安全性模式: none
安全性 DOI: 0

查看虚拟机资源占用情况
[root@server5 ~]# virt-top

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WLBNUU9U-1644590514285)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211225171314781.png)]

  • 启动客户机
启动虚拟机
[root@server5 ~]# virsh start centos7.6-1
域 centos7.6-1 已开始
[root@server5 ~]# virsh list
 Id    名称                         状态
----------------------------------------------------
 1     centos7.6-1                    running
 
设置开机自启
[root@server5 ~]# virsh autostart centos7.6-1
域 centos7.6-1标记为自动开始
[root@server5 ~]# virsh dominfo centos7.6-1
Id:             1
名称:       centos7.6-1
UUID:           92891b9c-37cc-4511-9bf6-59a8170c434c
OS 类型:    hvm
状态:       running
CPU:          1
CPU 时间:   20.7s
最大内存: 1048576 KiB
使用的内存: 1048576 KiB
持久:       是
自动启动: 启用
管理的保存: 否
安全性模式: none
安全性 DOI: 0
  • 修改配置文件/etc/libvirt/qemu/centos7.6-1.xml
文件位置/etc/libvirt/qemu/centos7.6-1.xml 
[root@server5 ~]# head -20 /etc/libvirt/qemu/centos7.6-1.xml 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit centos7.6-1	命令行修改方法
or other application using the libvirt API.
-->

<domain type='kvm'>
  <name>centos7.6-1</name>
  <uuid>92891b9c-37cc-4511-9bf6-59a8170c434c</uuid>
  <memory unit='KiB'>1048576</memory>
  <currentMemory unit='KiB'>1048576</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>

[root@server5 ~]# virsh edit centos7.6-1
  • 网络配置文件/etc/libvirt/qemu/networks/
[root@server5 ~]# cd /etc/libvirt/qemu/networks/
[root@server5 networks]# ls
autostart  default.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh net-edit default	命令行修改方法
or other application using the libvirt API.
-->

<network>
  <name>default</name>
  <uuid>481578d7-6728-48fa-8569-09eac31a0273</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:61:66:bb'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>
  • 存储池配置文件/etc/libvirt/storage/
[root@server5 ~]# cd /etc/libvirt/storage/
[root@server5 storage]# ls
autostart  home.xml
[root@server5 storage]# vim home.xml 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh pool-edit home
or other application using the libvirt API.
-->

<pool type='dir'>
  <name>home</name>
  <uuid>74ccd74f-30ea-4462-bc85-ca363520a1cf</uuid>
  <capacity unit='bytes'>0</capacity>
  <allocation unit='bytes'>0</allocation>
  <available unit='bytes'>0</available>
  <source>
  </source>
  <target>
    <path>/home</path>
  </target>
</pool>
  • CPU热添加
[root@centos7.6-1 ~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0

命令行添加
[root@server5 ~]# virsh setvcpus centos7.6-1 2 --live

[root@centos7.6-1 ~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
  • 内存气球

KVM内存气球技术可以对虚拟机使用的内存按需调节,从而提高内存的利用率。linux默认就支持内存气球

  • 半虚拟化驱动

    • 全虚拟化驱动

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1uLtb7IB-1644590514286)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230224504219.png)]

    • 半虚拟化驱动

      通过驱动对操作系统进行了修改,即Virtio技术,,虚拟机直接访问虚拟化层,步骤减少,转化效率高

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hwFZidyN-1644590514286)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230224702005.png)]

    • 配置半虚拟化驱动

      • 网络选择virtio

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fEBkfDor-1644590514287)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224213916580.png)]

      • 客户机查看是否支持半虚拟化驱动

      [root@server5 ~]# virt-what
      kvm
      [root@server5 ~]# ethtool -i eth0
      driver: virtio_net
      version: 1.0.0
      firmware-version: 
      expansion-rom-version: 
      bus-info: 0000:00:03.0
      supports-statistics: no
      supports-test: no
      supports-eeprom-access: no
      supports-register-dump: no
      supports-priv-flags: no
      

配置

添加网卡

  • virt-manager图形化配置

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qOvVG3Sd-1644590514288)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230231422646.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JtrgtnTd-1644590514288)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230231722128.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7kAaVii7-1644590514289)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230231837941.png)]

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-ens9
修改相应的配置文件
  • virsh命令行添加
确保客户机运行
[root@server5 ~]# virsh list
 Id    名称                         状态
----------------------------------------------------
 1     centos7.6-1                    running

查看已有网卡
[root@server5 ~]# virsh domiflist centos7.6-1 
接口     类型     源        型号      MAC
-------------------------------------------------------
vnet0      bridge     virbr0     virtio      52:54:00:65:4d:a5
vnet1      network    default    rtl8139     52:54:00:9a:18:f7

添加网卡
[root@server5 ~]# virsh attach-interface centos7.6-1 \
	--type network \
	--source default \
	--model virtio \
	--config 
成功附加接口
[root@server5 ~]# virsh domiflist centos7.6-1
接口     类型     源        型号      MAC
-------------------------------------------------------
vnet0      bridge     virbr0     virtio      52:54:00:65:4d:a5
vnet1      network    default    rtl8139     52:54:00:9a:18:f7

重启(需要先关机,再开机,才能生效)
[root@server5 ~]# virsh domiflist centos7.6-1
接口     类型     源        型号      MAC
-------------------------------------------------------
vnet0      bridge     virbr0     virtio      52:54:00:65:4d:a5
vnet1      network    default    rtl8139     52:54:00:9a:18:f7
vnet2      network    default    virtio      52:54:00:83:7b:f1
  • 配置文件添加
配置文件地址
[root@server5 ~]# cd /etc/libvirt/qemu/
[root@server5 qemu]# vim centos7.6-1.xml 
    </interface>
    <interface type='network'>
      <mac address='52:54:00:83:7b:f1'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
    </interface>

创建虚拟网络

virt-manager添加网络

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2yLwOhoH-1644590514289)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220101144515355.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2IMiSOZT-1644590514290)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220101144635362.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wL9OUfka-1644590514290)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102084757468.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QnWLuZeC-1644590514290)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102085136236.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x29XC4VH-1644590514291)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102085500717.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ib0y4B1s-1644590514291)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102085543261.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-He5zLtW3-1644590514291)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102085601153.png)]

  • 验证网络可用性
[root@server5 ~]# ip a
8: virbr1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:b6:35:e2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.1/24 brd 192.168.10.255 scope global virbr1
       valid_lft forever preferred_lft forever
  • xshell连接新创建的网络

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zRN9mrwj-1644590514292)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102090802404.png)]

  • 生效:强制关机,再次开机
查看ip地址
[root@localhost ~]# 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:80:94:b0 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:da:57:16 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.150/24 brd 192.168.10.255 scope global noprefixroute dynamic eth1
       valid_lft 2714sec preferred_lft 2714sec
    inet6 fe80::82c0:907:6163:5dd8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

查看网关
[root@localhost ~]# ip route
default via 192.168.10.1 dev eth1 proto dhcp metric 100 
192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.150 metric 100

ping网关
[root@localhost ~]# ping 192.168.10.1150

ping宿主机
[root@localhost ~]# ping 192.168.139.50

ping宿主机的网关
[root@localhost ~]# ping 192.168.139.2

ping域名
[root@localhost ~]# ping www.baidu.com

虚拟机连接
[root@server5 ~]# ssh root@192.168.10.150
The authenticity of host '192.168.10.150 (192.168.10.150)' can't be established.
ECDSA key fingerprint is SHA256:0j755uJHNYtgaiAvD5muWjnq1Qxtuvo83VBMx2a85Wc.
ECDSA key fingerprint is MD5:17:5d:03:0d:b8:f5:6d:86:06:6e:35:1d:51:e7:56:a9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.150' (ECDSA) to the list of known hosts.
root@192.168.10.150's password: 
Last login: Sun Jan  2 19:48:52 2022
[root@localhost ~]# 

通过配置文件生成网络

  • 编写网络配置文件
获得网络编写模板文件
[root@server5 ~]# cd /etc/libvirt/qemu/networks/
[root@server5 networks]# cp network1.xml network2.xml 
[root@server5 networks]# ls
autostart  default.xml  network1.xml  network2.xml

生成UUID
[root@server5 networks]# uuidgen
e63b6f45-8c1a-4378-8d46-18c8faab3271

生成MAC地址
[root@server5 networks]# openssl rand -hex 6 |sed -r 's/(..)/\1:/g;s/.$//'
25:a4:ac:61:62:96
# 该设备名为52:54:00:xx:xx:xx,可以只更改后面部分

修改配置文件
[root@server5 networks]# vim network2.xml 
<network>
  <name>network2</name>		自定义
  <uuid>e63b6f45-8c1a-4378-8d46-18c8faab3271</uuid>	自生成
  <forward mode='nat'/>		网络模式
  <bridge name='virbr2' stp='on' delay='0'/>	自定义网桥名称
  <mac address='52:54:00:61:62:96'/>	自生成
  <domain name='network2'/>	同自定义name
  <ip address='192.168.20.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.20.10' end='192.168.20.250'/>
    </dhcp>
  </ip>
</network>
  • 基于配置文件生成网络
[root@server5 networks]# virsh net-define network2.xml 
从 network2定义网络network2.xml

开启网络
[root@server5 networks]# virsh net-start network2 
网络 network2 已开始

开机自启
[root@server5 networks]# virsh net-autostart network2 
网络network2标记为自动启动

查看
[root@server5 networks]# virsh net-list --all
 名称               状态     自动开始  持久
----------------------------------------------------------
 default              活动     否           否
 network1             活动     是           是
 network2             活动     是           是

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yLmAXQDQ-1644590514292)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102213729662.png)]

桥接模式

  • 停用NetworkManager并备份网卡文件
[root@server5 ~]# systemctl stop NetworkManager
[root@server5 ~]# systemctl disable NetworkManager

[root@server5 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /root/
  • 创建网桥

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ykpdio50-1644590514292)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102215726735.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pyl2AeDf-1644590514293)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102215801701.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kuPX0AWT-1644590514293)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102215843209.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DWyT1doh-1644590514293)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102215937957.png)]

  • 查看
[root@server5 ~]# cd /etc/sysconfig/network-scripts/
[root@server5 network-scripts]# ls ifcfg-br1 
ifcfg-br1
[root@server5 network-scripts]# cat ifcfg-br1 
DEVICE="br1"
ONBOOT="no"
HOTPLUG="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="192.168.139.50"
NETMASK="255.255.255.0"
GATEWAY="192.168.139.2"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
DHCPV6C="no"
STP="on"
DELAY="0.0"
[root@server5 network-scripts]# cat ifcfg-ens33 
DEVICE="ens33"
ONBOOT="no"
HOTPLUG="yes"
BRIDGE="br1"
# 该文件被修改了,所以之前要备份
  • 客户机使用网桥

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qlbakl9T-1644590514294)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102220558920.png)]

修改网卡文件
[root@localhost~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-eth0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fKsRtmR2-1644590514294)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102221749386.png)]

[root@localhost network-scripts]# systemctl restart network

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CuW0Nl53-1644590514294)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102221945422.png)]

桥接模式改为net模式

  • 客户机接口更改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8pCGgkLi-1644590514295)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102222333024.png)]

  • 宿主机停止网桥接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g5TaRmRO-1644590514295)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102222432223.png)]

  • 删除相关网卡文件
[root@server5 network-scripts]# rm -rf ifcfg-br1 
[root@server5 network-scripts]# rm -rf ifcfg-ens33 
  • 恢复原网卡文件
[root@server5 network-scripts]# mv /root/ifcfg-ens33 ./

重启网络
[root@server5 network-scripts]# systemctl restart network

启动NetworkManager
[root@server5 network-scripts]# systemctl start NetworkManager
[root@server5 network-scripts]# systemctl enable NetworkManager

添加硬盘(热插拔)

virt-manager图形化添加

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aQwCnYOU-1644590514295)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220104091411326.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aPvasbjR-1644590514296)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220104091503146.png)]

[root@guest ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom  
vda             252:0    0    5G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0    4G  0 part 
  ├─centos-root 253:0    0  3.5G  0 lvm  /
  └─centos-swap 253:1    0  512M  0 lvm  [SWAP]
vdb             252:16   0    2G  0 disk 

virsh命令添加

  • 创建并使用
[root@server5 ~]# virsh list
 Id    名称                         状态
----------------------------------------------------
 1     my1                            running

[root@server5 ~]# virsh domblklist my1 
目标     源
------------------------------------------------
vda        /var/lib/libvirt/images/my1.qcow2
vdb        /var/lib/libvirt/images/my1-1.qcow2
hdb        -

创建磁盘
[root@server5 ~]# qemu-img create -f qcow2 /root/disk.img 1G
Formatting '/root/disk.img', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off
# 或者使用dd命令模式 dd if=/dev/zero of=/root/disk.img bs=1M count=1024

附加磁盘
[root@server5 ~]# virsh attach-disk my1 --source=/root/disk.img --target vdc --cache writeback --subdriver qcow2
成功附加磁盘

查看
[root@guest ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom  
vda             252:0    0    5G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0    4G  0 part 
  ├─centos-root 253:0    0  3.5G  0 lvm  /
  └─centos-swap 253:1    0  512M  0 lvm  [SWAP]
vdb             252:16   0    2G  0 disk 
vdc             252:32   0    1G  0 disk 
  • 删除磁盘
[root@server5 ~]# virsh detach-disk my1 vdc
成功分离磁盘
  • 持久化附加磁盘
[root@server5 ~]# virsh attach-disk my1 --source=/root/disk.img --target vdc --cache writeback --subdriver qcow2 --persistent
成功附加磁盘

删除
[root@server5 ~]# virsh detach-disk my1 vdc
成功分离磁盘

存储池管理

查看存储池

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-733W4zZX-1644590514296)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220104100637716.png)]

[root@server5 ~]# virsh pool-list --all
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 root                 活动     是      

添加本地存储池

  • 创建目录
[root@server5 ~]# mkdir /home/storage
  • 添加

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oOgte4aK-1644590514296)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220104101155744.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cZVwuEVm-1644590514297)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220108151632281.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHrxpPY2-1644590514297)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220108151655170.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wOVYjizN-1644590514297)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220108151707777.png)]

添加网络存储池

网络存储端
[root@server1 ~]# yum install -y nfs-utils.x86_64
[root@server1 ~]# systemctl start nfs-server
[root@server1 ~]# mkdir /home/nfs-storage
[root@server1 ~]# vim /etc/exports 
[root@server1 ~]# cat /etc/exports 
/home/nfs-storage 192.168.139.0/24(rw,sync,no_root_squash)

KVM虚拟机
[root@server5 ~]# showmount -e 192.168.139.10
Export list for 192.168.139.10:
/home/nfs-storage 192.168.139.0/24
[root@server5 ~]# mkdir /home/remote-storage
  • 添加网络存储池

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hBzBd3ZD-1644590514298)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220108212920084.png)]

  • 2
    点赞
  • 12
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

xiaotanggao

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值