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


30

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

现在,要休眠,我的Linux(Ubuntu Jaunty)需要进行交换。我有一个100 GB的备用分区,所以我将其设置为swap,但是对此我并不满意。它仅用于休眠(总是有足够的可用RAM,系统永远也不会交换),而且交换也有点大。另外,我最终将需要其他东西。

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


3
这里是来自debian的关于无需交换休眠的正式指南:wiki.debian.org/Hibernation/Hibernate_Without_Swap_Partition
Francesco

即使您有很多RAM,当使用未使用(因此被换出)的应用程序代码空间缓存数据时,交换仍然可以帮助您提高性能。
迈克尔·施密德

Answers:


23

未经检验的想法:为什么不为它创建包装器,s2disk或者无论哪个实用程序处理挂起到磁盘的磁盘,该磁盘管理交换文件(而不是交换分区)并在恢复时将其删除?

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

可以从交换文件恢复,并记录在kernel.org中


我也想到过交换文件,但是我不知道如何在启动时将其传递给内核。我可以像使用块设备一样执行“ resume = / path / to / file”吗?
汉诺·菲茨

请参阅我的更新,并提供有关从交换文件恢复文件的链接。
罗伯特·蒙提亚努

8
请添加命令chmod 0600 /swapfile。全球可读的交换文件是一个巨大的本地漏洞。
user4035

2
我知道这很旧,但是我会使用“ truncate”而不是“ dd”。无需实际将任何内容写入磁盘。
Guido

4
实际上,您确实需要向磁盘中写入一些内容,并在中创建带有截断结果的文件swapon: /swapfile: skipping - it appears to have holes.
2014年

9

您可能有两种方法,

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

不管你做什么,我觉得swapoffswapon简历后,将是有益的。
并且,由于您实际上不需要交换,因此可以swapoff在恢复后将其保留。

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


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

  • 您将一些应用程序加载到8GB的ram中,然后将其保留在其中
  • 或者,您通过局域网唤醒

但是,真的吗?或者,您还有其他理由要休眠吗?

我使用USB引导Ubuntu,并且始终关机。


2
挂起USB闪存棒会太慢
2009年

6
我倾向于在工作中打开很多东西,我喜欢把所有东西都放回去,就像第二天一样。Ubuntu的启动速度非常快(实际上,对我来说,启动起来似乎更快),但是Eclipse,Firefox等可能不是,并且其他应用程序甚至在关闭时也无法保存其当前状态。
汉诺·菲茨

2
@ Hanno,Firefox还允许您将会话保存到您的滚动位置。因此,“节省与保存”很棒。不确定Eclipse可以做什么。
nik

3
Firefox不会记住您每个窗口都在哪个工作区中,因此在等待所有窗口加载后,PITA有一些小问题,必须将它们重新分配回原位。也没有办法恢复终端窗口之类的状态。
直觉

使用此USB闪存棒,休眠8GB的全部内存将花费不到一分钟的时间。
2011年

4

是的,但并非没有任何努力。在Linux上有2种不同的休眠方式(挂起至磁盘):

  1. swswap,它包含在内核中
  2. tuxonice(以前称为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 的 内核补丁并自行编译内核。

有一些扩展指令在这里,但你可能想尝试罗伯特的建议,徘徊在这条路上之前,除非你是一个老的手在滚动自己的内核映像。


2
好吧,我已经使用了许多内核(我已经成为Gentoo爱好者了几年了,但是有一个原因让我改用Ubuntu ...;)
Hanno Fietz 09年

3

正如乔尔(Joel)和杰夫(Jeff)在播客上讨论的那样,关闭交换通常不是一个好主意-即使这样做值得(不是这样)-如今磁盘空间非常便宜,以至于保留它不会花费您任何东西。您可以获得不到10美分(即欧分)的演出!

报价:

阿特伍德(Atwood):我认为每个极客都在某种程度上经历了这个思考过程:我获得了无数的内存,也许我可以打开页面文件。我实际上有一个关于此的博客条目。重点是:这永远都不值得。

收听Podcast进行更多对话(大约从第59分钟开始),或阅读Podcast页面上链接到的serverfault上的问题(问题23621)。他们谈论的是Windows页面文件,但是该参数对UNIX同样有效(尽管它们可以以不同的方式管理内存)。


1
好吧,我不介意进行交换,实际上,我当前的设置仅使用该备用100 gig分区作为交换。不过,我所介意的是具有交换分区。100 gig交换只是完全废话,我不想有一个很小的分区用于交换。Swapfile对我来说很棒,这要归功于Robert和nik的回答,我现在也知道如何使用它们进行休眠,因此我将使用它。
汉诺·菲茨

4
拥有“微小”分区有什么问题?顺便说一句。我根本不会认为8GB分区很小-我已经使用linux安装了很多年,并且安装在比这个分区小的/ partiton上。我已经使用了第一台PC有一个20MB的硬盘驱动器..
0x89上

1
实际上,Linux以与Windows完全不同的方式管理内存。即使我的旧笔记本电脑几乎没有使用过2GB内存交换,卸载了200MB内存后,我
仍然

@vava:您可能是对的,我对答案做了些调整。但是,实际上您看到200MB的数据被卸载到交换中,这一事实实际上支持了我的观点
。– 0x89
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.