当前位置: 首页 > news >正文

AI大模型学习二十四、实践QEMU-KVM 虚拟化:ubuntu server 25.04 下云镜像创建Ubuntu 虚拟机

一、说明

虽然说大部分的场合,docker都能解决问题,但是有些大型的软件安装时如果修改配置会很麻烦,比方说前面遇到的code-server和dify 默认都是80和443端口要使用,安装在一起就会端口冲突,通过该端口来解决问题,理论上都行,但是实际我在应用当中发现出现了一些意想不到的问题,也许别人没有遇到过,但是我确实遇到了,没办法,只能把两个安装在各自独立的系统中,这样就完全隔离。都可以使用原版的软件,另外保持服务器宿主机本身的完全干净,毕竟我们平时安装的东西太多,服务器又没必要也不适合使用图形界面,所以命令行安装就有必要了,这里只是做个记录,网上教程很多

在 Ubuntu Server 25.04 命令行中安装 Ubuntu 虚拟机,可以使用 KVM/QEMU 虚拟化工具 

二、 安装

1、确认系统支持虚拟化

egrep -c '(vmx|svm)' /proc/cpuinfo# 输出值应大于 0。如果为 0,需在 BIOS 中启用虚拟化支持。

 2、安装 KVM/QEMU 及相关工具

sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst

3、 云镜像下载以及安装目录和权限确定

# 目录和权限设置后面用的到
mkdir -p ~/vm-data
sudo chown -R $USER:libvirt-qemu ~/vm-data
sudo chmod 775 ~/vm-data
sudo chown -R $USER:libvirt-qemu /home/mucuna
sudo chmod 775 /home/mucuna# 下载云镜像
wget -O /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img https://cloud-images.ubuntu.com/releases/plucky/release/ubuntu-25.04-server-cloudimg-amd64.img

4、将用户加入 libvirt 组

sudo usermod -aG libvirt $USER
newgrp libvirt  # 立即生效或重新登录sudo systemctl enable --now libvirtd

5、检测KVM情况

在 Ubuntu Server 中遇到 "WARNING KVM acceleration not available, using 'qemu'" 表示虚拟机无法使用硬件加速(KVM),将退回到纯软件模拟(QEMU),导致性能显著下降

1、检查 CPU 是否支持 Intel VT-x 或 AMD-V 技术:

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

  • 输出大于 0:CPU 支持虚拟化,但可能未启用。

  • 输出为 0:CPU 不支持或 BIOS 中禁用虚拟化

2、检查 KVM 内核模块是否加载

lsmod | grep kvm

  • 正常输出:应显示 kvm_intel 或 kvm_amd

3、验证 /dev/kvm 权限

ls -l /dev/kvm

权限问题:若输出显示组为 kvm,将用户加入 kvm 组:

sudo usermod -aG kvm $USER
newgrp kvm  # 立即生效或重新登录


mucuna@x58:~/vm-data$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
 

6、确保 osinfo-db 支持 Ubuntu 25.04

sudo apt install libosinfo-bin# 查看支持的 Ubuntu 版本
osinfo-query os | grep ubuntu# 更新数据库(Ubuntu 中通常通过 apt)
sudo apt update
sudo apt install osinfo-db

7、编辑元数据信息

#配置用户与SSH,并设置主机名。
cat > user-data << EOF
#cloud-config
user: root
password: 123456
chpasswd: { expire: False }
ssh_pwauth: True
package_update: true
packages:- qemu-guest-agent
EOFcat > meta-data << EOF
instance-id: dify-vm
local-hostname: dify
EOF

8、生成cloud-init ISO

sudo apt install genisoimagesudo genisoimage -output /home/mucuna/vm-data/ubuntu-cloud-vm.iso -volid cidata -joliet -rock user-data meta-data

9、配置网络为桥接模式

network:version: 2ethernets:enp2s0:dhcp4: nodhcp6: nobridges:br0:interfaces: [enp2s0]dhcp4: nodhcp4: noaddresses:- "192.168.1.111/24"nameservers:addresses:- 8.8.8.8- 8.8.4.4search: []routes:- to: "default"via: "192.168.1.1"

 应用配置,立马生效

sudo netplan apply
sudo netplan generate
sudo netplan --debug apply

查看命令

#不是最小安装已经安装过了
sudo apt install bridge-utils -ybrctl show

9、创建虚拟机

利用 virt-install 命令的 --import 选项,您可以直接从现有的云镜像文件创建虚拟机,而无需进行操作系统安装过程

sudo virt-install \
--name dify-vm \
--vcpus 4 \
--memory 8192 \
--disk path=/home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img \
--disk path=/home/mucuna/vm-data/ubuntu-cloud-vm.iso \
--import \
--os-variant ubuntu25.04 \
--network bridge=br0,model=virtio \
--graphics none \
--console pty,target_type=serial

参数说明:

  • --nographics: 禁用图形输出,强制使用控制台。

  • --extra-args: 向安装内核传递串口控制台参数。

  • --location: 指定ISO路径,自动检测内核和initrd

  • --name: 虚拟机的名称

  • --ram: 分配给虚拟机的内存,单位是MB,这里是2048MB(2GB)
  • --vcpus: 分配的虚拟CPU数量
  • --disk: 指定虚拟机的磁盘路径和大小 ,path=/var/lib/libvirt/images/myvm.img是磁盘文件的路径,size=20是磁盘大小(GB)
  • --os-variant: 操作系统的版本,用于 优化虚拟机配置
  • --network: 指定使用libvirt的默认NAT网络(network=default
  • 115200n8: (也可以不写) 串行端口的波特率设置,115200 是波特率,n 表示无奇偶校验位,8 表示每个数据字节有 8 位
  • console=ttyS0: 将控制台输出重定向到第一个串行端口(ttyS0) 

安装完后直接按回车,进入虚拟机登录界面 ,就是在宿主机的命令行界面

我们在元数据信息中设置用户为root 密码为123456用这个登录,直接就进去了

 

这个时候已经进了虚拟机界面了 ,ping一下百度,可以连接外网

直接用shutdown now命令就可以关闭了

然后在用 virsh start dify-vm 就可以启动虚拟机

用virsh console dify-vm可以进入上面的界面登录

10、配置静态ip

network:version: 2ethernets:enp1s0:dhcp4: nodhcp6: noaddresses:- "192.168.1.111/24"nameservers:addresses:- 8.8.8.8- 8.8.4.4search: []routes:- to: "default"via: "192.168.1.1"

11、管理虚拟机命令

virsh list --all           # 查看所有虚拟机
virsh start dify-vm     # 启动虚拟机
virsh shutdown dify-vm   # 正常关闭
virsh destroy dify-vm    # 强制停止
virsh edit dify-vm       # 编辑虚拟机配置
virsh undefine dify-vm   # 删除虚拟机(需先destroy)
virsh console dify-vm     # 进入命令行

 三、远程ssh登录

登录时出现错误,修改配置

nano /etc/ssh/sshd_config

找到 #Authentication,将 PermitRootLogin 参数修改为 yes

找到 #Authentication,将 PasswordAuthentication 参数修改为 yes

 由于这个是安装的云镜像,

/etc/ssh/sshd_config.d目录下的50-cloud-init.conf  , 60-cloudimg-settings.conf两个文件中也有PasswordAuthentication 参数,也要改

修改后 sudo systemctl restart sshd

登录成功

 四、设置虚拟机开机自启动

我们有需求,就是在宿主机启动时,同步启动虚拟机,很简单

直接执行

sudo virsh autostart dify-vm

 宿主机开机后,发现虚拟机已经运行了,说明自启动成功

五、硬盘不够,咋办

靠,这云镜像怎么搞的,这么点?

sudo virsh domblklist dify-vm

 通过执行虚拟磁盘来检索有关虚拟磁盘的更多详细信息,例如其当前大小。qemu-img info命令以 VM 磁盘的完整路径为下:

#vda      /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img
#vdb      /home/mucuna/vm-data/ubuntu-cloud-vm.iso
sudo qemu-img info /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img

才3.5g啊 

检查快照,有快照不能调节大小,下面显示没有

sudo virsh snapshot-list dify-vm

调整KVM虚拟磁盘的大小

调整为增加80g
sudo qemu-img resize /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img +80G
sudo qemu-img info /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img

 

 

相关文章:

  • Stack overflow
  • 从单体架构到微服务:架构演进之路
  • React19源码系列之 Diff算法
  • Kafka消息路由分区机制深度解析:架构设计与实现原理
  • SQL练习(3/81)
  • Kafka 中过多的 topic 导致整体上性能变慢的原因
  • HTML 表格与div深度解析区别及常见误区
  • 【C语言】初阶数据结构相关习题(二)
  • MySQL索引优化面试高频考点解析(附实战场景)
  • 火山RTC 8 SDK集成进项目中
  • 阿克曼-幻宇机器人系列教程3- 机器人交互实践(Message)
  • yarn任务筛选spark任务,判断内存/CPU使用超过限制任务
  • 语音识别——语音转文字
  • C++ 在 Windows 和 Linux 平台上的开发差异及常见问题
  • Java详解RabbitMQ工作模式之发布订阅模式
  • 拉取sset docker镜像
  • Dify与n8n全面对比指南:AI应用开发与工作流自动化平台选择【2025最新】
  • 冲刺软考:做减法,走出备考迷茫,高效提分!
  • 乘法口诀练习神器
  • 【杂谈】-AI 重塑体育营销:从内容管理到创意释放的全面变革
  • 《求是》杂志发表习近平总书记重要文章《锲而不舍落实中央八项规定精神,以优良党风引领社风民风》
  • 马上评|安排见义勇为学生补考,善意与善意的双向奔赴
  • 美国调整对华加征关税
  • 北京13日冰雹过后,已受理各险种报案近3万件
  • 国台办:台湾自古属于中国,历史经纬清晰,法理事实清楚
  • 媒体:“西北大学副校长范代娣成陕西首富”系乌龙,但她的人生如同开挂