关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

Ubuntu上增加swap交换空间具体方法

发布时间:2023/6/1 12:10:01
香港云服务器

Linux系统下的Swap交换空间与Windows下的虚拟内存意思差不多,Swap交换空间的作用可简单这样理解:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。

步骤1:检查swap交换空间信息

在开始之前,首先运行以下命令,确保检查系统是否已经有可用的交换空间。

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;sudo&nbsp;swapon&nbsp;--show

[sudo]&nbsp;linuxidc&nbsp;的密码:

NAME&nbsp;&nbsp;&nbsp;TYPE&nbsp;SIZE&nbsp;USED&nbsp;PRIO

/swapfile&nbsp;file&nbsp;2G&nbsp;0B&nbsp;-2

545d3386-06c4-4aaf-a747-defb5a463bc4.png

如果您没有看到任何输出,则表示您的系统当前没有可用的交换空间。

您还可以使用free命令确认没有可用的交换空间。

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;free&nbsp;-h

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总计&nbsp;&nbsp;&nbsp;&nbsp;已用&nbsp;&nbsp;&nbsp;&nbsp;空闲&nbsp;&nbsp;&nbsp;共享&nbsp;&nbsp;缓冲/缓存&nbsp;&nbsp;可用

内存:&nbsp;&nbsp;&nbsp;&nbsp;3.8G&nbsp;&nbsp;&nbsp;&nbsp;1.5G&nbsp;&nbsp;&nbsp;&nbsp;569M&nbsp;&nbsp;&nbsp;&nbsp;32M&nbsp;&nbsp;&nbsp;&nbsp;1.8G&nbsp;&nbsp;&nbsp;&nbsp;2.1G

交换:&nbsp;&nbsp;&nbsp;&nbsp;2.0G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0B&nbsp;&nbsp;&nbsp;&nbsp;2.0G

b72c4a86-b0ba-4da9-837f-aec81f1fdd49.png

您可以从上面的输出中看到,系统上没有活动交换。

第2步:检查分区上的可用空间

要创建交换空间,首先需要检查当前的磁盘使用情况,并确认有足够的空间在系统上创建交换文件。

fce62f13-57ea-44c0-926d-514aa392a4fe.png

检查Ubuntu中的文件系统磁盘使用情况

再 / 的分区有足够的空间可用于创建swap文件。

第3步:在Ubuntu中创建swap文件

现在我们将使用fallocate命令在我们的Ubuntu根(/)目录上创建一个名为“swap.img”的交换文件(大小为1GB),您可以根据需要调整大小。并使用ls命令验证交换的大小 如图所示。

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;sudo&nbsp;fallocate&nbsp;-l&nbsp;1G&nbsp;/swap.img

[sudo]&nbsp;linuxidc&nbsp;的密码:

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;ls&nbsp;-lh&nbsp;/swap.img

-rw-r--r--&nbsp;1&nbsp;root&nbsp;root&nbsp;1.0G&nbsp;Jul&nbsp;26&nbsp;01:54&nbsp;/swap.img

d35793bc-ccf4-4eac-9e57-e71b6faf6e86.png

从上面的输出中,您可以看到我们已经创建了具有正确空间量(即1GB)的交换文件。

第4步:在Ubuntu中启用swap文件

要在Ubuntu中启用swap文件,首先需要在文件上设置正确的权限,以便只有root用户才能访问该文件。

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;sudo&nbsp;chmod&nbsp;600&nbsp;/swap.img

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;ls&nbsp;-lh&nbsp;/swap.img

-rw-------&nbsp;1&nbsp;root&nbsp;root&nbsp;1.0G&nbsp;Jul&nbsp;26&nbsp;01:54&nbsp;/swap.img

f45ac83e-f3df-418a-9f6e-431b4f41eb06.png

在交换文件上swap权限

从上面的输出中,您可以看到只有root用户具有读写权限。

现在运行以下命令将文件标记为swap交换空间,并启用交换文件以开始在系统上使用它。

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;sudo&nbsp;mkswap&nbsp;/swap.img

正在设置交换空间版本&nbsp;1,大小&nbsp;=&nbsp;1024&nbsp;MiB&nbsp;(1073737728&nbsp;个字节)

无标签,&nbsp;UUID=735aa07f-d43e-4cec-92e3-383815de7317

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;sudo&nbsp;swapon&nbsp;/swap.img

在Ubuntu中启用swap交换空间

42788f61-7d44-4023-8319-a57fbf616306.png

通过运行以下命令验证交换空间是否可用。

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;sudo&nbsp;swapon&nbsp;--show

NAME&nbsp;&nbsp;&nbsp;TYPE&nbsp;SIZE&nbsp;USED&nbsp;PRIO

/swapfile&nbsp;file&nbsp;&nbsp;2G&nbsp;0B&nbsp;-2

/swap.img&nbsp;file&nbsp;1024M&nbsp;0B&nbsp;-3

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;free&nbsp;-h

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总计&nbsp;&nbsp;&nbsp;&nbsp;已用&nbsp;&nbsp;&nbsp;&nbsp;空闲&nbsp;&nbsp;&nbsp;共享&nbsp;&nbsp;缓冲/缓存&nbsp;&nbsp;可用

内存:&nbsp;&nbsp;&nbsp;&nbsp;3.8G&nbsp;&nbsp;&nbsp;&nbsp;1.5G&nbsp;&nbsp;&nbsp;&nbsp;549M&nbsp;&nbsp;&nbsp;&nbsp;32M&nbsp;&nbsp;&nbsp;&nbsp;1.8G&nbsp;&nbsp;&nbsp;&nbsp;2.0G

交换:&nbsp;&nbsp;&nbsp;&nbsp;3.0G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0B&nbsp;&nbsp;&nbsp;&nbsp;3.0G

从上面的输出中可以看出,我们的新交换文件已经成功创建,我们的Ubuntu系统将在必要时开始使用它。

第5步:在Ubuntu中永久挂载交换文件

要使交换空间永久化,您需要在/etc/fstab文件中添加交换文件信息,并通过运行以下命令对其进行验证。

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;echo&nbsp;'/swap.img&nbsp;none&nbsp;swap&nbsp;sw&nbsp;0&nbsp;0'&nbsp;|&nbsp;sudo&nbsp;tee&nbsp;-a&nbsp;/etc/fstab

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;cat&nbsp;/etc/fstab

第6步:调整Ubuntu中的交换设置

您需要配置一些设置,这些设置会影响您在使用交换时的Ubuntu性能。

调整Swappiness值

Swappiness是一个Linux内核参数,用于指定系统将数据从RAM交换到交换空间的频率(以及频率)。 此参数的默认值为“60”,它可以使用“0”到“100”之间的任何值。 值越高,内核使用的交换空间越高。

首先,键入以下命令检查当前的swappiness值。

linuxidc@linuxidc:~/www.linuxidc.com$&nbsp;cat&nbsp;/proc/sys/vm/swappiness

60

当前的swappiness值为60非常适合桌面使用,但对于服务器,您必须将其设置为较低的值,即10。

linuxidc@linuxidc:~/www.linuxidc.com$ sudo sysctl vm.swappiness=10

要使此设置永久化,您需要将以下行添加到/etc/sysctl.conf文件中。

vm.swappiness=10

调整缓存压力设置

您可能想要更改的另一个类似设置是vfs_cache_pressure – 此设置指定系统要在其他数据上缓存inode和dentry详细信息的程度。

您可以通过查询proc文件系统来检查当前值。

4d5186d2-abf6-463b-96cf-e7c33563d9cb.png

linuxidc@linuxidc:~/www.linuxidc.com$ cat /proc/sys/vm/vfs_cache_pressure 100

当前值设置为100,这意味着我们的系统会过快地从缓存中删除inode信息。 我建议,我们应该将它设置为更稳定的设置,如50。

linuxidc@linuxidc:~/www.linuxidc.com$ sudo sysctl vm.vfs_cache_pressure=50