【原创】Linux 创建与使用 swap 内存交换区

前言

概要与导读部分

1、概要

当你的机器内存不足时,swap 文件就显得很重要了,它的作用就是让机器让需要加载到内存中进行计算的数据与操作放到 swap file 中,这样虽然比较内存中效率与速度要差,但至少你的机器还能跑的起来。

一般来说,很多 Linux 的发行版在安装时会自动创建 swap 文件,但也有那种简要版没有 swap 文件的,如果刚好你的机器内存还很小,那么就可能在运行程序时报错。

本文分享如何在 Linux 上创建 swap 文件。

2、相关环境

  • Ubuntu 18.04.5

3、注意事项

本文操作用户均需要 root 用户或者具有 sudo 权限的用户。

正文

1、创建 swapfile

# sudo dd if=/dev/zero of=/swapfile bs=200MB count=1
1+0 records in
1+0 records out
200000000 bytes (200 MB, 191 MiB) copied, 1.02875 s, 194 MB/s
# ls -lh /swapfile
-rw-r--r-- 1 root root 191M Nov  3 10:32 /swapfile

其中 dd 表示使用指定大小的块来拷贝文件,if 表示 input file,这里是 /dev/zero;of 表示 output file,这里是 /swapfile;bs 表示 block size(默认是 Byte)这里指定的是 200MB;count 表示数据块的数量,这里是 1。

如果你想要设置更大的交换分区,可以更新 bs 的值,比如 bs=20GB。

2、修改 /swapfile 权限

创建的 swapfile 默认权限是 644,需要将权限修改为 600。

# sudo chmod 600 /swapfile

3、将 swapfile 设置为内存交换区

# sudo mkswap /swapfile
Setting up swapspace version 1, size = 190.7 MiB (199995392 bytes)
no label, UUID=114d0471-dca7-4147-a565-f0c8bedc091e

4、启用 /swapfile 

# sudo swapon /swapfile
# free -h
#             total        used        free      shared  buff/cache   available
Mem:           481M        376M        5.7M         17M         98M         75M
Swap:          190M         32M        158M

可以看到,系统已经使用了 32M 的交换内存了。

5、修改文件系统表

修改 /etc/fstab,将 swapfile 设备挂载写入写入文件中,以持久生效。

# sudo vim /etc/fstab

在文件末尾添加如下内容:

/swapfile   none    swap    sw    0   0

6、修改 Linux 内核参数

$ sudo vim /etc/sysctl.conf

添加如下内容:

vm.swappiness = 10
vm.vfs_cache_pressure = 500

注:

(1) vm.swappiness 表示使用 swap 分区的权重,设置为 10 表示物理内存不足 10% 时开始使用 swap 分区。

(2) vm.vfs_cache_pressure 表示内核回收用于虚拟文件系统(VFS) 缓存的倾向,默认是 100,值越大则回收越积极。

(3) 可以使用如下命令查看当前的 swappiness 的设置

cat /proc/sys/vm/swappiness

加载内核参数。

sysctl -p

总结

以上是本文介绍的创建与使用 Linux sapfile 的过程,也是基于互联网上的资源整合而来,也没有相关的深入调优等讲解,待我深入学习一下 linux swap 相关知识再分享一些调优相关的文章!

附录

参考:

https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04
https://www.cnblogs.com/ginvip/p/6370836.html
https://blog.csdn.net/tenfyguo/article/details/50185915

You may also like...

发表评论

电子邮件地址不会被公开。