KVM虚拟化平台搭建实操+KVM理论详解

前言

  • KVM 自 Linux 2.6.20 版本后就直接整合到 Linux 内核, 它依托 CPU 虚拟化指令集(如
    Intel-VT、 AMD-V) 实现高性能的虚拟化支持。

一:KVM理论

1.1:概述

  • 广义的 KVM 实际上包含两部分, 一部分是基于 LINUX 内核支持的 KVM 内核模块, 另一部

    分就是经过简化和修改的 Qemu。

    • KVM 内核模块模拟处理器和内存以支持虚拟机的运行,Qemu 主要处理 I/O 以及为用户提
      供一个用户空间工具来进行虚拟机的管理。 两者相互结合, 相辅相成, 构成了一个完整的虚
      拟化平台。
    • 请注意: Qemu 本身并不是 KVM 的一部分, Qemu 是一套完整的虚拟化解决方案, 是纯软
      件实现虚拟化, 包括处理器虚拟化、 内存虚拟化以及各种虚拟设备的模拟, 但因为是纯软件
      模拟出来的, 所以 Qemu 的性能比较低。

1.2:KVM运行时的三种模式

  • 客户模式: 可以简单理解成客户机在操作系统运行中的模式, 客户模式又分为内核模式
    和用户模式。

    • 用户模式: 为用户提供虚拟机管理的用户空间工具以及代表用户执行 I/O, Qemu 运行在
      这个模式之下。

    • 内核模式: 模拟 CPU 以及内存, 实现客户模式的切换, 处理从客户模式的退出。 KVM 内
      核模块运行在这个模式下

  • mark

  • mark

1.3:KVM工作原理

  • 用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。 KVMDriver 为虚
    拟机创建虚拟 CPU 和虚拟内存, 然后执行 VMLAU·NCH 指令进入客户模式, 装载 Guest OS 并运
    行。 Guest OS 运行过程中如果发生中断或者影子缺页等异常, 将暂停 Guest OS 的运行并保
    存当前上下文退出到内核模式来处理这些异常。 内核模式处理这些异常时如果不需要 I/O
    则处理完成后重新进入客户模式。 如果需要 I/O 则进入到用户模式, 由 Qemu 来处理 I/O,
    处理完成后进入内核模式, 再进入客户模式,
  • mark

二:KVM虚拟化平台实操

  • 拓扑图:

    mark

    扫描二维码关注公众号,回复: 9284583 查看本文章

2.1:安装centos7系统

  • 在VMware软件中新建虚拟机,并安装centos7系统
  • 此处比较简单,不在赘述

2.2:centos7系统开局优化和KVM环境准备

  • centos7系统安装完成后,需要勾选上KVM虚拟化功能,且网卡选择NAT模式

  • mark

  • 设置镜像光盘自动挂载

    [root@localhost ~]# vim /etc/fstab 
    /dev/sr0 /mnt iso9660 defaults 0 0	'//尾行添加'
    
    
  • 优化ssh

    [root@localhost ~]# vim /etc/ssh/sshd_config 
    UseDNS no	'//取消注释,并将yes改成no'
    
    
  • yum本地仓库搭建

    [root@localhost ~]# cd /etc/yum.repos.d/
    [root@localhost yum.repos.d]# mkdir bak
    [root@localhost yum.repos.d]# mv * bak
    mv: 无法将目录"bak" 移动至自身的子目录"bak/bak" 下
    [root@localhost yum.repos.d]# ls
    bak
    [root@localhost yum.repos.d]# vim abc.repo
    输入以下信息
    [abc]
    name=test
    baseurl=file:///mnt
    enabled=1
    gpgcheck=0
    [root@localhost yum.repos.d]# yum clean all	'//清空yum仓库'
    [root@localhost yum.repos.d]# mount /dev/sr0 /mnt	'//因为没有重启,所以需要手动挂载一下光盘镜像'
    [root@localhost yum.repos.d]# yum makecache	'//加载yum数据'
    
    
  • 防火墙优化

    [root@localhost yum.repos.d]# systemctl stop firewalld.service 
    [root@localhost yum.repos.d]# systemctl disable firewalld.service 
    Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
    Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
    [root@localhost yum.repos.d]# setenforce 0
    [root@localhost yum.repos.d]# vim /etc/selinux/config 
    SELINUX=disabled	'//将enforcing修改为disabled'
    
    
  • 已完成所有开局优化,重启系统

    [root@localhost yum.repos.d]# reboot
    
    

2.3:安装KVM

  • 有些是已经安装过的,但是下面的安装还是需要在过一遍

    [root@localhost ~]# yum groupinstall -y "GNOME Desktop"  '//安装 GNOME 桌面环境  如果装了图形界面不需要装了'
    [root@localhost ~]# yum -y install qemu-kvm  '//安装KVM 模块'
    [root@localhost ~]# yum -y install qemu-kvm-tools    '// KVM 调试工具,可不安装'
    [root@localhost ~]# yum -y install virt-install      '//构建虚拟机的命令行工具'
    [root@localhost ~]# yum -y install qemu-img     '//qemu 组件,创建磁盘、 启动虚拟机等'
    [root@localhost ~]# yum -y install bridge-utils   '//网络支持工具'
    [root@localhost ~]# yum -y install libvirt   '//虚拟机管理工具'
    [root@localhost ~]#yum -y install virt-manager   '//图形界面管理虚拟机'
    [root@localhost ~]# reboot	'//重启'
    
  • 注意: 在使用 yum 安装完桌面后,需要进行一些优化

    执行 ln -sf /lib/systemd/system/graphical.target
    /etc/systemd/system/default.target 命 令 , 将 系 统 的 默 认 运 行 target 更 改 为graphical.targe。 重启后系统将进入图形化界面。
    
  • 进行一些检查

    [root@localhost ~]# cat /proc/cpuinfo | grep vmx     '//查看CPU是否支持虚拟化'
    [root@localhost ~]# lsmod | grep kvm   '//查看KVM模块是否安装'
    kvm_intel             183621  0 
    kvm                   586948  1 kvm_intel
    irqbypass              13503  1 kvm
    [root@localhost ~]#  systemctl start libvirtd       '//开启libvirtd服务'
    [root@localhost ~]#  systemctl enable libvirtd   '//开机启动libvirtd服务'
    

2.4:设置KVM网络为桥接

  • 宿主服务器安装完成 KVM, 首先要设定网络, 在 libvirt 中运行 KVM 网络有两种方法:
    NAT 和 Bridge, 默认是 NAT。

    • 用户模式, 即 NAT 方式, 这种方式是默认网络, 数据包由 NAT 方式通过主机的接口进行
      传送, 可以访问外网, 但是无法从外部访问虚拟机网络。
    • 桥接模式, 这种模式允许虚拟机像一台独立的主机一样拥有网络, 外部的机器可以直接
      访问到虚拟机内部, 但需要网卡支持, 一般有线网卡都支持。
      这里以 Bridge(桥接) 为例。
  • 修改ens33网卡

    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO=none	'//原本的修改为none'
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens33"
    UUID="0739b616-18e4-49b1-9a09-f75cc793899b"
    DEVICE="ens33"
    ONBOOT="yes"
    #IPADDR=192.168.233.136
    #NETMASK=255.255.255.0
    #GATEWAY=192.168.233.2
    #DNS1=8.8.8.8
    #DNS2=114.114.114.114
    BRIDGE=br0	'//注释掉原本的IP地址,添加此处'
    
    
  • 新建桥接网卡

    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
    TYPE=Bridge
    OTPROTO=static
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=br0
    DEVICE=br0
    ONBOOT=yes
    IPADDR=192.168.233.136
    NETMASK=255.255.255.0
    GATEWAY=192.168.233.2
    '//添加上述内容即可'
    [root@localhost ~]# systemctl restart network	'//重启网卡'
    
    

2.5:KVM管理

  • 创建KVM存储和镜像文件夹,并上传镜像

    [root@localhost ~]# mkdir -p /data_kvm/iso   '//上传镜像centos 7.6的镜像'
    [root@localhost ~]# mkdir -p /data_kvm/store    '//虚拟机存储'
    [root@localhost ~]# mount.cifs //192.168.11.1/ccc /abc
    Password for root@//192.168.11.1/ccc:  
    [root@localhost ~]# cd /abc/Linux/
    [root@localhost Linux]# cp CentOS-7-x86_64-DVD-1810.iso /data_kvm/iso/
    [root@localhost Linux]# ls /data_kvm/iso/
    CentOS-7-x86_64-DVD-1810.iso
    [root@localhost Linux]# 
    [root@bdqn ~]# virt-manager      '//图形界面敲,打开虚拟系统管理器'
    
  • 创建存储池

    双击打开QEMU/KVM–存储–添加(加号)–填写名称–前进–浏览–其他位置–计算机–data_kvm–store–打开–完成,使用相同方法创建镜像存储池,选择的文件夹是/data_kvm/iso

    mark

    mark

    mark

    mark

    mark

  • 创建存储卷

    mark

2.5.1:开始创建虚拟机
  • 打开虚拟系统管理器–右击QEMU/KVM–选择新建

    mark

  • 本地安装介质–前进

    mark

  • 选择使用ISO映像–浏览选择刚刚创建的镜像的存储池中的镜像–前进

    mark

  • 配置内存和CPU–前进

    mark

  • 管理–选择刚刚创建的存储池中的存储卷–前进

    mark

  • 点击在安装前自定义配置–选择网络(桥接)–完成

    mark

  • 点击引导选项–勾选主机引导时启动虚拟机–开始安装–出现提示选择是

    mark

    mark

实操结束!

发布了126 篇原创文章 · 获赞 62 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/CN_TangZheng/article/details/104349282