服务器版本为CentOS7
一、检查现有 swap 空间
sudo swapon --show
如果系统中没有 swap 空间或者现有的 swap 空间不足,可以继续后续步骤来创建 swap 空间。
二、创建 swap 文件(推荐 2GB 作为示例)
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
其中,if=/dev/zero
表示从/dev/zero
设备读取数据,该设备会提供连续的零字节流;of=/swapfile
表示输出文件为/swapfile
,这是要创建的 swap 文件的路径;bs=1M
表示每次读写操作的块大小为 1MB;count=2048
表示写入 2048 个块,总计 2048MB(即 2GB);status=progress
用于显示操作进度。
三、设置 swap 文件的权限
出于安全考虑,限制 swap 文件的访问权限:
sudo chmod 600 /swapfile
将权限设置为只有 root 用户有读写权限,其他用户无权限访问。
四、将文件标记为 swap 空间
sudo mkswap /swapfile
这个命令会在 swap 文件中创建交换空间签名,使其能够被系统识别为 swap 空间。
五、启用 swap 空间
sudo swapon /swapfile
此时,已经将 swap 文件添加到系统的交换空间中,并可供系统使用。
六、使 swap 设置永久生效
编辑/etc/fstab
文件,添加 swap 文件配置,这样在系统重启后 swap 空间仍然有效:
sudo vim /etc/fstab
在文件末尾添加一行:
/swapfile none swap sw 0 0
其中,/swapfile
是 swap 文件的路径,none
表示不挂载到具体的目录,swap
表示文件系统类型为 swap,sw
是选项,表示启用交换空间,后面的两个0
分别表示备份和文件系统检查的选项(对于 swap 文件,这两个值通常设置为0
)。
七、(可选)调整 swappiness 参数
系统根据 swappiness 参数决定何时将内存页面交换到 swap 空间。在 CentOS 中,可以通过以下步骤调整 swappiness 参数:
查看当前 swappiness 值:
cat /proc/sys/vm/swappiness
如果需要修改,可以使用sysctl
命令:
sudo sysctl vm.swappiness=10
将 swappiness 设置为 10,该值较低,表示系统更倾向于使用物理内存。适合运行内存密集型应用(如 Jenkins)的服务器。
对于使用CentOS系统的一般后端服务器,可以将该值设为30。
要使这个设置在系统重启后仍然有效,可以编辑/etc/sysctl.conf
文件:
sudo vim /etc/sysctl.conf
添加一行:
vm.swappiness=10
保存文件后,swappiness 参数的设置就会在系统重启时自动生效。
八、验证 swap 空间是否启用成功
再次查看 swap 空间:
sudo swapon --show
如果看到刚刚创建的 swapfile,说明 swap 空间已正确启用。
通过以上步骤,就完成了在 CentOS 上设置 swap 空间的标准流程,这可以为内存不足的情况提供有效的缓解方案。