Puis-je mettre en veille prolongée Linux sans partition de swap?

30

Je n'avais pas configuré de partition de swap sur mon PC, car a) j'ai beaucoup de RAM (8 Go) et b) j'ai de grands disques durs que je ne voulais pas couper en petits morceaux, donc mes plus petites partitions sont 50 GiB, et je les utilise déjà pour les OS.

Maintenant, pour hiberner, mon Linux (Ubuntu Jaunty) nécessitait un échange. J'avais une partition de 100 Go de rechange, je l'ai donc configurée comme échange, mais je n'en suis pas satisfait. Il n'est utilisé que pour l'hibernation (il y a toujours beaucoup de RAM libre et le système ne passe jamais en permutation) et il est également un peu grand pour le permutation. De plus, je vais éventuellement en avoir besoin pour autre chose.

Comment puis-je hiberner (suspendre sur le disque) sans partition de swap dans Ubuntu Jaunty?

Hanno Fietz
la source
3
Voici un guide officiel de Debian sur la mise en veille prolongée sans échange: wiki.debian.org/Hibernation/Hibernate_Without_Swap_Partition
Francesco
Même si vous avez beaucoup de RAM, l'échange peut toujours vous aider à augmenter les performances, lorsque l'espace de code d'application inutilisé (et donc échangé) est utilisé pour la mise en cache des données.
Michael Schmid

Réponses:

23

Idée non testée: pourquoi ne pas créer un wrapper pour s2diskou quel que soit l'utilitaire qui gère la suspension sur le disque qui gère un fichier d'échange (par opposition à une partition d'échange) et le supprime à la reprise?

  • Créez le fichier d'échange: dd if=/dev/zero of=/swapfile bs=1024 count=8388608(8 Go)
  • Configurez le fichier d'échange: mkswap /swapfile
  • Ce n'est que lorsque vous devez définir la suspension que vous pouvez l'activer: swapon /swapfile
  • Lorsque vous reprenez, vous pouvez le désactiver: swapoff /swapfile

La reprise à partir de fichiers d'échange est possible et est documentée sur kernel.org

Robert Munteanu
la source
J'avais également pensé à un fichier d'échange, mais je ne sais pas comment le transmettre au noyau au démarrage. Puis-je simplement faire "resume = / chemin / vers / fichier" comme je le ferais avec le périphérique bloc?
Hanno Fietz
Voir ma mise à jour avec un lien vers la documentation sur la reprise à partir de fichiers d'échange.
Robert Munteanu
8
Plz, ajoutez la commande chmod 0600 /swapfile. Un fichier d'échange lisible dans le monde entier est une énorme vulnérabilité locale.
user4035
2
Je sais que c'est vieux, mais j'utiliserais 'tronquer' au lieu de 'dd'. Pas besoin d'écrire quoi que ce soit sur le disque.
Guido
4
En fait, vous devez écrire une séquence de quelque chose sur le disque, créant le fichier avec des résultats tronqués dans swapon: /swapfile: skipping - it appears to have holes..
hlovdal
9

Vous avez probablement deux façons ici,

  1. Considérez un fichier d'échange au lieu d'une partition d'échange
    • Utilisation d'une petite clé USB (par rapport à la taille de vos partitions, mais suffisamment grande pour la mémoire) pour swap-partition

Quoi que vous fassiez, je pense qu'un swapoffet swaponaprès le CV serait utile.
Et, puisque vous n'avez pas vraiment besoin de l'échange, vous pouvez le laisser swapoffaprès la reprise.

Mise à jour: Le commentaire fait un bon point sur l'hibernation USB lente.
Donc, vérifiez dans l'ordre numéroté - le premier schéma a des notes pour l'hibernation en utilisant des fichiers d'échange.


Par curiosité,
j'aimerais savoir pourquoi vous voulez hiberner lorsque des linux comme Ubuntu peuvent s'arrêter et démarrer si vite.
Je devine,

  • vous chargez votre RAM de 8 Go avec certaines applications et les laissez là
  • ou, vous vous réveillez sur LAN

Mais est-ce vraiment le cas? ou, avez-vous une autre raison d'hiberner?

J'utilise un USB bootant Ubuntu et je m'arrête toujours.

nik
la source
2
La suspension sur une clé USB serait si lente .
Tadeusz A. Kadłubowski
6
J'ai tendance à ouvrir plein de trucs pendant le travail et j'aime tout récupérer comme c'était le lendemain. Ubuntu est rapide à démarrer (en fait, il me semble plus rapide que de reprendre), mais Eclipse, Firefox etc. ne le sont peut-être pas et d'autres applications peuvent même ne pas enregistrer leur état actuel lors de la fermeture.
Hanno Fietz
2
@Hanno, Firefox vous permet également d'enregistrer des sessions jusqu'à votre position de défilement. Donc, Save-and-Quite est génial. Je ne sais pas ce qu'Eclipse peut faire.
nik
3
Firefox ne se souvient pas dans quel espace de travail vous aviez chacune de ses fenêtres, il y a donc le PITA mineur d'avoir à les redistribuer en place, après avoir attendu qu'elles se chargent toutes. Il n'y a également aucun moyen de récupérer l'état des choses comme les fenêtres de terminal.
intuition
Hiberner les 8 Go de mémoire prendrait moins d'une minute avec cette clé USB .
intuition
4

Oui, mais pas sans effort. Il existe 2 façons différentes d'hiberner (suspension sur disque) sous Linux:

  1. swswap , qui est inclus dans le noyau
  2. tuxonice (anciennement suspend2), ce qui n'est pas le cas.

Tuxonice est disponible sous forme de patch pour le noyau, et vous permettra d'écrire l'image suspendue dans un fichier ordinaire.

De Wikipédia :

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.

Comme il n'est pas inclus dans le noyau par défaut, vous devrez malheureusement récupérer les correctifs du noyau disponibles pour Jaunty et compiler le noyau vous-même.

Il y a quelques instructions étendues ici , mais vous voudrez peut-être essayer la suggestion de Robert avant de vous promener dans cette voie, à moins que vous ne soyez un vieux maître pour rouler vos propres images de noyau.

Nagul
la source
2
Eh bien, j'ai piloté un certain nombre de noyaux (je suis un passionné de Gentoo depuis quelques années), mais il y avait une raison pour laquelle je suis passé à Ubuntu ...;)
Hanno Fietz
3

Comme Joel et Jeff ont discuté sur le podcast , désactiver le swap n'est généralement pas une bonne idée - même si cela en vaut la peine (ce qui n'est pas le cas) - l'espace disque est si incroyablement bon marché de nos jours que le laisser ne vous coûte rien n'importe quoi. Vous pouvez obtenir un concert pour moins de dix cents (centimes d'euro, c'est-à-dire)!

citer:

Atwood: Je pense que chaque geek à un moment donné passe par ce processus de réflexion: j'ai des tonnes et des tonnes de mémoire, peut-être que je peux tourner mon fichier d'échange. J'ai en fait une entrée de blog à ce sujet. ... La ligne de punch est: ça n'en vaut jamais la peine.

Écoutez le podcast pour plus de la conversation (il commence à peu près à la minute 59), ou lisez la question lors de la défaillance du serveur liée à la page du podcast (question 23621). Ils parlent du fichier d'échange Windows, mais l'argument est également valable pour UNIX (bien qu'ils puissent gérer la mémoire d'une manière différente).

0x89
la source
1
Eh bien, cela ne me dérange pas d'avoir échangé, en fait, ma configuration actuelle utilise uniquement cette partition de 100 gig de rechange comme échange. Ce qui me dérange, cependant, c'est d'avoir une partition de swap . 100 gig swap est juste un non-sens total, et je ne veux pas avoir une petite partition juste pour swap. Le fichier d'échange est génial pour moi, grâce aux réponses de Robert et de nik, je sais maintenant aussi comment les utiliser pour l'hibernation, donc je vais l'utiliser.
Hanno Fietz
4
Quel est le problème avec une partition "minuscule"? Btw. Je ne considérerais pas du tout une partition de 8 Go - j'ai utilisé des installations Linux pendant des années qui vivaient sur une partition / qui était plus petite que cela. Et le premier PC que j'ai utilisé avait un disque dur de 20 Mo ..
0x89
1
En fait, Linux gère la mémoire d'une manière complètement différente de Windows. Même sur mon ancien ordinateur portable avec 2 Go de RAM, l'échange est à peine utilisé, 200 Mo déchargés, il y a la valeur maximale que j'ai vue
vava
@vava: Vous avez peut-être raison, j'ai un peu adapté ma réponse. Mais le fait que vous ayez vu 200 Mo déchargés sur votre swap confirme mon argument.
0x89