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等所管理的容器
    • 从虚拟化实现方式分

      KVM虚拟化_第1张图片

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

工具 厂商 主CPU 目标CPU 主系统 目标系统
qemu Febrice,Bellard Inter,AMD,ARM x86/x86-64/ARM Windows,Linux,Mac OS Linux
kvm Red Hat Inter/AMD x86/x86-64 Linux Windows/Linux
Xen 剑桥大学,Inter/AMD Inter/AMD x86/x86-64 Windows/Linux/Solaris Windows/Linux
Hyper-V 微软 Inter/AMD x86/x86-64 Windows Windows/Linux
VMware ESXi Server VMware Inter/AMD x86/x86-64 裸机安装 Windows/Linux
Oracle VM Oracle Inter/AMD x86/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和内存外的其他设备的虚拟以及对各种虚拟设备的创建与调用

    KVM虚拟化_第2张图片

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,内存,磁盘空间等

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

    KVM虚拟化_第3张图片

[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

KVM虚拟化_第4张图片

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

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

KVM虚拟化_第5张图片

KVM虚拟化_第6张图片

KVM虚拟化_第7张图片

KVM虚拟化_第8张图片

KVM虚拟化_第9张图片

KVM虚拟化_第10张图片

KVM虚拟化_第11张图片

KVM虚拟化_第12张图片

KVM虚拟化_第13张图片

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

KVM虚拟化_第14张图片

KVM虚拟化_第15张图片

KVM虚拟化_第16张图片

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

KVM虚拟化_第17张图片

命令行安装

  • 帮助信息
[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

KVM虚拟化_第18张图片

  • 启动客户机
启动虚拟机
[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 


<domain type='kvm'>
  <name>centos7.6-1name>
  <uuid>92891b9c-37cc-4511-9bf6-59a8170c434cuuid>
  <memory unit='KiB'>1048576memory>
  <currentMemory unit='KiB'>1048576currentMemory>
  <vcpu placement='static'>1vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvmtype>
    <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


<network>
  <name>defaultname>
  <uuid>481578d7-6728-48fa-8569-09eac31a0273uuid>
  <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 


<pool type='dir'>
  <name>homename>
  <uuid>74ccd74f-30ea-4462-bc85-ca363520a1cfuuid>
  <capacity unit='bytes'>0capacity>
  <allocation unit='bytes'>0allocation>
  <available unit='bytes'>0available>
  <source>
  source>
  <target>
    <path>/homepath>
  target>
pool>
  • CPU热添加
[[email protected] ~]# 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

[[email protected] ~]# 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默认就支持内存气球

  • 半虚拟化驱动

    • 全虚拟化驱动

      KVM虚拟化_第19张图片

    • 半虚拟化驱动

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

      KVM虚拟化_第20张图片

    • 配置半虚拟化驱动

      • 网络选择virtio

        KVM虚拟化_第21张图片

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

      [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
      
      • 软件获取:http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers

        KVM虚拟化_第22张图片

        KVM虚拟化_第23张图片

配置

添加网卡

  • virt-manager图形化配置

    KVM虚拟化_第24张图片

KVM虚拟化_第25张图片

KVM虚拟化_第26张图片

[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>
    type='network'>
      '52:54:00:83:7b:f1'/>
      'default'/>
      type='virtio'/>
      
type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/> </interface>

创建虚拟网络

virt-manager添加网络

KVM虚拟化_第27张图片

KVM虚拟化_第28张图片

KVM虚拟化_第29张图片

KVM虚拟化_第30张图片

KVM虚拟化_第31张图片

KVM虚拟化_第32张图片

KVM虚拟化_第33张图片

  • 验证网络可用性
[root@server5 ~]# ip a
8: virbr1: -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连接新创建的网络

KVM虚拟化_第34张图片

  • 生效:强制关机,再次开机
查看ip地址
[root@localhost ~]# ip a
1: lo: ,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: ,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: ,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 [email protected]
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.
[email protected]'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 

  network2</name>		自定义
  e63b6f45-8c1a-4378-8d46-18c8faab3271</uuid>	自生成
  'nat'/>		网络模式
  'virbr2' stp='on' delay='0'/>	自定义网桥名称
  '52:54:00:61:62:96'/>	自生成
  'network2'/>	同自定义name
  '192.168.20.1' netmask='255.255.255.0'>
    
      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             活动     是           是

KVM虚拟化_第35张图片

桥接模式

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

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

KVM虚拟化_第36张图片

KVM虚拟化_第37张图片

KVM虚拟化_第38张图片

KVM虚拟化_第39张图片

  • 查看
[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"
# 该文件被修改了,所以之前要备份
  • 客户机使用网桥

KVM虚拟化_第40张图片

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

KVM虚拟化_第41张图片

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

KVM虚拟化_第42张图片

桥接模式改为net模式

  • 客户机接口更改

KVM虚拟化_第43张图片

  • 宿主机停止网桥接口

KVM虚拟化_第44张图片

  • 删除相关网卡文件
[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图形化添加

KVM虚拟化_第45张图片

KVM虚拟化_第46张图片

[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
成功分离磁盘

存储池管理

查看存储池

KVM虚拟化_第47张图片

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

添加本地存储池

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

KVM虚拟化_第48张图片

KVM虚拟化_第49张图片

KVM虚拟化_第50张图片

KVM虚拟化_第51张图片

添加网络存储池

网络存储端
[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
  • 添加网络存储池

KVM虚拟化_第52张图片

你可能感兴趣的:(linux运维(所有),云计算,linux,kvm)