尊敬的飞牛 OS 开发团队:
我正在使用飞牛 OS 虚拟机作为 NAS 服务,运行于 Hyper-V 主机上。在启用 动态内存 的情况下,发现内存气球驱动 (hv_balloon**) 无法正常工作**,导致宿主机内存资源被长期占用,即使虚拟机处于深度闲置状态,也无法释放内存。
这是一个严重的资源管理问题,请求贵团队核查并修复。
一、环境信息
描述 |
详细信息 |
操作系统 (虚拟机) |
飞牛 OS (基于 Debian) |
内核版本 |
Linux fnOS6.12.18−trim#5 SMP PREEMPT_DYNAMIC |
宿主机 (Hyper-V Host) |
Windows 11 (内存32GB) |
Hyper-V 内存设置 |
动态内存 (Minimum1024MB, Maximum8192MB) |
问题核心 |
hv**_balloon**驱动未能响应宿主机回收请求。 |
二、问题现象描述
虚拟机长期处于闲置状态(CPU 负载平均低于 0.05),宿主机内存已严重不足(宿主机空闲 RAM 仅剩约 2 GB),但飞牛 OS 虚拟机分配的内存仍然保持在 8192 MB 的上限,从未回收。
为排除文件缓存的干扰,我已设置定时任务,确保系统在闲置时清理缓存,确认虚拟机内部有大量的内存可供回收:
- 脚本执行结果: 脚本成功将 8 GB 内存中的 约 6.5 GB 标记为 Free。
- 内存状态:free−m 显示
free
内存高达 6500+ MB,buff/cache
仅 500+ MB。
- Hyper-V 状态: 即使在内存 6.5 GB 可回收,且宿主机极度缺内存的情况下,Hyper-V 仍然显示虚拟机占用 8192 MB。
三、关键技术诊断结果
通过命令行诊断,我们排除了驱动未加载或 VMBus 通信失败的问题,故障点明确指向 hv**_balloon 驱动本身**:
- 驱动已加载并注册:dmesg 显示 hv**_balloon** 驱动成功注册到 VMBus,并识别了正确的动态内存设置和协议。
[ 57.553411] hv_vmbus: registering driver hv_balloon
[ 57.554387] hv_balloon: Using Dynamic Memory protocol version 2.0
[ 105.652633] hv_balloon: Max. dynamic memory size: 8192 MB
- 驱动被锁定,无法诊断/重置: 尝试卸载气球驱动失败,表明它被内核认为是“忙碌”的。
rmmod: ERROR: could not remove module hv_balloon: Device or resource busy
- 缺少标准接口: 内核没有创建标准的 hv**_balloon** Sysfs 接口,阻碍了进一步诊断或手动干预。
/sys/module/hv_balloon/parameters/enable
找不到
/sys/class/misc/vmbus/mem_balloon/state
找不到
/dev/vmbus/
目录下 没有 内存气球相关的控制文件。
四、请求与建议
由于 hv**_balloon** 驱动在关键的 回收逻辑 上失效,请求贵团队:
- 核查 6.12.18−trim** 内核中 Microsoft LIS (hv**_balloon**) 驱动的实现**,特别是它接收 Hyper-V 主机 MemoryPressure 指令并执行内存回收的逻辑。
- 确保 hv**_balloon** 驱动能正确响应宿主机内存压力。
感谢您的时间和支持,期待此问题能够尽快得到修复。