AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1124315
Accepted
LeonidMew
LeonidMew
Asked: 2019-03-10 07:01:00 +0800 CST2019-03-10 07:01:00 +0800 CST 2019-03-10 07:01:00 +0800 CST

两个交换文件,休眠工作,如何正确配置休眠以不耗尽空间,或以某种方式失败

  • 772

我已经配置了休眠,它的工作,只是为了确保它不会在某个时候失败 - 这个问题。

我在不同的设备上有两个交换文件,第一个是 SSD 上的小交换,第二个是 HDD 上的内存。Hibernate 配置为小一。它现在工作正常,因为休眠并不总是需要太多(不是所有的东西都写或压缩,我不知道)。

如何配置休眠以使用两个交换?或者它会自动处理它们而无需做任何事情?在内核选项中,我已经设置了第一个小交换,如果它首先使用它(最快)然后第二个,那就太好了。
我不想让 SSD 交换更大,因为 SSD 很小。

leonid@DevSSD:~$ grep resume < /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="no_console_suspend initcall_debug resume=UUID=050f8852-d8f6-4979-a4e4-c3d9b981bee9 resume_offset=34816"

/etc/fstab

UUID=050f8852-d8f6-4979-a4e4-c3d9b981bee9   /   ext4    relatime,grpquota,data=ordered,usrquota,rw,errors=remount-ro,quota  0   1
UUID=3bcf1591-7033-416a-addf-9cf8e2e10c93   /home/leonid/hdd    ext4    defaults,rw,errors=remount-ro   0   1
/swapfile                   none    swap    sw  0   0
/home/leonid/hdd/swapfile   none    swap    sw  0   0
UUID=26DA-1C76  /boot/efi   vfat    defaults    0   1

更新:我为测试和设置优先级做了更小的交换。休眠不以更高的优先级交换:

leonid@DevSSD:~$ swapon
NAME                      TYPE SIZE USED PRIO
/swap64k                  file  60K   0B    1
/home/leonid/hdd/swapfile file   8G   0B  100
leonid@DevSSD:~$ systemctl hibernate
Failed to hibernate system via logind: Sleep verb not supported
swap ssd hibernate
  • 2 2 个回答
  • 855 Views

2 个回答

  • Voted
  1. Best Answer
    Charles Green
    2019-03-10T08:27:05+08:002019-03-10T08:27:05+08:00

    简而言之,您不必使用单个文件或分区进行休眠。

    TL;博士

    睡眠状态或电源接口的基本内核文档中没有任何内容表明交换必须位于单个文件中。实际上,有一些迹象表明休眠数据已写入计算机上的可用交换空间:

    然而,进一步的探索将我们引向 swsusp 的文档,其中有一个简短的常见问题解答部分,以及引用

    问:swsusp(到磁盘)是只使用一个交换分区还是可以使用多个交换分区(将它们聚合到一个逻辑空间)?

    A:只有一个交换分区,抱歉。

    尽管这仅直接与分区有关,但我当然会将其解释为应用于您机器上的交换空间。

    您的“如果我的交换文件空间不足怎么办”的潜在问题。在这里,我们遇到了一些模糊。该文档向我们保证,系统将默认尝试创建大约2/5 内存大小的图像:

    /sys/power/image_size 控制休眠图像的大小。

    它可以写成一个表示非负整数的字符串,该整数将用作图像大小的最大努力上限,以字节为单位。休眠核心将尽最大努力确保图像大小不会超过该数字。但是,如果事实证明无法实现,则仍将创建休眠映像,并且其大小将尽可能小。特别是,将“0”写入此文件将强制休眠图像尽可能小。

    但是,如果图像超过交换大小,文档没有说明可能发生的情况。当我意外关闭交换并尝试休眠时,我自己的经验是没有任何反应。

    稍后编辑

    这是否说明了我、Ubuntu 用户或 Linux 用户?

    我很好奇如果交换文件太小会发生什么,所以我创建了一个 44KB 交换文件(有效!)并尝试休眠:

    chick@dad:~$ swapon
    NAME   TYPE SIZE USED PRIO
    /swap2 file  44K   0B   -2
    chick@dad:~$ sudo systemctl hibernate
    Failed to hibernate system via logind: Not enough swap space for hibernation
    

    我通过使用两个交换文件进行了进一步测试,较小的交换文件具有较高的优先级:

    chick@dad:~$ sudo swapon /swap2 -p 1
    chick@dad:~$ sudo swapon /swapfile -p 2
    chick@dad:~$ swapon
    NAME      TYPE SIZE USED PRIO
    /swap2    file  44K   0B    1
    /swapfile file  16G   0B    2
    chick@dad:~$ sudo systemctl hibernate
    Failed to hibernate system via logind: Not enough swap space for hibernation
    
    • 5
  2. Thomas Guyot-Sionnest
    2020-12-16T03:35:33+08:002020-12-16T03:35:33+08:00

    我个人的经验:交换分区比可用内存小没有什么问题,但在 Debian Buster 中,如果你只有一个交换文件,systemd 似乎会失败,并且必须正确设置交换设备的优先级。 最近版本的systemd似乎正在使用具有最低优先级的交换区域进行恢复(如果有空闲交换但最高优先级的分区已经满,可能会避免失败)。此外 IIRC,让系统分配优先级(在负范围内)不起作用(随时证明我错了......)

    我不确定交换文件是否有助于将恢复映像安装在小型交换分区中,或者是否在恢复设备选择中引入了错误 - 我不记得我是否真的验证了哪个设备用于恢复,我肯定知道是否是一种回归(在上次操作系统升级之前暂停用于在相同条件下工作)并且设置交换设备的优先级确实修复了它。

    使用uswsusp的s2disk工具没有这个问题,我相信 pm-suspend 也没有。

    例如,我的交换配置 (fstab) - 16G 内存(始终完全使用)、4g 交换分区和 16g 交换文件:

    UUID=58e3097b-cd76-4d9b-a46b-98aa07590f8e none            swap    sw,pri=0        0       0
    /swap                                     none            swap    sw,pri=1        0       0
    

    通过为分区设置较低的优先级(由 UUID 标识),systemd将能够正常恢复。删除交换文件会在挂起阶段导致错误(交换区域太小),删除分区或未设置优先级会导致它在恢复时失败(initrd 无法找到正确的恢复交换卷)。

    我不确定是什么驱动了恢复图像的大小,但内核通常会尝试使用不超过总 RAM 的 2/5。文档对此有点含糊;它确实说恢复图像必须适合恢复交换卷,但不是关于它包含的内容以及何时可以在图像本身之外利用其他分区。也就是说,请记住

    1. 你的交换文件将能够释放内存和主分区交换空间,所以它会有所帮助
    2. 内核使用压缩;生成的图像要小得多
    3. 我怀疑最小的恢复映像主要是内核内存,并且可以将应用程序换出到其他交换分区-就好像您运行了一个需要大量内存的程序并在挂起之前将其杀死一样。

    最新的 systemd 代码明确支持在交换文件上设置恢复;我不确定它是多久以前添加的,也不确定我是在使用它还是只是将恢复图像安装在小分区中,但它确实适用于此设置。

    power目录下的内核文档中有很多有用的文档。使用uswsusp可能还有更多运气,如果您仍然需要由systemd启动暂停,您也可以覆盖systemd-hibernate.service调用s2disk。

    • 1

相关问题

  • 混合动力在哪里暂停?

  • 如何优化 SSD 的操作系统?

  • 如果有空闲 RAM,如何清空交换?

  • 如何让我的电脑中的风扇在暂停时关闭?[关闭]

  • Ubuntu 是否支持与 SSD 一起使用的 TRIM 命令?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve