KVM虚拟化

KVM 全称是Kernel-based Virtual Machine (基于内核的虚拟机)

KVM 针对运行在 x86 硬件上的、驻留在内核中的虚拟化基础结构。KVM 是第一个成为原生 Linux 内核(2.6.20)的一部分的 hypervisor,它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有。
#KVM 是作为内核模块实现的

KVM安装

kvm虚拟化平台软件一般安装在操作系统为 centos
  • 准备一台虚拟机

    - 配置能给多少给多少(因为是在VMware中再创建KVM),比较吃配置
    
    - 我这边给了8H8G后续可能还会加
    
    - 镜像是centos7
    
    - 桌面化安装一台KVM-server
    

KVM001-tuya.png

按照顺序点击,前提是你的CPU支持虚拟化,如果不支持,可以出门左转了

  • 打开虚拟机,安装KVM

    查看cpu是否支持虚拟化
    [root@kvm-server ~]# cat /proc/cpuinfo |grep -E 'vmx|svm'
    有打印信息说明cpu支持虚拟化
    
  • 关闭防火墙和selinux

    systemctl stop firewalld && systemctl disable firewalld
    
    setenforce 0
    sed -i 's/SELINUX=*/SELINUX=disabled/g' /etc/sysconfig/selinux
    
    • 注意:如果虚拟机ping不通,就把防火墙开起来
  • 需求内核(rhel6以上)

    [root@kvm-server ~]# uname -r
    3.10.0-1160.105.1.el7.x86_64
    
  • 如果之前安装kvm了清理环境:卸载kvm

    [root@kvm-server ~]# yum remove `rpm -qa | egrep 'qemu|virt|kvm'` -y
    
    [root@kvm-server ~]# rm -rf /var/lib/libvirt  /etc/libvirt/
    
  • 升级系统(在安装虚拟机出错的情况下,一般是操作系统的版本问题)

    [root@kvm-server ~]# yum upgrade -y  //升级所有包同时也升级软件和系统内核
    
  • 安装软件

    [root@kvm-server ~]# yum install *qemu*  *virt*  librbd1-devel -y
    

    其实下载的是下面的几款软件

    [root@kvm-server ~]# yum install qemu-kvm libvirt virt-manager  librbd1-devel -y 
    后续如果出现 guest os卡住不动的情况,请清理kvm环境后,使用这个命令安装软件包
    
    qemu-kvm	主包
    libvirt		api接口
    virt-manager	图形化界面
    

    在所谓的kvm技术中,应用到的其实有2个东西:qemu+kvm
    kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
    qemu模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。
    因为用到了上面两个东西,所以一般都称之为qemu-kvm。
    libvirt则是调用kvm虚拟化技术的接口用于管理的,用libvirt管理方便,直接用qemu-kvm的接口太繁琐。

    #kvm与xen的区别:
    1.xen是红帽6之前红帽5的虚拟化应用,7出来之后用kvm替代了。

    2.KVM内置于Linux,是内核模块,可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。

  • 启动服务

    centos7:
    [root@kvm-server ~]# systemctl start libvirtd
    
  • 查看kvm模块加载

    [root@kvm-server ~]# lsmod |grep kvm
    kvm_amd              2177304  0 
    kvm                   653976  1 kvm_amd	#因为我是amd的cpu,英特尔的应该是 kvm_intel
    irqbypass              13503  1 kvm
    
    看到有这两行,说明支持kvm模块
    

KVM guestos图形方式部署虚拟机

  • 启动图形化

    [root@kvm-server ~]# virt-manager
    

    会弹出一个页面--------和VMware差不多,一路点就可以了

    注意安装完成一台虚拟机之后,网络模式默认是NAT的,应该也只有这一种网络

  • Guest os安装问题解析

    1. 用图形安装guest os 的时候 创建的小虚拟机黑屏卡住不动

      升级系统
      [root@kvm-server ~]# yum upgrade -y
      
    2. 升级系统后安装guest os的时候还是卡住不动

      需要在安装宿主机的时候安装兼容性程序(有的就没有安装也可以使用,这可能是bug)
      
    3. 如果安装了各种兼容程序之后还是不行

      [root@kvm-server ~]# rpm -qa |grep kvm
      如果打印的结果中有 qemu-kvm-ev 这个包,那么请从清理环境重新来
      

KVM guest os完全文本方式安装虚拟机

1.安装ftp

[root@kvm-server ~]# yum install -y vsftpd

2.创建挂载目录并挂载

[root@kvm-server ~]# mkdir /var/ftp/centos7u4

挂载

因为我之前将iso镜像文件上传到了kvm-server的root目录下

如果不一样,记得带上镜像文件所在的绝对路径

[root@kvm-server ~]# mount CentOS-7-x86_64-DVD-2207-02.iso /var/ftp/centos7u4/
mount: /dev/loop0 写保护,将以只读方式挂载

3.安装

[root@kvm-server ~]# virt-install --connect qemu:///system -n 虚拟机名称 -r 2050 --disk path=/var/lib/libvirt/images/虚拟机名称.img,size=5  --os-type=linux --os-variant=centos7.0 --vcpus=1  --location=ftp://KVM主机IP/centos7u4 -x console=ttyS0 --nographics
  • 虚拟机名称记得更改
  • KVM主机IP就是你这台虚拟机的IP
参数解释:
-n name
-r  以M为单位指定分配给虚拟机的内存大小
--disk 指定作为客户机存储的媒介 size以G为单位的存储
--os-type   系统类型
--os-variant 系统类型版本
--vcpus 指定核数,不能超过物理cpu
--location  客户虚拟机安装源下载,必须为镜像挂载在ftp目录下
-x console=ttyS0 执行终端0
--nographics 无图形,文本模式
  • 注意

    virt-install 
    bash: virt-install: 未找到命令...
    #如果显示这个结果执行下面两个命令
    
    [root@kvm-server ~][root@kvm-server ~]# yum install libguestfs-tools -y
    [root@kvm-server ~]# yum install virt-install.noarch -y
    
  • 注意

    ERROR    验证安装位置出错:打开 URL ftp://10.31.162.89/centos7u4 失败:[Errno 111] 拒绝连接。
    #如果显示这个结果,需要vsftp匿名授权,添加以下内容
    
    [root@kvm-server ~]# vim /etc/vsftpd/vsftpd.conf
    	anonymous_enable=YES 		 	//开启匿名登录
    	anon_upload_enable=YES 			//匿名读
    	anon_mkdir_write_enable=YES 	//匿名写
    第一个可能已经开启
    第二第三个是注释内容,可以取消注释,也可以直接添加
    

4.命令安装

  1. 选择2 use test mode
  2. 将所有的!进行编辑,编辑好的状态是×
  3. 更改时间选2 -- 1 set timezone-- 2 Asia -- 65 Shanghai
  4. 设置磁盘5 -- c to continue -- 2 Use All Space -- c to continue -- 3 LVM -- c to continue
  5. 设置密码8 -- 自己设定一个密码 -- yes
  6. 设置完成-- b
  7. 开始创建,大概20分钟左右
  8. 出现installation complete. press return to quit--按回车退出--下面的操作根据提示点点就可以了

KVM002-tuya.png

  • 设置成这样就大致差不多了, b开始安装就可以了

KVM guest os 模板镜像+配置文件 方式安装虚拟机

1.虚拟机配置文件
[root@kvm-server ~]# ls /etc/libvirt/qemu
networks  vm2.xml
2.储存虚拟机的介质
[root@kvm-server ~]# ls /var/lib/libvirt/images/
vm2.img
==============================
define方式创建好,不会启动
create方式创建好,会启动

# 拷贝模板镜像和配置文件
[root@kvm-server ~]# cp /etc/libvirt/qemu/vm2.xml /etc/libvirt/qemu/vm3.xml(自定义名字)
[root@kvm-server ~]# cp /var/lib/libvirt/images/vm2.img /var/lib/libvirt/images/vm3.img (自定义名字)
# 修改配置文件
[root@kvm-server ~]# vim /etc/libvirt/qemu/vm3.xml
domain type='kvm'>
  <name>vm3</name>  #名字不能一样需要修改
  <uuid>2e3fa6db-ff7f-41c3-bc8f-0428e81ebb57</uuid> #uuid不能一样需要修改
  <memory unit='KiB'>1024000</memory>  #内存,可选
  <currentMemory unit='KiB'>1024000</currentMemory>  #当前内存与上面定义一样
  <vcpu placement='static'>2</vcpu>  #cpu可选
  <os>
...
...
...
    <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/vm3.img'/>   #磁盘镜像需要修改
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>
...
...
...
     </controller>
    <interface type='network'>
      <mac address='52:54:00:82:d6:3c'/>  #mac地址不能一样需要修改,只能修改后三段。
      <source network='default'/>
      <model type='virtio'/>

#必须修改name,uuid,mac地址,磁盘文件名字,其余可选

用vim修改完之后需要define一下配置文件
[root@kvm-server ~]# virsh define /etc/libvirt/qemu/vm3.xml
重启一下:
[root@kvm-server ~]# systemctl restart libvirtd
宿主机开启路由转发:
[root@kvm-server ~]# vim /etc/sysctl.conf 
[root@kvm-server ~]# sysctl -p
net.ipv4.ip_forward = 1
查看虚拟机列表:
[root@kvm-server ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     vm2                            关闭
 -     vm3                            关闭