每次启动时交换优先级被设置为 -1

每次启动时交换优先级被设置为 -1

我有一个大小为 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

请按照我已使用过的并取得成功结果的说明进行操作。

  1. 打开电脑并登录桌面。
  2. 打开终端并获取root权限。(sudo -s
  3. 运行fdisk -l以列出磁盘分区表。记下您的交换分区。这是您的 /dev/sda7
  4. 运行blkid /dev/sda7以获取分区的块 ID。复制 UUID。输出类似于以下内容

    /dev/sda7: UUID="918d334c-ca76-4e6a-b950-d44b4671dbc5" TYPE="swap" PARTUUID="7b892b40-0b"
    
  5. 运行swapoff -a以关闭交换分区。

  6. 运行vim /etc/fstab。在那里,注释掉你当前的 fstab 条目(用 # 标记)并粘贴以下内容,并确保它与你的 UUID 一致:

    UUID="918d334c-ca76-4e6a-b950-d44b4671dbc5"    none    swap    sw,pri=100    0    0 :wq 
    
  7. 保存并退出

  8. 运行swapon -a启用交换分区
  9. 运行swapon -s以显示交换摘要
  10. 重新启动电脑并再次确保您的交换分区已启用且具有相同的优先级。

答案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 优先级是可以的,而且由于它是唯一的交换条目,所以优先级没有效果。

相关内容