前言
在 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 列,应该会反应总额的变化