在 Linux 下创建、优化、删除 Swap 分区

Linux 上的使用需求越来越高,这篇记录我在折腾 Linux 的 Swap 上的一些操作。

以下操作需要在 root 账户下操作

新建 Swap 分区

查看内存占用情况

1
2
3
4
5
6
free -h

# 返回内容
total used free shared buff/cache available
Mem: 960Mi 368Mi 421Mi 2.0Mi 313Mi 592Mi
Swap: 0B 0B 0B

发现 Swap 分区并未分配交换分区

新增一个 Swap 文件

1
2
# 创建一个 swapfile 到 / 目录,大小为 2G
dd if=/dev/zero of=/swapfile bs=1M count=2048
  1. /dev/zero 无限填充 0 (0x00)
  2. of 文件输出位置
  3. bs 块大小 1K、1M、1G
  4. count 块数量
  5. 文件的总大小 = bs*count(块大小x块数量)

Swap 文件创建成功返回结果

1
2
3
4
root@fastchen:~# dd if=/dev/zero of=/swapfile bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 4.50898 s, 476 MB/s

修改文件权限

1
chmod 0600 /swapfile

将刚才创建的 swapfile 格式化为交换分区文件

1
mkswap /swapfile

成功返回结果

1
2
3
root@fastchen:~# mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=4082e93d-9fc8-6985-ab32-080182ba7aba

启用 Swap 分区

创建完毕 Swap 后,需要启用和开启自动启用。

启用 Swap

1
swapon /swapfile

通过 free -h 查看是否成功启用

1
2
3
4
root@fastchen:~# free -h
total used free shared buff/cache available
Mem: 960Mi 364Mi 66Mi 2.0Mi 678Mi 595Mi
Swap: 2.0Gi 0B 2.0Gi

设置开启自动启用 Swap

1
vim /etc/fstab

新增一行

1
/swapfile swap swap defaults 0 0
  1. /swapfile swap 文件路径
  2. swap 文件类型
  3. swap 标签
  4. defaults mkswap的默认参数
  5. 0 0 开始与结束位置

调整 Swap 使用优先级

通过调整使用优先级可以控制物理内存与虚拟内存直接的平衡

一般情况没有特殊需求可以不用调整,而且会影响性能。

先查看当前优先级数值

1
cat /proc/sys/vm/swappiness

根据使用情况可自行调整

数值范围:0 - 100 越大越积极使用 Swap

临时修改 (重启失效)

1
sudo sysctl vm.swappiness=80

永久修改

1
vim /etc/sysctl.conf

找到 vm.swappiness 修改 = 号后面的数值即可

如果没有可以手动增加

1
vm.swappiness = 数值

修改完毕后如果没有生效则需要重启系统

删除 Swap 分区

停止当前 Swap 分区

1
swapoff /swapfile

删除 Swap 文件

1
rm /swapfile

删除开机启动

1
2
3
4
5
# 编辑文件
vim /etc/fstab

# 删除 swap 启动
/swapfile swap swap defaults 0 0

通过 free -h 检查结果