在内存不够大时,需要开启Swap,使用一部分硬盘,增加虚拟内存,解决内存容量不足的情况。
本文是用 Ubuntu16.04 来操作的,其他 Linux 系统类似。
很简单,跟着下面的步骤,一步一步来操作即可。

1. 查看当前是否开启了 Swap

在终端使用命令 free -m 查看输出结果。

$ free -m
              total        used        free      shared  buff/cache   available
Mem:          15881       10040        1157        1529        4684        3724
Swap:          0         0        0

可以看到最后一行是0 0 0,则表示当前没有开启。

如果已经开启的(Ubuntu16 默认有1G Swap),例如我这里已经设置了2930M的swap,我们仍然可以用下面的方法增大虚拟内存。

$ free -m
              total        used        free      shared  buff/cache   available
Mem:          15881       10040        1157        1529        4684        3724
Swap:          2930         946        1983
2. 创建 Swap 文件

我们首先新建一个单独的文件夹myswapfile,以储存swap文件:

$ mkdir myswapfile
$ cd myswapfile/

使用下面命令创建交换文件。因为要分配硬盘空间,所以有可能比较慢,等待一会

dd if=/dev/zero of=/swapfile bs=1M count=2048

count=2048 表示创建 2G 的虚拟内存,因为这里用到的单位是 M,如果要创建 6G 虚拟内存,则把2048 改成 6144 即可,因为 1024 * 6 = 6144。

当然也可以按G来创建,效果是一样的,这个是创建2G,每一块是1G,一共两块,直接用这个命令:

dd if=/dev/zero of=swapfile bs=1G count=2

输出:

记录了2+0 的读入
记录了2+0 的写出
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 31.3265 s, 68.6 MB/s

可以使用 ls / | grep swapfile 命令查看一下,确保交换文件存在,创建成功。

~/myswapfile$ ls
swapfile
3. 激活 Swap 文件

依次执行下面的命令

cd myswapfile
sudo chmod 600 swapfile
mkswap swapfile

依次运行上面两个命令后,如果成功,将会看到类似下面的输出

Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
无标签, UUID=3a5fb2f9-5f5b-4e07-8c58-1acc5ceb2efc
4. 开启 Swap

sudo swapon swapfile
到这里,Swap 已经开启成功。我们再次使用 free -m 命令查看一下,你将看到类似下面的输出。

free -m
              total        used        free      shared  buff/cache   available
Mem:          15881       10110        1238        1535        4532        3641
Swap:          4978         998        3979

最后一行 Swap 将不再是2930,而是我们增加了2048M后的大小。

5. 设置系统启动时自动开启 Swap

使用编辑器编辑 /etc/fstab 文件,添加 Swap 自动开启的配置,这里推荐使用 gedit 进行编辑,也可以使用其他文本编辑工具,例如 nano。

# 编辑这个文件需要管理员权限
sudo gedit /etc/fstab

在 fstab 文件最后一行添加下面的内容

/home/aifool/myswapfile/swapfile none swap defaults 0 0

然后保存,退出 ,这样开机是就会自动添加这个swap空间的大小。

6.查看目前已存在的swap空间

我们可以添加多个储存在不同位置的swap分区,我们可以使用sudo swapon --show查看已经存在的swap:

sudo swapon --show

输出:

NAME                               TYPE      SIZE  USED PRIO
/dev/sda3                          partition 977M  977M   -2
/home/aifool/swapfile/swapfile   file      1.9G 21.5M   -3
/home/aifool/myswapfile/swapfile file        2G    0B   -4

后面的这个2G的空间就是我刚才添加的。上面那个1.9G的是我之前添加。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐