我可以在没有交换分区的情况下休眠 Linux 吗?

我可以在没有交换分区的情况下休眠 Linux 吗?

我没有在我的 PC 上设置交换分区,因为 a) 我有足够的 RAM(8 GB)和 b) 我有大硬盘,我不想把它们切成小块,所以我最小的分区是 50 GiB,我已经将它们用于操作系统了。

现在,要进入休眠状态,我的 Linux(Ubuntu Jaunty)需要交换。我有一个 100 GB 的空闲分区,所以我将其设置为交换,但我对此并不满意。它只用于休眠(总是有足够的 RAM 可用,系统从不进行交换),而且对于交换来说它也有点大。另外,我最终会需要它来做其他事情。

在 Ubuntu Jaunty 中,如何在没有交换分区的情况下进入休眠(挂起到磁盘)状态?

答案1

未经测试的想法:为什么不创建一个包装器s2disk或任何实用程序处理挂起到磁盘,管理交换文件(而不是交换分区)并在恢复时将其删除?

  • 创建交换文件:dd if=/dev/zero of=/swapfile bs=1024 count=8388608(8GB)
  • 设置交换文件:mkswap /swapfile
  • 只有当你需要设置暂停时你才可以激活它:swapon /swapfile
  • 恢复后您可以停用它:swapoff /swapfile

从交换文件恢复是可能的,并且记录在 kernel.org 上

答案2

你可能有两种方法,

  1. 考虑一个交换文件而不是交换分区
    • 使用较小的(与分区大小相比,但足以容纳内存)USB 棒进行交换分区

不管你做什么,我认为在 resume 后面加上swapoffand会很有用。 而且,既然你实际上不需要交换,你可以把它放在resume 后面。swapon
swapoff

更新:评论很好地说明了 USB 休眠速度慢的问题。
因此,请按编号顺序检查 - 第一个方案有使用交换文件进行休眠的说明。


出于好奇,
我想知道为什么像 Ubuntu 这样的 Linux 可以如此快速地关闭和启动,而你却想要休眠。
我猜,

  • 你在 8GB 内存中加载一些应用程序,然后把它们留在那里
  • 或者,你通过局域网唤醒

但是,事实真是如此吗?或者,你还有其他冬眠的理由吗?

我用的是USB 启动 Ubuntu并且始终关机。

答案3

是的,但需要付出一些努力。在 Linux 上有两种不同的休眠方式(挂起到磁盘):

  1. swswap,包含在内核中
  2. 图克索尼采(以前称为 suspend2),但事实并非如此。

Tuxonice 可作为内核的一个补丁,它可以让您将挂起映像写入普通文件。

维基百科

TuxOnIce (formerly known as Suspend2) is an implementation of the suspend-to-disk (or hibernate) feature which is available as patches for the 2.6 Linux kernel. It was formerly known as 'swsusp'. During the 2.5 kernel era, Pavel Machek forked the original out-of-tree version of swsusp (then at approximately beta 10) and got it merged into the vanilla kernel, while development continued in the swsusp/Suspend2/TuxOnIce line. TuxOnIce includes support for SMP, highmem and preemption. Its major advantages over swsusp are:

    * It has an extensible architecture that allows for arbitrary transformations on the image and arbitrary backends for writing the image;
    * It prepares the image and allocates storage prior to doing any storage and accounts for memory and storage usage very carefully, thereby becoming more reliable;
    * Its current modules for writing the image have been designed for speed, combining asynchronous I/O, multithreading and readahead with LZF compression in its default configuration to read and write the image as fast as hardware is able;
    * It has an active community supporting it via a wiki, mailing lists and irc channel (see the TuxOnIce website);
    * It is more flexible and configurable (via a /sys/power/tuxonice interface);
    * Whereas the current swsusp (and uswsusp) implementations support writing the image to one swap device only, TuxOnIce supports multiple devices in any combination of swap files and swap partitions. It can also write the image to an ordinary file, thereby avoiding potential race issues in freeing memory when preparing to suspend.
    * It supports encryption by various methods;
    * It can store a full image of memory (resulting in a more responsive system post-resume), while uswsusp and swsusp write at most half the amount of RAM.

由于它不包含在默认内核中,因此你很遗憾必须选择 内核补丁适用于 Jaunty 并自行编译内核。

有一些扩展说明这里,但在走这条路之前,您可能想先尝试一下罗伯特的建议,除非您是滚动自己的内核映像的老手。

答案4

正如乔尔和杰夫播客中讨论,关闭交换通常不是一个好主意 - 即使这样做是值得的(其实并不值得) - 如今磁盘空间非常便宜,因此保留它不会花费您任何费用。您可以花不到十美分(也就是欧元)获得一个 GB!

去引用:

阿特伍德:我认为每个极客在某个时候都会经历这样的思考过程:我有无数的记忆,也许我可以关闭我的页面文件。我实际上有一篇关于这个的博客文章。... 妙语是:这永远不值得。

收听播客了解更多对话(大约从第 59 分钟开始),或阅读播客页面上链接的 serverfault 问题(问题 23621)。他们谈论的是 Windows 页面文件,但这个论点对于 UNIX 同样有效(尽管它们可能以不同的方式管理内存)。

相关内容