Linux系统中的 Swap 交换分区的方法教程(关闭、新建、增加)

1,988 阅读4分钟

Linux 中的 Swap 交换分区就是 Windows 中的虚拟内存,将Linux系统服务器中的物理硬盘空间虚拟化成内存使用,以解决内存不够的问题。

很多认为swap是物理RAM内存已满时才使用swap。这是一个错误的认知,因为内核会将非活动页面将从内存移动到交换空间swap。

不同的Linux【CentOS/Ubuntu/Debian】发行版新建,增加 Swap 分区的方法是一样的,下面主机测评及技术分享就分享下如何确定和创建 Swap 分区及大小。

一、Linux Swap 分区大小选择

Linux Swap 分区大小跟你服务器本身的物理内存大小有关,内存越大,设置的 Swap 分区也应该越大,两者的关系如下。

物理内存 交换分区(SWAP)

<= 4g 至少 4G
4 ~ 16G 至少 8G
16G ~ 64G 至少 16G
64G ~ 256G 至少 32G

二、Linux Swap 分区新建或增加 Swap 分区

1、查看 Linux 当前 Swap 分区

命令如下:

free -h

2、关闭 Swap 分区

如果我们需要增加 Swap 分区,则先关闭 Swap 分区,命令如下:

swapoff -a

如果无法关闭 Swap 分区,那可能是因为物理内存当前用量 + Swap 分区当前用量已经超过了物理内存的总大小,我们可以先重启服务器,在机器刚启动的时候关闭 Swap 分区。

3、创建 Swap 分区文件

创建命令如下,其中 /var/swapfile 是文件位置,bs*count 是文件大小,例如以下命令就会创建一个 4G 的文件:

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

4、建立 Swap 文件系统

默认交换空间文件的权限只有root用户才能写入和读取交换文件的数据。因此我们需要修改交换空间文件的权限为600。 在Linux中可使用chmod修改文件权限,除此之外你还需要格式化交换空间的文件。交换空间文件所使用的文件系统与普通文件系统不一样。

交换空间它有自己的文件系统格式和专用个格式化工具mkswap。以下命令将修改交换空间文件的权限为600,并使用mkswap格式化文件。

chmod 600 /swapfile

将刚才的文件格式化为 Swap 分区文件,命令如下:

mkswap /var/swapfile

5、启用 Swap 分区

基于新的 Swap 分区文件开启 Swap 分区:

swapon /var/swapfile

6、查看 Linux 当前分区

查看是否成功新建/增加 Swap 分区:

free -h

如下图所示,已经成功创建了一个 4GB 的 Swap 分区空间:

7、设置开启启动

在 /etc/fstab 文件中加入以下代码让 Linux 交换分区开机自动挂载:

/var/swapfile swap swap defaults 0 0

当计算机在重启时,交换空间将会自动启用。可以运行命令swaponfree命令验证交换空间是否处于活动状态。

echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab

swapon --show
free -h

8、Swappiness

Swappiness是一个Linux内核属性,用于定义系统使用交换空间的频率。Swappiness可以是0到100之间的值。

swappiness=0的时候表示最大限度使用物理内存,然后才是交换空间,swappiness=100的时候表示积极的使用交换空间。

如果你不能确定该值大小,请参考我们的教程:Linux性能:为什么你应该添加交换空间swap空闲内存与可用内存的区别

Linux的初始默认设置为60,你可以运行命令cat /proc/sys/vm/swappiness命令查看当前swappiness值的大小。

如果你需要对swappiness的值作出更改,请运行命令

sysctl -w vm.swappiness=10

sysctl命令用于在运行时配置Linux内核的参数,更改仅在当前会话中可用,即重启会恢复为默认值。

为让swappiness的值持久化,则需要将值写入到/etc/sysctl.conf文件中。sysctl.conf是Linux内核的配置文件。在Linux内核启动时将会次配置文件的参数。

运行以下命令持久化Linux内核参数swappiness的值。

echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/sysctl.conf

9、删除交换空间

如果你因某些原因需要关闭并且删除交换文件。你必须首先运行命令swapoff关闭交换空间。

如果你的交换空间文件还启用fstab方式的自动挂载,你还需要删除/etc/fstab文件中定义的自动挂载配置。

接着,使用你喜欢的编辑器打开文件/etc/fstab,并移除行定义交换空间自动挂载的行。在本教程中,我们将使用vim命令打开文件

最后保存并退出vim。运行rm命令删除交换空间文件。

 swapoff -v /swapfile
 vim /etc/fstab
 rm /swapfile

本文完结,相关标签: swap