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

30

Eu não havia configurado uma partição de swap no meu PC, porque a) tenho bastante RAM (8 GB) eb) tenho discos rígidos grandes que não queria dividir em pequenos pedaços; portanto, minhas partições menores são 50 GiB, e eu já estou usando esses para os sistemas operacionais.

Agora, para hibernar, meu Linux (Ubuntu Jaunty) exigia troca. 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 (há sempre muita RAM livre e o sistema nunca é trocado) e também é um pouco grande para troca. Além disso, acabarei precisando disso para outra coisa.

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

Hanno Fietz
fonte
3
Aqui está um guia oficial do debian sobre o hibernate sem swap: wiki.debian.org/Hibernation/Hibernate_Without_Swap_Partition
Francesco
Embora você tenha muita RAM, a troca ainda pode ajudá-lo a aumentar o desempenho, quando o espaço do código do aplicativo não utilizado (e, portanto, trocado) é usado para armazenar dados em cache.
Michael Schmid

Respostas:

23

Ideia não testada: por que você não cria um wrapper s2diskou qualquer utilitário que lida com a suspensão no disco que gerencia um arquivo de troca (em oposição a uma partição de troca) e o exclui no currículo?

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

É possível retomar a partir de arquivos de troca e está documentado no kernel.org

Robert Munteanu
fonte
Eu também pensei em um arquivo de troca, mas não sei como passar isso para o kernel na inicialização. Posso apenas "resumir = / caminho / para / arquivo" como faria com o dispositivo de bloco?
11119 Hanno Fietz
Veja minha atualização com um link para a documentação sobre como retomar a partir de arquivos de troca.
1111 Robert Munteanu
8
Plz, adicione o comando chmod 0600 /swapfile. Um arquivo de troca legível pelo mundo é uma enorme vulnerabilidade local.
user4035
2
Eu sei que isso é antigo, mas eu usaria 'truncar' em vez de 'dd'. Não é necessário gravar nada no disco.
Guido
4
Na verdade, você precisa escrever uma sequência de algo no disco, criando o arquivo com resultados truncados swapon: /swapfile: skipping - it appears to have holes..
precisa saber é o seguinte
9

Você provavelmente tem duas maneiras aqui,

  1. Considere um arquivo de troca em vez de uma partição de troca
    • Usando um pequeno dispositivo USB (comparado ao tamanho das suas partições, mas grande o suficiente para memória)

Faça o que fizer, acho que um swapoffe swapondepois do currículo seria útil.
E, como você realmente não precisa da troca, poderá deixá-la swapoffapós o resumo.

Atualização: O comentário faz um bom argumento sobre a hibernação lenta do USB.
Portanto, verifique na ordem numerada - o primeiro esquema possui notas para hibernação usando arquivos de troca.


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

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

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

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

nik
fonte
2
Suspender no pen drive USB seria muito lento .
Tadeusz A. Kadłubowski 11/08/09
6
Costumo abrir um monte de coisas durante o trabalho e gosto de ter tudo de volta como no dia seguinte. O Ubuntu é rápido para iniciar (na verdade, para mim, parece mais rápido do que retomar), mas o Eclipse, Firefox etc. podem não ser, e outros aplicativos podem nem salvar seu estado atual ao fechar.
21609 Hanno Fietz
2
@ Hanno, o Firefox também permite salvar sessões até a posição de rolagem. Então, Save-and-Quite é ótimo. Não tenho certeza do que o Eclipse pode fazer.
nik
3
O Firefox não se lembra em qual espaço de trabalho você tinha cada uma das janelas, então há uma pequena PITA de ter que redistribuí-las novamente, depois de esperar o carregamento de todas. Também não há como recuperar o estado de coisas como janelas de terminal.
intuited
A hibernação de 8 GB de memória completa levaria menos de um minuto com este pen drive USB .
intuited
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 gravar a imagem de suspensão em um arquivo comum.

Da 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 ele não está incluído no kernel padrão, você infelizmente precisará pegar os patches do kernel disponíveis para o Jaunty e compilar o kernel você mesmo.

Há algumas instruções estendidas aqui , mas você pode tentar a sugestão de Robert antes de vagar por esse caminho, a menos que seja um veterano em rolar suas próprias imagens de kernel.

Nagul
fonte
2
Bem, eu tenho handrolled um número de grãos (eu fui um entusiasta do Gentoo por alguns anos), mas não havia uma razão pela qual eu mudei para Ubuntu ...;)
Hanno Fietz
3

Como Joel e Jeff discutiram no podcast , desativar o swap geralmente não é uma boa ideia - mesmo que valha a pena (o que não vale) - o espaço em disco é tão incrivelmente barato hoje em dia que deixá-lo ligado não custa qualquer coisa. Você pode conseguir um show por menos de dez centavos (centavos de euro)!

citar:

Atwood: Eu acho que todo geek, em algum momento, passa por esse processo de pensamento: tenho toneladas e toneladas de memória, talvez consiga virar o arquivo da página. Na verdade, tenho uma entrada de blog sobre isso. ... O ponto principal é: nunca vale a pena.

Ouça o podcast para saber mais sobre a conversa (ela começa aproximadamente aos 59 minutos) ou leia a pergunta no serverfault vinculado à página do 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).

0x89
fonte
1
Bem, não me importo de ter swap, na verdade, minha configuração atual usa apenas essa partição de 100 GB de reserva como swap. O que eu me importo, no entanto, é ter uma partição de troca . A troca de 100 GB é apenas um absurdo total, e eu não quero ter uma pequena partição apenas para troca. Swapfile é ótimo para mim, graças às respostas de Robert e nik, agora também sei como usá-los para hibernação, por isso vou usá-lo.
21609 Hanno Fietz
4
Qual é o problema de ter uma partição "pequena"? Btw. Eu não consideraria minúscula uma partição de 8GB - usei instalações linux por anos que viveram em uma partição / menor que isso. E o primeiro PC que eu usei tinha um disco rígido de 20 MB ..
0x89
1
Na verdade, o Linux gerencia a memória de maneira completamente diferente do Windows. Mesmo no meu antigo laptop com 2GB de swap de carneiro é mal utilizado, 200MB descarregado lá é o valor máximo que eu vi
vava
@vava: Você pode estar certo, eu adaptei minha resposta um pouco. Mas o fato de que você viu 200MB transferida para seu swap realmente suporta o meu ponto ..
0x89