Posso hibernar o Linux sem uma partição swap?

29

Eu não tinha configurado uma partição swap no meu PC, porque a) eu tenho bastante RAM (8 GB) eb) eu tenho discos rígidos grandes que eu não queria cortar em pedaços pequenos, então meu menor partições são 50 GiB, e eu já estou usando essas para o sistema operacional.

Agora, para hibernar, meu Linux (Ubuntu Jaunty) requeria swap. Eu tinha uma partição sobressalente de 100 GB, então configurei isso como swap, mas não estou satisfeito com isso. Ele é usado apenas para hibernação (sempre há bastante RAM livre e o sistema nunca troca) e também é um pouco grande para swap. Além disso, eu eventualmente precisarei disso para outra coisa.

Como posso hibernar (suspender para o disco) sem uma partição swap no Ubuntu Jaunty?

    
por Hanno Fietz 11.08.2009 / 10:38

4 respostas

22

Ideia não testada: por que você não cria um invólucro para s2disk ou qualquer um dos manipuladores de utilitário suspende para o disco que gerencia um arquivo de troca (em oposição a uma partição de troca) e o exclui no reinício?

  • Crie o arquivo de troca: dd if=/dev/zero of=/swapfile bs=1024 count=8388608 (8GB)
  • Configure o arquivo de troca: mkswap /swapfile
  • Apenas quando você precisar definir a suspensão, poderá ativá-la: swapon /swapfile
  • Quando você retomar, poderá desativá-lo: swapoff /swapfile

Retomar arquivos de permuta é possível, e é documentado no kernel.org

    
por 11.08.2009 / 10:40
9

Você provavelmente tem duas maneiras aqui,

  1. Considere um arquivo de troca em vez de uma partição de troca
    • Usando um pequeno (comparado aos tamanhos das partições, mas grande o suficiente para a memória) USB stick para a partição swap

Não importa o que você faça, acho que swapoff e swapon após o resumo seriam úteis.
E, como você realmente não precisa da troca, você pode deixar swapoff depois do currículo.

Atualização: O comentário faz um bom comentário sobre a lentidão da hibernação por USB.
Portanto, verifique a ordem numerada - o primeiro esquema tem notas para hibernação usando arquivos de troca.

Por curiosidade,
Eu gostaria de saber por que você quer hibernar quando linuxes como o Ubuntu podem desligar e iniciar tão rápido.
Eu estou supondo,

  • você carrega seu RAM de 8 GB com alguns aplicativos e os deixa lá
  • ou, você, despertar na LAN

Mas isso é realmente verdade? ou, você tem algum outro motivo para hibernar?

Eu uso um Ubuntu de inicialização USB e sempre encerro.

    
por 11.08.2009 / 11:10
4

Sim, mas não sem algum esforço. Existem 2 maneiras diferentes de hibernar (suspender para o disco) no linux:

  1. swswap , que está incluído no kernel
  2. tuxonice (anteriormente suspend2), o que não é.

O Tuxonice está disponível como um patch para o kernel e permite escrever a imagem suspensa em um arquivo comum.

De Wikipedia :

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.

Como não está incluído no kernel padrão, você infelizmente teria que pegar os patches do kernel disponíveis para o Jaunty e compile o kernel você mesmo.

Existem algumas instruções estendidas aqui , mas você pode querer tentar a sugestão de Robert antes de vagar por essa estrada, a menos que você seja um veterano em fazer suas próprias imagens do kernel.

    
por 11.08.2009 / 11:09
3

Como Joel e Jeff têm discutido no podcast , desligar o swap geralmente não é um bom idéia - mesmo se valeria a pena (o que não é) - o espaço em disco é tão incrivelmente barato hoje em dia que deixá-lo não custa nada. Você pode conseguir um show por menos de dez centavos (Euro cent, isto é)!

para citar:

Atwood: I think that every geek at some point goes through this thought process: I got tons and tons of memory, maybe I can turn of my page file. I actually have a blog entry about this. ... The punch line is: it is never worth it.

Ouça o podcast para mais conversas (começa aproximadamente no minuto 59), ou leia a questão em serverfault vinculada a na página de podcast (pergunta 23621). Eles falam sobre o arquivo de paginação do Windows, mas o argumento é igualmente válido para o UNIX (embora eles possam gerenciar a memória de uma maneira diferente).

    
por 11.08.2009 / 21:09