银河麒麟系统内存不足时需扩容swap:先用swapon --show和free -h确认类型与容量,再依swap文件、重建或lvm方式扩容,最后配置fstab实现开机自动挂载。

银河麒麟系统运行内存密集型程序时出现卡顿、响应迟缓或提示“内存不足”,说明物理内存已接近耗尽,必须调整SWAP交换分区大小来扩展虚拟内存容量,否则系统可能触发OOM Killer强制终止进程。
先确认当前SWAP类型和状态
打开终端,执行:swapon --show。观察输出中TYPE列的值:若为file,说明你用的是Swap文件(如/usr/swap/swapfile);若为partition,说明你用的是磁盘分区(如/dev/sda2或/dev/mapper/klas-swap)。如果输出为空,说明当前未启用任何SWAP,跳过后续扩容步骤,先创建SWAP。
再执行free -h,记录Swap行的total值,这是扩容前的基准容量。
方法一:扩展现有Swap文件(推荐,安全可逆)
适用于已存在Swap文件但容量不足的场景,无需删除原文件,不改动磁盘结构。
第一步:停用当前Swap文件。例如路径是/usr/swap/swapfile,则运行:sudo swapoff /usr/swap/swapfile。
第二步:用fallocate快速扩展至目标大小(如16GB):sudo fallocate -l 16G /usr/swap/swapfile。这一步比dd快得多,但要求文件系统为ext4或xfs;若报错“Operation not supported”,请改用dd命令(见方法三)。
第三步:严格重设权限:sudo chmod 0600 /usr/swap/swapfile。【权限不对会导致mkswap拒绝格式化,swapon加载失败】
第四步:重新格式化并启用:sudo mkswap /usr/swap/swapfile && sudo swapon /usr/swap/swapfile。
第五步:验证结果:free -h | grep Swap,确认total值已更新为16.0G且state为active。
方法二:替换重建更大Swap文件(彻底重置状态)
当原Swap文件损坏、碎片严重或需统一规范路径时使用。操作后旧文件将被清除。
方法一:停用并删除旧文件:sudo swapoff /usr/swap/swapfile && sudo rm -f /usr/swap/swapfile。
方法二:创建新Swap文件(以24GB为例):sudo dd if=/dev/zero of=/usr/swap/swapfile bs=1M count=24576。bs=1M比默认4K更稳定,避免写入中断。
方法三:设置权限并启用:sudo chmod 0600 /usr/swap/swapfile && sudo mkswap /usr/swap/swapfile && sudo swapon /usr/swap/swapfile。
方法三:LVM逻辑卷扩容(仅限LVM环境)
适用于Swap已部署为LVM逻辑卷的服务器,性能更优,支持在线伸缩(需先停用)。
① 查看当前Swap逻辑卷路径:swapon --show=NAME,TYPE | grep swap,记下类似/dev/mapper/klas-lv_swap的路径。
② 停用该逻辑卷:sudo swapoff /dev/mapper/klas-lv_swap。
③ 扩展LV容量(例如增加4GB):sudo lvextend -L +4G /dev/mapper/klas-lv_swap。
④ 重新格式化并启用:sudo mkswap /dev/mapper/klas-lv_swap && sudo swapon /dev/mapper/klas-lv_swap。
配置开机自动挂载(必须完成,否则重启失效)
编辑fstab:sudo vim /etc/fstab。
在文件末尾新增一行,路径必须与你当前启用的Swap文件或设备完全一致:
/usr/swap/swapfile none swap sw 0 0
保存退出后,执行sudo swapon --verify检查语法,再运行sudo mount -a加载新配置。











