一 安装

1.1 硬件需求

  • 1核心
  • 2G内存
  • 6G硬盘

1.2 cpu虚拟化支持

  • 支持VT-x,查看命令:

    1. [root@localhost ~]# lscpu
    2. 虚拟化: VT-x #intel虚拟技术
  • 检查CPU flflags是否包含vmx/smx,命令如下:

    1. [root@localhost ~]# egrep 'svm|vmx' /proc/cpuinfo
    2. vmx

    1.3 bios开启虚拟化支持

    BIOS Enable Virtualization,每个pc设置不一样,可以看网上相关资料。

1.4 开始安装

  • kvm安装

    1. [root@localhost ~]# yum grouplist
    2. [root@localhost ~]# yum -y groupinstall "虚拟化*"

    如果是英文系统,命令是

    1. [root@localhost ~]# yum grouplist
    2. [root@localhost ~]# yum -y groupinstall "Virtualization*"
  • 验证

验证是否安装成功,验证命令:

  1. [root@localhost ~]#systemctl status libvirtd
  2. [root@localhost ~]#lsmod | grep kvm

如在我的测试机器运行结果如下:
image.png
image.png

二 创建kvm虚拟机

终端命令行输入virt-manager可以打开kvm管理工具可视化操作界面

  1. [root@localhost ~]#virt-mannager

点击创建虚拟机操作图标,可以按提示创建kvm虚拟机,当然你要提前准备好系统iso镜像文件。
image.png

三 kvm虚拟机文件组成

文件包含有磁盘镜像文件和配置文件,关系如下:
虚拟机(guest,vm,domain,instance) = 磁盘文件image(Linux or Windows) + 配置文件(虚拟机名,2
VCPU,512M…) 。

  • kvm虚拟机查看方法,使用virsh命令

    1. [root@localhost ~]# virsh list --all
  • kvm虚拟机配置文件查看方法。

    1. [root@localhost ~]#ls /etc/libvirt/qemu
    2. [root@localhost ~]#virsh edit startgo_01 #编辑
    3. [root@localhost ~]#virsh dumpxml startgo_01 > new_smartgo_01 #备份
  • 设定kvm虚拟机自动运行。

    1. [root@localhost ~]#virsh autostart smtargo_01
    2. [root@localhost ~]#ls /etc/libvirt/qemu/autostart/
    3. [root@localhost ~]#ll /etc/libvirt/qemu/autostart/smartgo_01.xml
  • 网络配置文件。

    1. [root@localhost ~]#ls /etc/libvirt/qemu/networks/
    2. [root@localhost ~]#ls /etc/libvirt/qemu/networks/autostart/
  • 存储池配置文件。

    1. [root@localhost ~]#ls /etc/libvirt/storage/
    2. [root@localhost ~]#ls /etc/libvirt/storage/autostart/
  • 镜像文件。

    1. [root@localhost ~]#ls /var/lib/libvirt/images/

    四 kvm虚拟机配置

    通过virsh命令可以对kvm虚拟机进行进行cpu和内存进行配置。

    4.1 cpu热添加

    使用virsh命令

    1. [root@localhost ~]#virsh list
    2. [root@localhost ~]#virsh dominfo smartgo_01
    3. [root@smartgo_01 ~]#lscpu
    4. [root@localhost ~]#virsh setvcpus smartgo_01 4 --live
    5. [root@localhost ~]#virsh dominfo smartgo_01
    6. [root@smartgo_01 ~]#lscpu

4.2 内存气球

KVM内存气球技术可以对虚拟机使用的内存按需调节,从而提高内存的利用率。 linux默认就支持内存气球。虚拟机需要安装virtio balloon驱动,内核开启CONFIG_VIRTIO_BALLOON。CentOS6/7默认已安装驱动并开启。

  1. [root@localhost ~]#virsh list
  2. [root@localhost ~]#virsh dominfo smartgo_01
  3. [root@smartgo_01 ~]#lscpu
  4. [root@localhost ~]#virsh setvcpus smartgo_01 4 --live
  5. [root@localhost ~]#virsh dominfo smartgo_01
  6. [root@smartgo_01 ~]#lscpu
  7. [root@localhost ~]#virsh dumpxml smartgo_01 | grep memballon -C2
  8. [root@smartgo_01 ~]#lspci
  9. [root@localhost ~]#virsh qemu-monitor-command smartgo_01 --hmp --cmd info balloon #查看
  10. 内存信息
  11. [root@localhost ~]#virsh qemu-monitor-command smartgo_01 --hmp --cmd balloon 1024
  12. [root@localhost ~]#virsh qemu-monitor-command smartgo_01 --hmp --cmd info balloon
  13. [root@smartgo_01 ~]#free -m

五 扩展

5.1 命令

virsh命令可以做kvm虚拟机的增删改查等管理操作,以及对kvm虚拟机cpu、内存、网络等计算资源进行管理操作,具体命令可以在查询到。
https://libvirt.org/manpages/virsh.html#generic-commands

5.2 api接口

virsh是通过命令行模式对libvirt进行接口的调用,如果有需要可以直接调用libvirt的接口,也可以完成同样的功能,如cpu添加可以通过virDomainSetVcpu接口完成
image.png
可以参考libvirt的接口文档。
https://libvirt.org/docs.html

六 延伸

kvm虚拟机广泛应用于云计算基础设施搭建领域,可以通过和openstack搭配使用,实现快速搭建出一套云基础设施,感兴趣的同学可以参考下openstack的官网:
https://www.openstack.org/