Ubuntu22.04安装配置KVM虚拟化

lldhsds 2024-08-22 15:07:26 阅读 78

Ubuntu22.04安装配置KVM虚拟化

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

安装环境:

Intel CPU + Windows 10 + VirtualBox

1. KVM虚拟化安装

1.1 检查硬件是否支持

通过命令行检查

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

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

通过工具检查

# 安装cpu-checker软件包,运行kvm-ok命令检查

$sudo apt install -y cpu-checker

$ kvm-ok

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

1.2 安装kvm软件包

<code>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-rescuevirt-viewer:用于虚拟机控制台virt-manager:图形界面管理KVM虚拟化virtinst: 命令行工具,包括virt-install、virt-clone、virt-manager等。python3-libvirt: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 372736 5

kvm 1032192 1 kvm_intel

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

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 安装完成后自动创建的,仅做测试用途。

$ 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 来新建网桥:

$ 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地址等。

# 应用网络配置

$ 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文件:

<code>$ sudo vi testvm.xml

# xml内容如下

<domain type='kvm'>code>

<name>testvm</name>

<memory unit='MiB'>2048</memory>code>

<currentMemory unit='MiB'>2048</currentMemory>code>

<vcpu placement='static'>2</vcpu>code>

<os>

<type arch='x86_64' machine='pc'>hvm</type>code>

<boot dev='cdrom'/>code>

<boot dev='hd'/>code>

</os>

<devices>

<disk type='file' device='disk'>code>

<driver name='qemu' type='qcow2'/>code>

<source file='/var/lib/libvirt/images/testvm.qcow2'/>code>

<target dev='vda' bus='virtio'/>code>

</disk>

<disk type='file' device='cdrom'>code>

<driver name='qemu' type='raw'/>code>

<source file='/var/lib/libvirt/images/CentOS-7-x86_64-Minimal-2207-02.iso' index='1'/>code>

<backingStore/>

<target dev='sda' bus='sata'/>code>

</disk>

<interface type='bridge'>code>

<source bridge='br0'/>code>

<model type='virtio'/>code>

</interface>

<graphics type="vnc" autoport="yes" keymap="en-us" listen="0.0.0.0"/>code>

</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 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创建虚拟机:

$ 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 使用命令行创建

# 创建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连接虚拟机进行系统安装。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。