收起左侧

飞牛fnOS 开启KVM内存气球实现内存动态按需分配教程

0
回复
99
查看
[ 复制链接 ]

2

主题

0

回帖

0

牛值

江湖小虾

什么是内存气球?

内存气球(Memory Ballooning)是KVM虚拟化的一项技术,能让虚拟机动态按需使用物理内存

  • 虚拟机空闲的时候,自动把不用的内存释放给宿主飞牛NAS
  • 虚拟机需要更多内存的时候,再动态申请
  • 物理内存不浪费,真正做到大家按需分配

适用场景

  • 飞牛fnOS NAS 上开Windows/Linux虚拟机
  • 虚拟机不是一直占满内存,大部分时间空闲
  • 希望把空闲内存腾出来给NAS用(跑Docker、共享、转码等)

配置步骤

1. 查看现有虚拟机列表

virsh list --all

输出示例:

 Id   Name       State
---------------------------
 -    wtbt71lx   shut off

找到你要配置的虚拟机名称,本文以 wtbt71lx 为例。

2. 检查是否已开启内存气球

virsh dumpxml 你的虚拟机名 | grep -i balloon

如果输出有:

<memballoon model='virtio'>
</memballoon>

说明已经开启,跳过这步。如果没有输出,需要编辑虚拟机配置添加:

virsh edit 你的虚拟机名

<devices> 段落内添加:

<memballoon model='virtio'/>

保存退出(vi按 Esc 然后 :wq)。

3. 设置动态内存范围

语法:

# 设置最大内存(单位:KB,8GB = 8388608 KB)
virsh setmaxmem 你的虚拟机名 最大内存KB --config
# 设置启动/最小内存(单位:KB,1GB = 1048576 KB)
virsh setmem 你的虚拟机名 最小内存KB --config

常用换算: | GB | KB | |----|-----| | 1G | 1048576 | | 2G | 2097152 | | 4G | 4194304 | | 8G | 8388608 | | 16G | 16777216 |

示例:给Windows设置最小1GB,最大8GB

virsh setmaxmem wtbt71lx 8388608 --config
virsh setmem wtbt71lx 1048576 --config

4. 虚拟机内安装驱动

Linux 虚拟机

大部分发行版内核已经自带 virtio_balloon 驱动,验证:

lsmod | grep virtio

看到 virtio_balloon 就可以了,不用额外装。

Windows 虚拟机

需要手动安装virtio驱动:

  1. 在飞牛宿主下载驱动ISO:
    cd /tmp
    wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
    
  2. 挂载ISO到虚拟机,编辑配置添加光盘:
    virsh edit wtbt71lx
    

<devices> 内添加:

<disk type='file' device='cdrom'>
  <driver name='qemu' type='raw'/>
  <source file='/tmp/virtio-win.iso'/>
  <target dev='hdc' bus='ide'/>
  <readonly/>
</disk>
  1. 启动虚拟机,手动安装驱动
    • 打开设备管理器,找到带**感叹号的"PCI内存气球设备"
    • 右键 → 更新驱动 → 浏览到光盘 X:\balloon\w10\amd64 (对应你的系统版本)
    • 下一步自动安装完成,重启生效

不要用完整的 virtio-win-guest-tools.exe 一键安装,容易报错,手动装inf更稳定。

5. 启动虚拟机,验证生效

virsh start 你的虚拟机名

在飞牛宿主查看当前分配情况:

virsh domstats 你的虚拟机名 --balloon

输出示例:

Domain: 'wtbt71lx'
  balloon.current=1349632      # 当前分配:约1.3GB
  balloon.maximum=8388608      # 最大:8GB
  balloon.rss=1470724          # 实际占用物理内存:约1.4GB

再看飞牛宿主可用内存:

free -h

能看到空闲内存比之前(固定分配8GB)多出好几个GB,说明配置生效了!

效果展示

配置前(固定8GB全占满):

Mem:            15Gi       10Gi       2.1Gi     ...

配置后(动态1-8GB,实际只用1.4GB):

Mem:            15Gi       3.4Gi       3.1Gi     ...
                          ^^^^^  只用了3.4G,省出6.5G给NAS用!

总结

参数 作用
setmaxmem 虚拟机最大能用到多少内存(上限)
setmem 虚拟机启动/默认分配多少内存(下限)
内存气球 自动在上下限之间动态调整,按需分配

设置完成后,你的飞牛NAS就能聪明地利用物理内存了,虚拟机和NAS都不耽误!


测试平台:飞牛fnOS 1.x,KVM虚拟化,Windows 10 虚拟机

收藏
送赞 2
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则