Ubuntu22.04安装配置KVM虚拟化

Ubuntu22.04安装配置KVM虚拟化

记录在操作系统Ubuntu 22.04下配置安装KVM虚拟化。

安装环境:

Intel CPU + Windows 10 + VirtualBox

1. KVM虚拟化安装

1.1 检查硬件是否支持

通过命令行检查

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

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

通过工具检查

shell 复制代码
# 安装cpu-checker软件包,运行kvm-ok命令检查
$sudo apt install -y cpu-checker
$ kvm-ok

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

1.2 安装kvm软件包

shell 复制代码
sudo apt update
# 安装KVM虚拟机及管理工具
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils libguestfs-tools virt-viewer virt-manager virtinst
# 安装python API
sudo apt install python3-libvirt

说明:

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

1.3 启用和启动 libvirtd 服务

shell 复制代码
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
sudo systemctl status libvirtd

# 检查kvm模块
$ lsmod  | grep kvm
kvm_intel             372736  5
kvm                  1032192  1 kvm_intel

1.4 添加当前用户到 kvm和libvirt 组(可选)

shell 复制代码
sudo usermod -aG kvm $USER
sudo usermod -aG libvirt $(whoami)
# 验证用户是否加入组中
$ id $(whoami)
uid=1000(test) gid=1000(test) groups=1000(test),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(kvm),110(lxd),121(libvirt)

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

1.5 创建网桥(br0)

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

shell 复制代码
$ brctl show
bridge name     bridge id               STP enabled     interfaces
br-5816d9fe8de2         8000.0242b3178f5d       no
docker0         8000.0242ca1275c9       no
virbr0          8000.525400c67e33       yes

你可以通过如下内容在 /etc/netplan 目录下创建文件 01-netcfg.yaml 来新建网桥:

shell 复制代码
$ sudo vi /etc/netplan/01-netcfg.yaml
network:
  ethernets:
    enp0s3:
      dhcp4: false
      dhcp6: false
  # add configuration for bridge interface
  bridges:
    br0:
      interfaces: [enp0s3]
      dhcp4: false
      addresses: [10.0.62.2/24]
      macaddress: 08:00:27:3f:c0:7b
      routes:
        - to: default
          via: 10.0.62.1
          metric: 100
      nameservers:
        addresses: [223.5.5.5]
      parameters:
        stp: false
      dhcp6: false
  version: 2

将机器网卡enp0s3的地址配置到br0网桥上。根据实际环境替换IP地址,网口名称及mac地址等。

shell 复制代码
# 应用网络配置
$ sudo netplan apply
$ ip add show

2. 创建虚拟机

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

2.1 使用virt-manager创建

使用命令行virt-manager启动:

创建虚拟机:

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

设置系统类型:

设置cpu和内存:

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

设置网络为br0网桥:

安装系统:

2.2 使用xml文件创建

创建xml文件:

shell 复制代码
$ 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/CentOS-7-x86_64-Minimal-2207-02.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文件。

创建虚拟磁盘:

shell 复制代码
# 创建10G大小的qcow2磁盘
$ sudo qemu-img create -f qcow2 /var/lib/libvirt/images/testvm.qcow2 10G
Formatting '/var/lib/libvirt/images/testvm.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10737418240 lazy_refcounts=off refcount_bits=16

$ sudo qemu-img info  /var/lib/libvirt/images/testvm.qcow2
image: /var/lib/libvirt/images/testvm.qcow2
file format: qcow2
virtual size: 10 GiB (10737418240 bytes)
disk size: 196 KiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false

基于xml创建虚拟机:

shell 复制代码
$ virsh define testvm.xml
Domain 'testvm' defined from testvm.xml

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

$ virsh list
 Id   Name     State
------------------------
 8    testvm   running

# 查看虚拟机的vnc端口号
$ virsh vncdisplay 8
:0

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

2.3 使用命令行创建

shell 复制代码
# 创建2c2g10G的虚拟机,磁盘为稀疏模式,格式为qcow2,总线类型为virtio。同启动一个串行终端打印输出
$ virt-install  --virt-type=kvm --name=centos79   --vcpus=2  --memory=2048 --osinfo=centos7 --cdrom=/var/lib/libvirt/images/CentOS-7-x86_64-Minimal-2207-02.iso  --disk path=/var/lib/libvirt/images/centos79.qcow2,size=10,format=qcow2,bus=virtio,sparse --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --force

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

本文由mdnice多平台发布

相关推荐
颜酱13 分钟前
# 02 | 搭骨架:用 LangGraph 编排 12 步工作流(思路)
前端·人工智能·后端
颜酱14 分钟前
02 | 搭骨架:用 LangGraph 编排 12 步工作流
前端·人工智能·后端
嘉伟桑1 小时前
Python调用电价API返回JSON示例:分时电价、现货电价和字段解析
后端
武子康2 小时前
Shippy:确定性工具、会话级 Sandbox 与 Live-Data Eval(4 类收敛 + 7 步实现方案 + 6 类评测指标)
前端·人工智能·后端
我叫黑大帅2 小时前
我为什么单一消费者的场景下,要用 Redis List 当消息队列?
redis·后端·面试
AskHarries2 小时前
文件上传系统
后端
止语Lab3 小时前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活3 小时前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
程序员天天困3 小时前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn3 小时前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端