麒麟KYLINOS系统可通过命令行创建swap文件、配置fstab实现开机自启、调整swap大小、多维度验证及禁用ZRAM切换传统swap来解决内存不足问题。
如果您在麒麟kylinos系统中运行内存密集型任务时遇到响应迟缓、程序崩溃或提示“内存不足”,则可能是物理内存已满,系统未能有效利用虚拟内存进行补充。以下是针对麒麟kylinos操作系统设置虚拟内存的多种可行方法:
一、通过命令行创建并启用swap文件
该方法适用于所有麒麟KYLINOS版本(含V10 SP1、V11),不依赖图形界面,稳定性高,可精确控制swap大小与位置。
1、以root权限打开终端,执行free -h查看当前虚拟内存状态,确认未启用swap或swap容量不足。
2、创建专用swap目录:mkdir -p /usr/swap。
3、生成swap文件(示例创建64GB swap):dd if=/dev/zero of=/usr/swap/swapfile bs=1M count=65536。
4、设置文件权限为仅root可读写:chmod 0600 /usr/swap/swapfile。
5、将文件格式化为swap类型:mkswap /usr/swap/swapfile。
6、立即启用该swap文件:swapon /usr/swap/swapfile。
7、执行free -h验证swap已出现在输出列表中且Total值已更新。
二、配置swap开机自动挂载
为确保系统重启后swap持续生效,需将swap文件路径写入/etc/fstab,使其成为持久化配置项。
1、使用vim编辑fstab文件:vim /etc/fstab。
2、在文件末尾新增一行:/usr/swap/swapfile swap swap defaults 0 0。
3、保存并退出编辑器(按Esc,输入:wq回车)。
4、执行mount -a测试fstab语法是否正确,无报错即表示配置合法。
5、重启系统后再次运行free -h,确认swap仍处于active状态。
三、调整现有swap大小(扩容或缩容)
当业务负载变化导致原swap容量不再适配时,可通过停用-重设-重启用流程安全调整swap文件尺寸,无需重新分区或重装系统。
1、先关闭当前swap:swapoff /usr/swap/swapfile。
2、删除旧swap文件:rm -f /usr/swap/swapfile。
3、按新需求重新创建swap文件,例如扩容至128GB:dd if=/dev/zero of=/usr/swap/swapfile bs=1M count=131072。
4、重复执行权限设置、mkswap和swapon步骤(对应步骤四至六)。
5、更新/etc/fstab中可能存在的旧size注释(非必需,但建议同步维护)。
四、验证swap配置有效性
完成上述任一方法后,必须通过多维度命令交叉验证,确保swap不仅显示存在,且能被内核正常调度使用。
1、运行free -h,确认Swap行的total、used、free值均非零且逻辑合理。
2、执行swapon --show,检查输出中包含/usr/swap/swapfile及其type为file、size与预期一致。
3、使用cat /proc/swaps查看swap设备详细信息,确认priority值大于-1且filename路径正确。
4、触发一次轻量级内存压力测试:stress-ng --vm 2 --vm-bytes 2G --timeout 30s(如未安装,先apt install stress-ng),观察free输出中used swap是否动态增长。
五、禁用默认ZRAM并切换至传统swap(可选)
部分麒麟KYLINOS发行版默认启用ZRAM作为压缩内存交换机制,其性能特性与传统disk-based swap不同;若应用对延迟敏感或需大容量稳定交换空间,建议显式禁用ZRAM并启用磁盘swap。
1、停止ZRAM服务:systemctl stop systemd-zram-generator。
2、屏蔽ZRAM自启:systemctl mask systemd-zram-generator。
3、检查ZRAM设备是否已卸载:ls /sys/block/zram*应返回空结果。
4、确认/etc/default/grub中无zram相关内核参数(如zram.enabled=1),如有则删除并运行update-grub。
5、完成前述swap文件配置后,重启系统,确保free -h中仅显示disk swap,无zram条目。











