前言

最近翻新了下自己的博客,部署了些 docker 应用,结果小鸡内存蹭蹭往上涨,2G 内存眨眼就没了一大半。贫穷的我真不想掏钱加配置,只能添加虚拟内存来缓缓了。

什么是 Swap

Swap 说白了就是把一块磁盘空间当成内存来使用。它包括换出和换入两个过程。

所谓换出,就是把进程暂时不用的内存数据存储到磁盘中,并释放这些数据占用的内存。而换入,则是在进程再次访问这些内存的时候,把它们从磁盘读到内存中来。

一个很典型的场景就是,即使内存不足时,有些应用程序也并不想被 OOM 杀死,而是希望能缓一段时间,等待人工介入,或者等系统自动释放其他进程的内存,再分配给它。

除此之外,我们常见的笔记本电脑的休眠和快速开机的功能,也基于 Swap 。休眠时,把系统的内存存入磁盘,这样等到再次开机时,只要从磁盘中加载内存就可以。这样就省去了很多应用程序的初始化过程,加快了开机速度。

缺点就是,swap 是存放在磁盘上的,磁盘的速度和内存比较起来慢了好几个数量级,如果不停的读写 swap,那么对系统的性能肯定有影响,尤其是当系统内存很吃紧的时候,读写 swap 空间发生的频率会很高,导致系统运行很慢,像死了一样,这个时候添加物理内存是唯一的解决办法。

详细操作

定义 Swap的大小及位置

选择你 Swap 文件要放置的位置,比如我直接在根目录/下创建,然后设置 swap 分区的名称为 swapfile。

1
2
cd /
dd if=/dev/zero of=/swapfile bs=1k count=2048000

上面 swapfile 为你创建 Swap 文件分区的名称,你可以根据需要改成你自己的名称;bs 即 blocksizes,每个块大小为 1k;count=2048000,总大小为 2G 的文件。

建立 Swap

1
mkswap /swapfile

启动 Swap

1
swapon /swapfile

检查是否正确

1
free -m

设置开机自启

修改 /etc/fstab 使其启动时自动 mount,这个操作与 Swap 分区法一样,在 /etc/fstab 中最后一行增加如下语句:

1
/swapfile  swap  swap    defaults 0 0

删除 Swap分区

如果不再需要swap,可以清理该分区:

1
swapoff /swapfile

©2018 - Felicx 使用 Stellar 创建
总访问 113701 次 | 本页访问 326
共发表 83 篇Blog · 总计 127.5k 字