这次的问题有点长:我如何确保我的 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