温馨提示×

Ubuntu Swapper在Hyper-V中如何使用

小樊
42
2026-01-08 10:37:02
栏目: 智能运维

在 Hyper-V 中配置 Ubuntu 的 Swapper(交换空间)

一 概念与准备

  • Swapper 在 Linux 中对应的是交换空间(swap),用于在物理内存不足时将部分数据换出到磁盘,保障系统稳定。常见形态有交换文件(swapfile)交换分区(swap partition),二者在 Hyper-V 虚拟机中的使用方式与普通 Linux 一致。
  • 在 Hyper-V 上运行 Ubuntu 虚拟机,可通过虚拟交换机连接网络、分配内存等,这些与交换空间配置互不冲突。若尚未创建虚拟机,可先完成 Hyper-V 的基础设置(虚拟交换机、内存分配、安装 Ubuntu)。

二 快速启用交换文件(推荐) 以下步骤在 Ubuntu 来宾系统内执行,适用于大多数桌面与服务器场景:

  1. 查看当前交换状态
  • 查看是否已启用交换:sudo swapon --show
  • 查看内存与交换概览:free -h
  1. 创建交换文件(示例为 4GB
  • 建议先确保根分区有充足空间:df -h /
  • 创建文件:sudo fallocate -l 4G /swapfile
    • 若 fallocate 失败,可改用:sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
  1. 设置权限并格式化为交换
  • 仅 root 可读写:sudo chmod 600 /swapfile
  • 格式化为交换:sudo mkswap /swapfile
  1. 启用交换
  • 立即启用:sudo swapon /swapfile
  1. 持久化(开机自动启用)
  • 编辑 /etc/fstab,添加:/swapfile none swap sw 0 0
  1. 验证
  • 再次查看:free -h 与 swapon --show,应能看到新交换文件与容量。

三 调整大小与删除

  • 调整大小(示例从 4GB 调整到 8GB
    1. 先禁用:sudo swapoff /swapfile
    2. 调整文件大小:sudo fallocate -l 8G /swapfile(或用 dd 重建)
    3. 重新格式化:sudo mkswap /swapfile
    4. 重新启用:sudo swapon /swapfile
    5. 验证:free -h
  • 删除交换文件
    1. 禁用:sudo swapoff /swapfile
    2. 删除文件:sudo rm /swapfile
    3. 从 /etc/fstab 移除对应行并保存。

四 性能优化与监控

  • 调整 swappiness(控制内核使用交换的倾向,范围 0–100,默认 60
    • 临时生效:sudo sysctl vm.swappiness=10
    • 永久生效:在 /etc/sysctl.conf 中添加 vm.swappiness=10,然后执行 sudo sysctl -p
  • 启用 Zswap(在内存中压缩交换页,减少磁盘写入)
    • 编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX_DEFAULT 中加入:zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20
    • 更新 GRUB:sudo update-grub 并重启
  • 监控与排障
    • 实时查看内存与交换:free -h
    • 观察交换活跃度:vmstat 1(关注 si/so 列,频繁非零表示大量换入换出,可能存在性能瓶颈)。

五 使用交换分区与 Hyper-V 场景建议

  • 使用交换分区(适合对性能更敏感的场景)
    1. 使用分区工具(如 fdisk/parted)创建分区,并将类型设为 Linux swap(82)
    2. 格式化:sudo mkswap /dev/sdXN
    3. 启用:sudo swapon /dev/sdXN
    4. 持久化:在 /etc/fstab 添加 /dev/sdXN none swap sw 0 0
  • Hyper-V 场景建议
    • 优先使用交换文件(灵活、易调整大小),无需修改分区表,便于在虚拟机中维护。
    • 若宿主机为 SSD/NVMe,交换性能更佳;尽量避免将交换放在性能较差的存储上。
    • 内存充足(如 ≥16GB)且负载稳定时,可适度降低交换大小,甚至考虑禁用;但在内存紧张或可能出现 OOM 的场景,建议保留一定交换空间以保障稳定性。

0