0

0

Linux QEMU 虚拟机管理实践

冷漠man

冷漠man

发布时间:2026-02-25 00:39:10

|

449人浏览过

|

来源于php中文网

原创

no bootable device 错误主因是启动顺序或设备挂载不当:需用 -boot d/c 指定光驱/硬盘启动,确保 -drive 参数正确且路径为绝对路径;virsh 与裸跑 qemu 互不感知;user-mode 网络下虚拟机无法访问宿主机 localhost,需桥接或端口转发;qcow2 缩容须客户机执行 fstrim 并启用 discard。

linux qemu 虚拟机管理实践

qemu-system-x86_64 启动失败:No bootable device

这是最常卡住新手的第一步,不是镜像坏了,大概率是启动顺序或设备没挂对。qemu-system-x86_64 默认不自动从硬盘找引导,得明确告诉它从哪读。

  • -boot d 强制从光驱(CD-ROM)启动,适合装系统时用 ISO;装完系统后换成 -boot c 才能从硬盘启动
  • 确保 -drive 参数里指定了 format=qcow2raw,且文件真实存在、有读权限;路径别用波浪号 ~qemu 不展开,写绝对路径更稳
  • 如果用了 -cdrom 但没关机就重跑命令,QEMU 可能锁住 ISO 文件,报 “Could not open ‘xxx.iso’” —— 先 killall qemu-system-x86_64 再试

virsh list 显示空,但 ps 看得到 qemu 进程

virsh 和裸跑 qemu-system-x86_64 是两套管理体系。直接敲命令起的虚拟机,libvirt 根本不知道,自然不会出现在 virsh list 里。

  • 想用 virsh 管理,就得用 virsh define 导入 XML 描述,再 virsh start;不能靠手动起进程“骗过” libvirt
  • 检查当前连接的是不是默认 hypervisor:virsh -c qemu:///system listvirsh -c qemu:///session list 看到的结果可能完全不同 —— root 下跑的和普通用户下跑的互不可见
  • 如果只是临时测试,别硬套 libvirt,直接用 qemu-system-x86_64 更轻量;但要做快照、热迁移、网络桥接,绕不开 virsh 配置

虚拟机里无法访问宿主机服务(比如 localhost:3000)

QEMU 默认用 user-mode 网络(-netdev user),它做了 NAT,宿主机对虚拟机是“不可见”的,反过来也一样 —— 虚拟机里的 localhost 指的是它自己,不是宿主机。

citySHOP多用户商城系统
citySHOP多用户商城系统

citySHOP是一款集CMS、网店、商品、分类信息、论坛等为一体的城市多用户商城系统,已完美整合目前流行的Discuz! 6.0论坛,采用最新的5.0版PHP+MYSQL技术。面向对象的数据库连接机制,缓存及80%静态化处理,使它能最大程度减轻服务器负担,为您节约建设成本。多级店铺区分及联盟商户地图标注,实体店与虚拟完美结合。个性化的店铺系统,会员后台一体化管理。后台登陆初始网站密匙:LOVES

下载
  • 简单方案:改用 -netdev bridge,id=net0,br=virbr0 + -device virtio-net-pci,netdev=net0,前提是宿主机已配好网桥(如 virbr0),且你有 root 权限
  • 不想配桥接?用端口转发:-netdev user,id=net0,hostfwd=tcp::2222-:22 把宿主机 2222 映射到虚拟机 22,SSH 就通了;HTTP 服务同理,但注意别冲突
  • 别信“改 /etc/hosts 加宿主机 IP”,user-mode 网络下虚拟机压根 ping 不通宿主机 IP,这是设计限制,不是配置错

qcow2 镜像越用越大,删文件也不缩容

qcow2 文件大小增长是正常的,但删除客户机里的文件并不会自动释放空间 —— 客户机操作系统只标记块为“空闲”,没通知 QEMU 底层丢弃这些块。

  • 客户机里要先运行 fstrim -v /(ext4/xfs 支持),触发 TRIM 命令;需确认虚拟机磁盘启用了 discard:-drive file=disk.qcow2,discard=unmap,...
  • 宿主机上手动收缩:qemu-img convert -O qcow2 disk.qcow2 disk-new.qcow2 && mv disk-new.qcow2 disk.qcow2,但会中断运行,慎用于生产环境
  • 长期建议:创建镜像时加 -o lazy_refcounts=on,cluster_size=2M,提升大镜像性能;别用 copy-on-write 链太深,超过 5 层易出元数据错误

真正麻烦的不是怎么缩,而是很多人根本没意识到客户机里要跑 fstrim —— 它不像物理 SSD 那样开机自动做,得加进定时任务里。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
typedef和define区别
typedef和define区别

typedef和define区别在类型检查、作用范围、可读性、错误处理和内存占用等。本专题为大家提供typedef和define相关的文章、下载、课程内容,供大家免费下载体验。

117

2023.09.26

define的用法
define的用法

define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。更多关于define的用法的内容,大家可以阅读本专题下的文章。

359

2023.10.11

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

866

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

452

2024.06.27

session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

330

2023.10.17

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

773

2023.10.18

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

97

2025.08.19

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1934

2024.04.01

Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

1

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.7万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号