KVM

KVM

Ubuntu 上使用 KVM 与 Bridge 创建虚拟机全攻略

摘要: 本文详细介绍在 Ubuntu 系统中如何安装和使用 KVM,并借助 Bridge 网络模式创建虚拟机,使虚拟机与宿主机处于同一网段。同时提供了使用 Cloud-init 镜像快速创建虚拟机以及使用 ISO 文件手动创建虚拟机的具体操作实例,帮助读者快速上手 KVM 虚拟化技术。

一、前言

随着云计算和虚拟化技术的不断发展,KVM(Kernel-based Virtual Machine)作为一种基于 Linux 内核的虚拟化解决方案,因其高性能和低开销而备受青睐。在 Ubuntu 系统上安装和使用 KVM 可以方便地创建和管理虚拟机,满足各种开发、测试和部署需求。本文将详细讲解在 Ubuntu 上安装 KVM,并通过 Bridge 网络模式创建虚拟机的完整过程。

二、安装 KVM

(一)检查硬件支持
在安装 KVM 之前,首先需要确保你的系统硬件支持虚拟化技术。可以使用以下命令检查:
bash
复制
egrep -c '(vmx|svm)' /proc/cpuinfo
如果输出结果大于 0,则表示你的 CPU 支持虚拟化技术。
(二)安装 KVM 相关软件包
在 Ubuntu 系统中,执行以下命令安装 KVM 及其相关工具:

sudo apt-get update sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
我这里是直接使用root用户来管理vkm,创建seed和vms文件夹并设置权限:
mkdir -p /kvm/{seed,vms} chown -R :kvm /kvm

三、配置 Bridge 网络

(一)编辑网络配置文件
创建一个名为 br0 的 Bridge 网络接口,可实现与当前服务器(即vmhost)在相同网段,编辑 /etc/netplan/50-cloud-init.yaml 文件(如果该文件不存在则创建),添加以下内容:
network: version: 2 renderer: networkd ethernets: enp0s3: # 替换为你的实际物理网卡名称 dhcp4: false bridges: br0: dhcp4: true interfaces: [enp0s3] # 替换为你的实际物理网卡名称
(二)应用网络配置
执行以下命令使网络配置生效:
sudo netplan apply
(三)配置网络转发
编辑/etc/sysctl.conf文件,添加或修改以下行:
net.ipv4.ip_forward = 1
然后执行sysctl -p使更改生效。

四、使用 Cloud-init 镜像快速创建虚拟机

(一)获取 Cloud-init 镜像
从官方镜像源或其他可靠渠道下载适合的 Cloud-init 镜像,例如 Ubuntu 的 Cloud-init 镜像。将下载的镜像文件放置在合适的目录,如:
cd /kvm/seed wget https://mirrors.huaweicloud.com/ubuntu-cloud-images/noble/current/noble-server-cloudimg-amd64.img
(二)生成seed.iso
编写meta – data文件
meta – data文件包含虚拟机的基本元数据信息,例如实例 ID、主机名等。以下是一个简单的示例:
instance-id: my-vm-1 local-hostname: my-vm-1
你可以根据需要修改instance – id和local – hostname的值。
编写user – data文件
user – data文件包含用于配置虚拟机的各种设置,例如用户账户、网络配置、软件安装等。以下是一个简单的示例,用于创建一个用户账户并设置密码:
#cloud - config user: ubuntu password: pa123 chpasswd: { expire: False } ssh_pwauth: True
安装genisoimage工具
在 Ubuntu 系统中,你需要安装genisoimage工具来生成 ISO 文件。可以使用以下命令进行安装:
sudo apt - get update sudo apt - get install genisoimage
在包含meta – data和user – data文件的seed目录下,使用以下命令生成seed.iso文件:
genisoimage - output seed.iso - volid cidata -joliet -rock user - data meta - data
这个命令将user – data和meta – data文件打包成一个名为seed.iso的 ISO 文件,-volid cidata选项设置了 ISO 文件的卷标为cidata,这是cloud – init所期望的卷标。
生成seed.iso文件后,你可以在使用cloud – init镜像创建虚拟机时,将这个seed.iso文件挂载到虚拟机中,虚拟机启动时cloud – init会读取其中的配置信息并根据配置来初始化系统。
(三)生成系统盘
使用cp命令把seed中的img文件复制到vms目录下,再使用qemu-img把系统盘设置为需要的大小,系统生成后会自己设置/分区大小。
cp /kvm/seed/noble-server-cloudimg-amd64.img /kvm/vms/ubuntu.img qemu-img resize /kvm/vms/ubuntu.img 50G
(四)创建虚拟机
使用 virt-install 命令创建虚拟机,示例如下:
virt-install --name=ubuntu \ --vcpus=16 \ --memory=16384 \ --disk path=/kvm/vms/ubuntu.img \ --cdrom /kvm/seed/seed.img \ --network bridge=br0,model=virtio \ --graphics none \ --console pty,target_type=serial \ --osinfo detect=on
在上述命令中:
–name 指定虚拟机名称。
–ram 设置虚拟机内存大小。
–vcpus 设定虚拟机的虚拟 CPU 数量。
–disk 定义虚拟机磁盘路径和大小。
–os-type 和 –os-variant 分别指定操作系统类型和版本变体。
–network 指定网络连接方式为 Bridge 模式并连接到 br0 桥接网络。
–graphics none 表示不使用图形界面,–console pty,target_type=serial 用于设置串口控制台以便后续登录管理。
创建完成后,虚拟机将自动启动,并自动通过pty进入到虚拟机的后台,当虚拟机启动完成,可以通过user:ubuntu, password:pa123 登录。如果有dhcp,可通过上翻来找到ip信息,或登录后通过ip -a 来查看。
然后通过 SSH 连接到虚拟机进行后续配置和使用。
五、使用 ISO 文件手动创建虚拟机
(一)准备 ISO 文件
将需要安装的操作系统 ISO 文件放置在合适的目录,如 /kvm/seed/。
(二)创建虚拟机
同样使用 virt-install 命令创建虚拟机,示例如下:
virt-install --name=ubuntu2004 \ --vcpus=2 \ --memory=4096 \ --disk /kvm/vms/ubuntu20.04.qcow2 \ --cdrom /kvm/seed/ubuntu-20.04.6-live-server-amd64.iso \ --network bridge=br0,model=virtio \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole --os-type=linux \ --os-variant=auto
在这个命令中,–graphics vnc,listen=0.0.0.0 表示启用 VNC 图形界面,监听所有 IP 地址,以便通过 VNC 客户端连接到虚拟机进行操作系统安装。
启动虚拟机后,使用 VNC 客户端连接到宿主机的 IP 地址和相应端口(默认端口为 5900),按照常规操作系统安装步骤进行安装。安装完成后,即可像普通虚拟机一样使用。
六、总结
通过本文的介绍,我们详细学习了在 Ubuntu 系统上安装 KVM 并使用 Bridge 网络模式创建虚拟机的方法,包括使用 Cloud-init 镜像快速创建和使用 ISO 文件手动创建两种实例。KVM 提供了强大的虚拟化功能,结合 Bridge 网络能够使虚拟机更好地融入现有网络环境,为开发、测试和部署等工作提供了极大的便利。读者可以根据自己的需求进一步探索 KVM 的更多高级特性和功能,以满足更复杂的虚拟化场景需求。
希望这篇文章对你有所帮助,你可以根据实际情况对内容进行调整和修改,如果还有其他问题,欢迎继续交流。

Comments

No comments yet. Why don’t you start the discussion?

发表回复