我有一个大小为 7.9 GB 的交换分区。当我使用命令时free
,它显示以下内容:
NAME TYPE SIZE USED PRIO
/dev/sda7 partition 7.9G 0B -1
交换分区未被使用并且其优先级被设置为负值(这可能是原因)。
我尝试编辑/etc/fstab
以将优先级设置为某个正整数,例如 100。但这不会影响当前实例。因此,重新启动后,我希望它使用新配置,但它会将优先级重置为原始配置。fstab 文件仍然显示 p=100,但实际上并非如此。
我尝试关闭 swap,再次进行 swap 并在同一分区上进行 swapon,但是没有用。
我应该怎么做才能使系统有效地使用交换?
答案1
请按照我已使用过的并取得成功结果的说明进行操作。
- 打开电脑并登录桌面。
- 打开终端并获取root权限。(
sudo -s
) - 运行
fdisk -l
以列出磁盘分区表。记下您的交换分区。这是您的 /dev/sda7 运行
blkid /dev/sda7
以获取分区的块 ID。复制 UUID。输出类似于以下内容/dev/sda7: UUID="918d334c-ca76-4e6a-b950-d44b4671dbc5" TYPE="swap" PARTUUID="7b892b40-0b"
运行
swapoff -a
以关闭交换分区。运行
vim /etc/fstab
。在那里,注释掉你当前的 fstab 条目(用 # 标记)并粘贴以下内容,并确保它与你的 UUID 一致:UUID="918d334c-ca76-4e6a-b950-d44b4671dbc5" none swap sw,pri=100 0 0 :wq
保存并退出
- 运行
swapon -a
启用交换分区 - 运行
swapon -s
以显示交换摘要 - 重新启动电脑并再次确保您的交换分区已启用且具有相同的优先级。
答案2
交换分区未被使用...我应该怎么做才能使系统有效地使用交换?
命令free
输出显示您已设置并正在使用 7.9GB 的交换分区。执行该free
命令时占用的空间量为 0 字节。也就是说,您当时运行的程序适合可用内存,不需要将任何内容分页到交换空间。这是一个理想的情况——当没有发生交换时,您的系统运行速度会比发生交换时快得多。
至于优先级,-1 是可以接受的数字。如果只分配了一个交换设备,通常其优先级没有区别;当只有一个交换单元时,该单元将用于交换。
如果您有多个交换单元,并且想要先使用一个,请man swapon
为要先使用的单元指定较高的优先级编号(如上一个答案和中所述),为要后使用的单元指定较低的优先级编号,或者在/etc/fstab
文件中按顺序列出设备。对于没有优先级编号的条目,较早列出意味着较早使用。
答案3
关于“它如何成为负面优先”的答案,请参阅最后一点
如果您有足够的 RAM,您的系统可能目前不需要交换。没有太多事情要做,没有选项要更改。您只需要担心空间不足错误。
所以答案是;您的设置看起来不错,就让它去吧。
在少数情况下,更改设置(如优先级)的默认值(在安装时设置)可能会很有用。如果您有多个空间卷,而最快的空间有限。或者如果您偶尔内存不足,但不值得将主交换空间增大。或者 NAS 服务器(我拥有的那台)在 raid1 中将交换空间镜像到所有磁盘,因此可以在运行时取出任何交换空间,但为了不浪费太多空间,最终的大交换空间是仅一个选定卷上的文件。
但实际上我想补充一些要点:
- /etc/fstab 不需要包含您的交换卷设置。它可能由其中一个 init 文件中的命令来设置。
cat /proc/swaps
可能是获取交换信息的更好方法,或者swapon --summary
应该在某些 swapon 版本上显示相同信息以及负优先级的困境。
按照手册:优先级是 0 至 32767 之间的值。
/proc/swaps 中为什么会有负数?
这只是意味着交换设置时没有指定明确的优先级如果你不自己添加优先级,内核会为你生成一个数字。这些数字是负数。
https://lists.debian.org/debian-user/2002/09/msg01075.html
您的 -1 优先级是可以的,而且由于它是唯一的交换条目,所以优先级没有效果。