如何设置正确使用交换空间?

如何设置正确使用交换空间?

这次的问题有点长:我如何确保我的 PC 使用正确的交换空间?我很幸运,我有一个 SSD 磁盘,其中的一个分区已格式化为 Linux Swap。问题是:它没有被使用。

系统报告如下:

$ cat /proc/swaps
Filename            Type        Size        Used    Priority
/swapfile           file        2097148     0       -2

如果我打开交换分区,

$ sudo swapon /dev/sdb5

我得到:

$ cat /proc/swaps
Filename            Type        Size        Used    Priority
/swapfile           file        2097148     0       -2
/dev/sdb5           partition   16831484    0       -3

然后关闭交换文件:

$ sudo swapoff /swapfile

$ cat /proc/swaps
Filename            Type        Size        Used    Priority
/dev/sdb5           partition   16831484    0       -2

这一切都运行得很好,但我怎样才能让它在重启后继续存在呢?

我想我可以将这些命令添加到我的 .profile 中,但我希望系统在其他人(可能)登录时也能使用适当的交换空间,即作为系统设置。当系统负荷过重时,我很可能会看到很大的改进……但怎么做呢?我很想看到 /swapfile 消失,但我担心最终系统可能无法启动 :)

(附注 - 我知道我应该避免使用 /dev/sdb5 而应该使用 UUID - 好吧,我最终会到达那里..!)

答案1

未使用的交换空间是正常的。例如,这是我的内存使用情况 - 这是我笔记本电脑,今天我在工作时它已经开机 7 个小时了:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       3.2Gi       8.5Gi       1.5Gi       3.8Gi        10Gi
Swap:         979Mi          0B       979Mi

事实上,您不想积极使用交换。如果内存压力很大,Linux 有时会将未使用的程序放入交换中,这很好。但是,如果您的内存真的用完了,您真的应该添加更多 RAM。即使您使用的是 SSD,交换也很慢。

添加更多交换的唯一原因是如果你想要休眠你的机器。在这种情况下,你至少需要与你的 RAM 一样多的交换。

无论如何 - 如果由于某种原因您无法添加更多 RAM,则需要在/etc/fstab新的交换文件中再添加一行。如下所示:

/dev/sdb5 none swap sw 0 0

它现在将在重启后继续存在。

边注:

如果您想查看系统是否正在积极使用交换,请使用命令dstat并查看分页列。

答案2

正如@Byte Commander 指出的那样,您必须编辑该/etc/fstab文件 - 这是配置哪些文件系统在哪里安装的文件,包括交换。

/etc/fstab我所要做的就是在我的文件中包括以下行:

/dev/sdb5 none swap sw 0 0

相关内容