前言:Swap是计算机系统中的一种虚拟内存技术,它允许操作系统将内存中不常用的数据暂时存储到硬盘上,以释放内存空间供其他需要的程序使用。对于配置紧张的云服务器,启用swap虚拟内存,可以很大程度的避免由于内存不足导致的系统崩溃或变得不响应。
一、虚拟内存swap(交换空间)简介
物理内存读写数据比硬盘读写数据要快许多,由于内存是有限的,所以就引出了物理内存和虚拟内存。物理内存是系统硬件提供的内存,是真正的内存;虚拟内存是为了满足物理内存不足时而提出的策略,他是利用磁盘空间虚拟出的逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(swap space)。
作为物理内存的扩展,linux会在物理内存不足时使用交换空间,内核会将暂时不用的内存块信息写到交换空间,这样物理内存就得到了释放,当需要用到原始信息时会重新从交换空间读入到物理内存中。
二、创建swap分区
1、查看swap分区
根据 free -h
命令查看swap是否有创建

如上图所示,swap 行显示为 0,代表服务器未启用swap
2、使用dd命令创建一个swap分区
dd if=/dev/zero of=/home/swap bs=1M count=4096
参数 | 含义 |
---|---|
if | if=文件名:输入文件名,默认为标准输入。即指定源文件 |
of | of=文件名:输出文件名,默认为标准输出。即指定目的文件 |
bs | 同时设置读入/输出的块大小为bytes个字节 |
count | 仅拷贝blocks个块,块大小等于bs指定的字节数 |
3、格式化分区文件,激活swap
# 格式化分区文件
mkswap /home/swap
# swapon 命令启用swap
swapon /home/swap
4、查看设置是否生效
使用 free -h
命令查看

如上图所示,已经成功启用swap虚拟内存了,大小为 4.0g
5、配置使其永久生效
进入/etc/fstab 添加下面这一行设置
/home/swap swap swap default 0 0
fstab
是"file systems table"的缩写,它定义了系统启动时要挂载的文件系统以及挂载选项
创建一个systemd
服务单元来确保服务器重启后swap依然生效
sudo vim /etc/systemd/system/myswap.service
在文件中添加以下内容:
[Unit]
Description=Enable swapfile on startup
After=network.target
[Service]
ExecStart=swapon /home/swap
[Install]
WantedBy=default.target
保存并关闭文件。然后,重新加载systemd
服务并启用它:
sudo systemctl daemon-reload
sudo systemctl enable myswap
三、配置swap参数
调整 vm.swappiness
参数,这个参数控制内核在何时会启用虚拟内存,当swappiness = 100时,内核会最大限度的使用swap分区,设置为 20 时,内核会在内存使用率达到 100 - 20 = 80%时启用虚拟内存
查看swappiness
参数值:
cat /proc/sys/vm/swappiness
临时调整:
sysctl vm.swappiness = 20
永久调整:
vi /etc/sysctl.conf
找到 vm.swappiness
项,没有则手动创建,并修改为对应的值

保存配置以生效
sysctl -p
文章评论