必须通过fstab显式指定pri参数控制swap使用顺序,否则系统按内核探测顺序分配优先级导致i/o不均;执行sudo swapon --show查看pri列,未配置时显示-1;需编辑/etc/fstab为各swap设备添加如,pri=30的挂载选项,并重载swapon生效。

当统信UOS系统中存在多个SWAP设备(如/dev/sda2和/swapfile同时启用),系统默认按内核探测顺序分配优先级,导致小容量SWAP被优先耗尽、大容量SWAP闲置,引发I/O不均与响应延迟——必须通过fstab显式指定pri参数控制使用顺序。
确认当前SWAP设备及默认优先级
执行sudo swapon --show,观察输出中的PRI列数值。若未显示或全为-1,说明所有SWAP设备均未配置优先级,此时系统将按设备发现顺序(通常是分区号从小到大)依次使用,【无法预测实际调度行为】。
同时运行cat /etc/fstab | grep swap,检查各SWAP条目是否已含pri参数。若某行末尾无pri=数字字段,则该设备优先级处于未定义状态。
为分区型SWAP设置优先级
方法一:直接编辑fstab文件(推荐)
① 用sudo权限打开fstab:sudo nano /etc/fstab
② 找到目标SWAP分区对应行(FSTYPE列为swap),在原有挂载选项(如sw)后添加,pri=30,确保逗号紧贴前一选项无空格,例如:/dev/sda2 none swap sw,pri=30 0 0
③ 保存退出(Ctrl+O → Enter → Ctrl+X),立即生效需重新加载:sudo swapon --all --noheadings(此命令强制按fstab重载全部SWAP)
方法二:追加配置避免覆盖(适合已有复杂fstab)
执行echo '/dev/sdb1 none swap sw,pri=25 0 0' | sudo tee -a /etc/fstab,注意此处/dev/sdb1需替换为真实设备路径,且【不可与fstab中已存在的同一设备行重复】,否则swapon -a会报错并跳过启用。
为文件型SWAP设置优先级
文件型SWAP(如/swapfile)的优先级必须写入fstab才能生效,临时swapon命令不支持pri参数。
第一步:确认文件已存在且权限正确:ls -l /swapfile应显示-rw-------,否则执行sudo chmod 600 /swapfile
第二步:检查fstab中是否已有/swapfile条目。若有,直接在其挂载选项末尾添加,pri=20;若无,追加完整行:/swapfile none swap sw,pri=20 0 0
第三步:卸载再重载以应用新优先级:sudo swapoff /swapfile && sudo swapon /swapfile。这一步必须执行,否则fstab修改不会影响当前运行状态。
验证优先级是否生效
运行sudo swapon --show=NAME,TYPE,SIZE,PRI,输出中PRI列应显示你设定的数值(如20、30)。若仍为-1,说明对应设备的fstab条目格式有误——常见错误是pri参数拼写成priority、漏掉等号、或挂载选项间多加了空格。
重启系统后再次执行该命令,确认PRI值保持不变。这一步操作起来很简单,但【若重启后PRI恢复为-1,说明fstab语法错误导致该行被内核忽略】。











