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
当计算机在重启时,交换空间将会自动启用。可以运行命令swapon或free命令验证交换空间是否处于活动状态。
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命令打开文件。
swapoff -v /swapfile
vim /etc/fstab
rm /swapfile
本文完结,相关标签: swap