linux使用swap(虚拟内存)
在 Linux 上手动创建并使用 Swap(虚拟内存) 的完整指北
适用于:内存吃紧的 VPS、测试机,或任何需要临时/永久扩展虚拟内存的场景
系统环境:Debian / Ubuntu / CentOS 等主流发行版均可,内核 ≥ 3.x
1. 为什么需要 swap?
我购买的服务器只有256MB内存,有一天我安装php的扩展fifeinfo的时候报错了,最后查到原因是内存不够了。
如果买的服务器不行多开的话,使用虚拟内存会卡硬盘io导致卡顿,但是我们应该先解决行不行的问题,再说卡不卡的问题。所以此方法只适合于内存较小的服务器,对于内存足够的,应当尽量减少使用虚拟内存。
2. 具体步骤
以下命令部分需要 root 身份执行:
①.创建一个工作目录(文件夹)用于存放swap文件
cd /
mkdir -p /myswapfile
cd /myswapfile
②.创建一个 2 GB 的 swap 文件
dd if=/dev/zero of=./swapfile bs=1M count=2048
bs: 参数指定每次写入磁盘的块大小,这里指定为 1MB。如果不写单位,则默认为字节(Byte)。也可以使用其他单位如K,G等.
count: 参数指定写入磁盘的块数,这里指定为 2048。不写单位默认为块,此外也可以选择单位K(1K块=1024块),M(1M等于1K个1K块),G等.
③.设置 swap 文件的权限
chmod 600 swapfile
权限收紧,防止其他用户读 swap,设置为更高的权限也可以。
④.设置 swap 文件为 swap area
mkswap swapfile
格式化为 swap 元数据
⑤.立即启用(重启失效)
swapon swapfile
⑥.永久生效(开机自动挂载)
echo "/myswapfile/swapfile none swap defaults 0 0" >> /etc/fstab
⑦.临时调整 swappiness:让内核更积极使用 swap
对于正常的机器不需要调整,但是我们这个是256m内存的服务器,不调整的话依然会爆内存,所以需要调整一下。
这个值范围是0-100,正常默认是60,值越小,swap 的使用越频繁,值越高,swap 的使用越少。对于内存较多的机器可减少这个值,来避免硬盘的过度使用而导致的阻塞。
方法一: 使用 sysctl 指令修改
sysctl vm.swappiness=100
方法二: 修改swappiness文件,
路径为:/proc/sys/vm/swappiness,在文档末尾添加“100”
echo 100 > /proc/sys/vm/swappiness
两种方法选一种即可。两种都改也可以。
⑧ 开机永久生效swappiness值
在"sysctl.conf"文件中添加“vm.swappiness=100”
echo "vm.swappiness=100" >> /etc/sysctl.conf
注:echo命令请勿重复运行,否则会在文档末尾添加多行重复的内容。
查看命令
设置完成后可以用一些查看命令查看设置是否成功。
1. cat查看swappiness值
方法一:
sysctl vm.swappiness
方法二:
cat /proc/sys/vm/swappiness
2. free查看内存使用情况
free -m
输出示例:
root@ser683638037444:~# free -m
total used free shared buff/cache available
Mem: 1919 715 165 1 1232 1204
Swap: 1024 37 987
如图所示,swap大小为1024MB,已使用37MB,剩余987MB。
-m 表示以 MB(兆字节)为单位显示。

浙公网安备 33010602011771号