惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
V
Visual Studio Blog
罗磊的独立博客
Last Week in AI
Last Week in AI
爱范儿
爱范儿
The Cloudflare Blog
有赞技术团队
有赞技术团队
博客园 - 三生石上(FineUI控件)
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
IT之家
IT之家
博客园 - 【当耐特】
雷峰网
雷峰网
博客园_首页
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
量子位
V
V2EX

点点点 - 技术分享 | 摄影生活 | 日常随笔 | 博客Blog

Unraid 7.3.2 ZFS 池创建失败排查实录:mountpoint Proxmox VE 9.2 正式发布:引入动态负载均衡器与全新 SDN 功能 解决通达OA数据报表显示数据空白,原因权限分配不足 解决Halo2.x版本升级后启动卡死,MySQL 5.7版本兼容性及索引报错解决方案 某国企IT岗面试总结与陪跑感悟,坑里早就有萝卜了 如何为智谱GLM平台禁用Claude Code的1M上下文功能 2025最全电脑清灰攻略:从工具准备到安全操作,手把手教你零风险除尘 一招解决共享打印机连接错误0x000006be 0x00000709教程 CPU一高就心慌?聊聊我们该死的“电脑性能焦虑”,以及如何治好它 MT-Photos 对决 飞牛相册:谁才是你NAS里的最佳照片管家? 告别混乱!我的“数字文件整理术”:照片、文档一次搞定,强迫症都说爽 为什么说折腾NAS的尽头是成品NAS?多数人的终极选择! FRP内网穿透客户端配置:Linux FRPC服务创建与自启设置 AI旅游攻略避坑指南:别再被“滤镜”骗了,用这个公式定制你的真实行程 小红书的内容生态,是如何一步步引发我们的“群体性焦虑”? 搞不定女人后,资本又开始“PUA”男人了? 2025东莞同沙水库街拍:镜头下的寻常幸福与绝美景色 真诚的人,能遇到那个让你心安的灵魂伴侣或朋友 雨后镜头下的船只与塔楼 成功加入十年之约:正式成为成员 关于域名更换通知 久雨初晴,江边拾光 奔着结婚去,不丢人:写给当代年轻人的婚姻“导航手册” 当沟通撞上回音壁:彩礼、房子与看不见的深渊 致五年后的易同学,请替我拥抱33岁的你 甜蜜与美味晚餐,金鳌洲塔下的夜色如画
解决Unraid虚拟机libvirt丢失问题
点点点 · 2026-07-27 · via 点点点 - 技术分享 | 摄影生活 | 日常随笔 | 博客Blog

Unraid 7.x,ZFS 池,重启之后虚拟机页面打不开,libvirt 服务起不来。我翻遍了官方文档、论坛、Reddit,也问了好几个 AI,给出的答案要么是"检查磁盘阵列",要么是"重新分配 cache 盘",要么就是"重装 libvirt 插件"。没有一个是真正对症的。折腾了大半天,最后发现解决方案简单得离谱。

原因

硬盘重建的过程中,/mnt/user/system/libvirt/libvirt.img 被删了。这个文件是 libvirt 的核心存储,里面存着所有虚拟机的定义——CPU、内存、磁盘路径、NVRAM,全在里面。文件没了,libvirtd 起不来,VM 页面自然就是废的。重建硬盘的时候 Unraid 会重新格式化目标盘,如果你的 libvirt.img 恰好落在那块盘上(或者重建过程中路径发生了变动),这个文件就没了。官方文档里对这种情况没有任何说明,论坛里也几乎没人提过。

解决方法

打开 Unraid WebUI 右上角的终端(或者 SSH 进去),按顺序执行:

# 在 ZFS 池上创建目录结构
# system/libvirt 放 libvirt 镜像文件
# isos 放系统安装镜像
# domains 放虚拟机磁盘文件
mkdir -p /mnt/zfs/system/libvirt
mkdir -p /mnt/zfs/isos
mkdir -p /mnt/zfs/domains

# 创建 10G 稀疏文件作为 libvirt 存储
# 稀疏文件:ls 看是 10G,du 看是 0
# 只有实际写入数据时才占磁盘空间,不用担心浪费
truncate -s 10G /mnt/zfs/system/libvirt/libvirt.img
ls -lh /mnt/zfs/system/libvirt/libvirt.img
du -h /mnt/zfs/system/libvirt/libvirt.img

truncate 建的是稀疏文件,看着 10G,实际占用 0,写入多少占多少,不用担心空间。

然后去 Settings → VM Manager,把 Libvirt 存储位置 改成:/mnt/zfs/system/libvirt/libvirt.img
顺手把 ISO 路径和虚拟机存储路径也改了:

  • 虚拟机存储:/mnt/zfs/domains/

重启系统,完事。

验证

重启后 SSH 进去跑一下:

mount | grep libvirt
pgrep -a libvirtd
virsh list --all

三条都有正常输出就行了。virsh list --all 显示空列表是正常的,因为这是新建的 libvirt.img,之前的 VM 定义在旧文件里。磁盘文件(qcow2)还在的话,重新建个 VM 指过去就行,数据不丢。

为什么网上找不到这个答案

搜了官方文档、论坛、Reddit,也问了好几个 AI,全是在绕圈子。后来想明白了,这个问题之所以没人写,是因为它同时踩了好几个"搜索盲区":

第一,Unraid 官方文档压根没覆盖这个场景。 官方 VM 文档里写得很清楚,推荐把虚拟机放在 cache pool 的 SSD 上,默认路径是 /mnt/user/system/libvirt/libvirt.img。文档假设你的存储架构是"array + cache pool",对于"纯 ZFS 池用户"的 VM 配置,基本是空白。你按文档搜,搜到的全是 cache pool 相关的内容,跟你的情况对不上。

第二,报错信息完全误导人。 libvirt.img 被删之后,Unraid 不会告诉你"文件不存在"。VM 页面就是转圈,日志里写的是 libvirtd failed to start 之类的泛泛错误。你拿这个错误去搜,搜出来的全是"检查权限""重启服务""重装插件"——全是治标不治本的废话。真正的问题是文件没了,但没有任何一条日志明确告诉你这一点。

第三,"硬盘重建会删 libvirt.img"这件事,官方没提过。 重建硬盘的时候 Unraid 会格式化目标盘,如果 libvirt.img 恰好在那块盘上,它就没了。但官方文档里关于重建操作的说明,一个字都没提到对 /mnt/user/system/ 下文件的影响。你不知道文件会被删,自然也不会往这个方向去搜。

第四,解决方案太简单了,简单到没人觉得值得写。 就是建个目录、truncate 一个文件、改个路径。没有复杂的排查流程,没有高深的原理。大部分人遇到这个问题,要么折腾半天放弃了,要么在论坛里问了一句没人回,就没了。没有人会专门写一篇帖子说"我建了个文件就好了"。

第五,这个用户群体本身就小。 用 ZFS 池的 Unraid 用户是少数,在 ZFS 池上跑 VM 的更少,跑 VM 的同时还经历了硬盘重建的更是极少数。这几个条件叠在一起,能遇到这个问题的人可能全网就几十个。

所以如果你也是重建完硬盘之后 VM 没了,别搜了,直接按上面的来。