KVM 的使用

基于内核的虚拟机(Kernel-based Virtual Machine,缩写为 KVM)是一种用于 Linux 内核中的虚拟化基础设施,可将 Linux 内核转化为虚拟机监视器。

[TOC]

内部结构^1^

KVM 提供抽象的设备,但不模拟处理器。它开放了 /dev/kvm 接口,供使用者模式的主机使用:

  • 设置客户虚拟机的地址空间。宿主机也需要可用于引导进操作系统的固件镜像(通常是模拟 PC 时的自定义 BIOS)。

  • 为客户机模拟 I/O。

  • 将客户机的视频显示映射回系统主机上。

在 Linux 上,QEMU 版本 0.10.0 及更新版就是一个用户层主机,QEMU 使用 KVM 以近乎原生的速度虚拟化客户机,若无 KVM 的话则将仅使用软件模拟。

KVM 内部使用 SeaBIOS 作为 16 位 x86 BIOS 的开源模拟。

KVM环境

安装 KVM^4^

  • 查看系统是否可以实现虚拟化

    如果匹配到这两项中的其中一项,则 CPU 支持虚拟化。

    vmx

  • 安装 KVM 软件和相关软件组件(基于 CentOS 7)

    等待软件安装成功后,输入

    如果显示下图,则安装成功

    install_succeed

  • 网络配置

    KVM 默认会开启一个虚拟的网络接口 virbr0,它创建一个 NAT 网络提供虚拟机接入网络,默认的网络为 192.168.122.0/24。但这个取决与你的系统环境,也可以创建一个桥接网络使虚拟机接入网络。

  • 配置 VNC

    当虚拟机需要使用 VNC 时,可以通过下列方式

    1. 默认的 VNC 将会监听 127.0.0.1,这样只有本地的主机可以通过 VNC 接入。如果需要通过其他主机接入 VNC,则需要配置 ‘/etc/libvirt/qemu.conf’ 中的 vnc_listen = '0.0.0.0',将它的注释去掉,并重启 ‘libvirtd’。

    2. 设置 SSH 转发(适用于 NAT 网络)

    3. 防火墙开放端口

  • 创建虚拟机

添加桥接网络(CentOS7)^8^

  • 新增 /etc/sysconfig/network-scripts/ifcfg-br0

  • 修改 /etc/sysconfig/network-scripts/ifcfg-enp1s0(物理网卡)

  • 重启 network.service 服务

  • 查看桥接接口

    brigeif

  • 查看 IP 信息

    ipaddr

  • virt-install 内使用桥接网络

常用操作命令^9^

作用

命令

列出所有虚拟机

virsh list --all

显示虚拟机信息

virsh dominfo virtual_name

显示虚拟机内存和cpu的使用情况

virt-top

显示虚拟机分区信息

virt-df virtual_name

关闭虚拟机(shutodwn)

virsh shutdown virtual_name

启动虚拟机

virsh start virtual_name

设置虚拟机跟随系统自启

virsh autostart virtual_name

关闭虚拟及自启

virsh autostart --disable virtual_name

删除虚拟机

virsh undefine virtual_name

通过控制窗口登录虚拟机

virsh console virtual_name

编辑虚拟机配置

virsh edit virtual_name

  1. 删除虚拟机

  2. 桥接网络(bridge)管理

  3. 删除网桥步骤

重点

安装虚拟机后请检查 br0 绑定的虚拟接口,确认虚拟接口是否已经绑定了桥接接口。

绑定

如果显示为上一条,一定要将新建虚拟机加上。

Last updated

Was this helpful?