Centos7.9安装配置KVM虚拟化

记录在操作系统CentOS7.9配置安装KVM虚拟化。系统采用最小化安装,配置了国内镜像源。

安装环境:

Intel CPU + Windows 10 + Workstation

1. KVM虚拟化安装

1.1 检查硬件是否支持

egrep -c '(vmx|svm)' /proc/cpuinfo

如果输出的数字大于 0,则表示CPU 支持虚拟化。

如果是物理机,需要在bios中开启Inter VT-x或AMD-V/RVI。如果是使用vmware workstation等虚拟化软件,需要打开虚拟机的嵌套虚拟化:

1.2 安装kvm软件包

# 安装KVM虚拟化及管理工具
sudo yum install qemu-kvm libvirt libvirt-client virt-install bridge-utils libguestfs-tools virt-manager virt-viewer

# 安装python API(可选)
sudo yum install libvirt-python

说明:

  • qemu-kvm:即qemu+kvm,kvm负责cpu和内存的虚拟化,而qemu负责IO设备,如网卡和磁盘等的虚拟化。
  • libvirt:KVM管理工具,为不同的虚拟机监视器提供了统一的接口
  • libvirt-client:包含了一组用于与 libvirt 库交互的命令行工具
  • virt-install:用于guestos安装,包括virsh,virt-clone等工具
  • bridge-utils:配置网桥
  • libguestfs-tools:虚拟机镜像管理工具,包括virt-cat、virt-edit、virt-ls、virt-rescue
  • virt-manager:图形界面管理KVM虚拟化
  • virt-viewer:用于虚拟机控制台
  • libvirt-python:libvirt库的Python 绑定,在Python中使用 libvirt 的功能,包括对虚拟机、存储池、网络等资源的管理,以及对虚拟化宿主机的监控和控制

1.3 启用和启动 libvirtd 服务

sudo systemctl enable libvirtd
sudo systemctl start libvirtd
sudo systemctl status libvirtd

# 检查kvm内核模块
$ lsmod | grep kvm
kvm_intel             188740  0
kvm                   637515  1 kvm_intel
irqbypass              13503  1 kvm

1.4 添加用户到 libvirt 组

sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $USER
$ id
uid=1000(test) gid=1000(test) groups=1000(test),10(wheel),36(kvm),992(libvirt)

注意:修改组后,需要重新登录或注销再登录才能使更改生效。

1.5 创建网桥(br0)

如果你打算从本机(Centos7.9)之外访问 KVM 虚拟机,你必须将虚拟机的网卡映射至网桥。virbr0 网桥是 KVM 安装完成后自动创建的,仅做测试用途。

$ brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400ff2f20       yes             virbr0-nic

# 关闭系统防火墙
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld

# 关闭NetworkManager服务
$ sudo systemctl stop NetworkManager
$ sudo systemctl disable NetworkManager

# 桥接设备关联宿主机网卡
$ sudo virsh iface-bridge ens33 br0
Created bridge br0 with attached device ens33
Bridge interface br0 started

$ brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c2937ae01       yes             ens33
virbr0          8000.525400ff2f20       yes             virbr0-nic

2. 创建和管理虚拟机

可以使用virt-manager,命令行,xml文件等方法创建。

本文中使用的宿主机环境为vmware虚拟机,需要在宿主机centos中开启嵌套虚拟化:

# 默认没有开启
$ cat /sys/module/kvm_intel/parameters/nested
N
# 重新加载kvm内核
$ sudo modprobe -r kvm_intel
$ sudo modprobe  kvm_intel nested=1
# 再次查看
$  cat /sys/module/kvm_intel/parameters/nested
Y

2.1 使用virt-manager创建

使用命令行virt-manager启动:

创建虚拟机:

将系统iso上传到宿主机的/var/lib/libvirt/images,光驱文件选择iso:

设置cpu和内存:

设置存储,磁盘放置在default存储池中:

设置网络为br0网桥:

启动控制台开始安装系统。

2.2 使用xml文件创建

创建xml文件:

$ sudo vi testvm.xml
# xml内容如下
<domain type='kvm'>
  <name>testvm</name>
  <memory unit='MiB'>2048</memory>
  <currentMemory unit='MiB'>2048</currentMemory>
  <vcpu placement='static'>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc'>hvm</type>
    <boot dev='cdrom'/>
    <boot dev='hd'/>
  </os>
  <devices>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/testvm.qcow2'/>
      <target dev='vda' bus='virtio'/>
    </disk>

    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/ubuntu-20.04.6-live-server-amd64.iso' index='1'/>
      <backingStore/>
      <target dev='sda' bus='sata'/>
    </disk>
    <interface type='bridge'>
      <source bridge='br0'/>
      <model type='virtio'/>
    </interface>
    <graphics type="vnc" autoport="yes" keymap="en-us" listen="0.0.0.0"/>
  </devices>
</domain>

xml内容的编写可以参考已有的虚拟机,使用virsh dumpxml <domain-id>可以生成虚拟机的xml文件。

创建虚拟磁盘:

# 创建10G大小的qcow2磁盘
$ sudo qemu-img create -f qcow2 /var/lib/libvirt/images/testvm.qcow2 10G
Formatting '/var/lib/libvirt/images/testvm.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off

基于xml创建虚拟机:

$ sudo virsh define testvm.xml
Domain testvm defined from testvm.xml

$ sudo virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     testvm                         shut off

$ sudo virsh start testvm
Domain testvm started

$ sudo virsh list --all
 Id    Name                           State
----------------------------------------------------
 7     testvm                         running


# 查看虚拟机的vnc端口号
$ sudo virsh vncdisplay 7
:1

使用vnc客户端连接宿主机的IP+5901端口:

2.3 使用命令行创建

# 创建2c2g10G的虚拟机,磁盘为稀疏模式,格式为qcow2,总线类型为virtio。同启动一个串行终端打印输出
$ sudo virt-install  --virt-type=kvm --name=ubuntu-test   --vcpus=2  --memory=2048  --cdrom=/var/lib/libvirt/images/ubuntu-20.04.6-live-server-amd64.iso  --disk path=/var/lib/libvirt/images/ubuntu-test.qcow2,size=10,format=qcow2,bus=virtio,sparse --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --force

后续步骤参考xml方式创建虚拟机,通过vnc连接虚拟机进行系统安装。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐