Linux 交换分区(Swap)的使用

413 阅读2分钟

前言

在 Linux 系统中运行的进程已经将内存消耗殆尽后,会继续使用 Swap 分区中的空间存储运行时数据, Linux 中的 Swap 有点类似于 Windows 下的虚拟内存的概念,都是通过将持久存储用作临时存储,满足内存空间不足时系统的正常运作。

当物理内存及 Swap 空间都被消耗殆尽后,Linux 会触发 OOM-Killer 机制,把消耗内存最多的进程 kill 掉以释放内存

如何分配 Swap 空间?

将分区下的空间用于 Swap

1、创建一个用于存放交换分区文件的目录,例如 ~/swap

mkdir ~/swap

2、使用 dd 工具在特定分区中分配固定区块的用作交换文件

dd if=/dev/zero of=~/swap/swapfile bs=1024 count=102400

此时创建的是一个空文件,所以 dd 的 if 参数为 /dev/zero ,另外 bs 与 count 的默认单位为 KB ,在以上命令中我们创建了一个 100MB 的空文件

3、建立交换分区

mkswap ~/swap/swapfile

4、启用交换分区

swapon ~/swap/swapfile

5、检查交换分区使用情况

free -m

此时在 Swap: 中输出的 total 列,应该会反应总额的变化

6、编辑 /etc/fstab 文件,添加以下内容,使得这次配置的 Swap 永久生效

~/swap/swapfile swap swap defaults 0 0

7、停用、清除交换分区

# 如果之前创建时有编辑过 `/etc/fstab` 文件,则先删除相关内容
swapoff ~/swap/swapfile #停用交换分区
rm ~/swap/swapfile #删除相关文件,释放空间

将整块硬盘用于 Swap

1、查询硬盘的设备名称

fdisk -l

2、因为我们要将整块硬盘用于 Swap,所以要确保这块硬盘未被分区及使用,如果存在分区,需要先 通过 fdisk 工具将分区删除

fdisk -l #查询硬盘及分区情况
df -h #查询分区使用情况

3、使用 dd 工具格式化硬盘

dd if=/dev/zero of=/dev/sdb bs=1024 count=(根据硬盘大小决定)

4、建立交换分区

mkswap /dev/sdb

5、启用交换分区

swapon /dev/sdb

6、检查交换分区使用情况

free -m

此时在 Swap: 中输出的 total 列,应该会反应总额的变化