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

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

 

 

http://www.xdnf.cn/news/6464.html

相关文章:

  • [6-8] 编码器接口测速 江协科技学习笔记(7个知识点)
  • ES常识8:ES8.X如何实现热词统计
  • 微服务概述
  • 量子隧穿:PROFINET到Ethernet ip的无损耗协议转换方案转
  • 【寻找Linux的奥秘】第五章:认识进程
  • salesforce如何导出所有字段
  • SQL注入---05--跨站注入
  • 解决Mongoose “Cannot overwrite model once compiled“ 错误的完整指南
  • pytest多种断言类型封装为自动化断言规则库
  • 宝元LNC数控数据采集方式、跨平台采集通讯方案介绍
  • 每日算法-250515
  • 联合建模组织学和分子标记用于癌症分类|文献速递-深度学习医疗AI最新文献
  • Kafka快速安装与使用
  • 2900. 最长相邻不相等子序列 I
  • 【鸿蒙开发】性能优化
  • GPT-4o 遇强敌?英伟达 Eagle 2.5 视觉 AI 王者登场
  • Python中常用的数据类型
  • 特种设备事故背后,叉车智能监控系统如何筑牢安全防线
  • DeepSeek 赋能物联网:从连接到智能的跨越之路
  • Python类的力量:第五篇:魔法方法与协议——让类拥有Python的“超能力”
  • 【C语言】初阶数据结构相关习题(二)
  • 判断数据的所有属性是否都是基本类型
  • 鸿蒙OSUniApp制作动态筛选功能的列表组件(鸿蒙系统适配版)#三方框架 #Uniapp
  • 青少年编程与数学 02-019 Rust 编程基础 14课题、并发编程
  • 网络安全EN18031-1,EN18031-2,EN18031-3三个标准对应的测试项目
  • google-Chrome常用插件
  • 费曼技巧实践
  • YOLO v3:目标检测领域的质变性飞跃
  • 如何快速入门-衡石科技分析平台
  • 单片机 | 基于STM32的智能马桶设计