Czy mogę hibernować Linuksa bez partycji wymiany?

30

Nie skonfigurowałem partycji wymiany na moim komputerze, ponieważ a) mam dużo pamięci RAM (8 GB) ib) mam duże dyski twarde, których nie chciałem siekać na małe kawałki, więc moje najmniejsze partycje to 50 GiB, a ja już używam tych dla systemów operacyjnych.

Teraz, aby przejść w stan hibernacji, mój Linux (Ubuntu Jaunty) wymagał wymiany. Miałem zapasową partycję 100 GB, więc skonfigurowałem ją jako swap, ale nie jestem z tego zadowolony. Jest zawsze używany tylko do hibernacji (zawsze jest dużo wolnej pamięci RAM, a system nigdy nie zamienia się), a także jest trochę duży do wymiany. Ponadto w końcu będę go potrzebować do czegoś innego.

Jak mogę hibernować (zawiesić na dysk) bez partycji wymiany w Ubuntu Jaunty?

Hanno Fietz
źródło
3
Oto oficjalny przewodnik od Debiana o hibernacji bez zamiany: wiki.debian.org/Hibernation/Hibernate_Without_Swap_Partition
Francesco
Nawet jeśli masz dużo pamięci RAM, zamiana nadal może ci pomóc zwiększyć wydajność, gdy do buforowania danych wykorzystywana jest przestrzeń nieużywanego (a zatem zamienionego) kodu aplikacji.
Michael Schmid

Odpowiedzi:

23

Niesprawdzony pomysł: dlaczego nie utworzysz opakowania dla żadnego z s2diskprogramów narzędziowych zawieszających się na dysku, który zarządza plikiem wymiany (w przeciwieństwie do partycji wymiany) i usuwa go po wznowieniu?

  • Utwórz plik wymiany: dd if=/dev/zero of=/swapfile bs=1024 count=8388608(8 GB)
  • Skonfiguruj plik wymiany: mkswap /swapfile
  • Tylko wtedy, gdy musisz ustawić zawieszenie, możesz go aktywować: swapon /swapfile
  • Po wznowieniu możesz go wyłączyć: swapoff /swapfile

Wznowienie z plików wymiany jest możliwe i jest udokumentowane na kernel.org

Robert Munteanu
źródło
Pomyślałem także o pliku wymiany, ale nie wiem, jak przekazać go do jądra podczas uruchamiania. Czy mogę po prostu zrobić „resume = / path / to / file” tak jak w przypadku urządzenia blokowego?
Hanno Fietz
Zobacz moją aktualizację z linkiem do dokumentacji dotyczącej wznawiania z plików wymiany.
Robert Munteanu,
8
Plz, dodaj polecenie chmod 0600 /swapfile. Plik wymiany, który można odczytać na całym świecie, jest ogromną podatnością na zagrożenia lokalne.
user4035
2
I kwow to jest stare, ale użyłbym „obcinania” zamiast „dd”. Nie ma potrzeby zapisywania niczego na dysku.
Guido
4
W rzeczywistości musisz zapisać sekwencję czegoś na dysku, tworząc plik z wynikami obcinania swapon: /swapfile: skipping - it appears to have holes..
hlovdal
9

Prawdopodobnie masz tutaj dwa sposoby,

  1. Rozważ plik wymiany zamiast partycji wymiany
    • Używanie małej (w porównaniu do rozmiarów partycji, ale wystarczająco dużej dla pamięci) pamięci USB do partycji wymiany

Cokolwiek zrobisz, myślę, że a swapoffi swaponpo CV byłoby przydatne.
A ponieważ tak naprawdę nie potrzebujesz wymiany, możesz ją zostawić swapoffpo wznowieniu.

Aktualizacja: komentarz ma sens w przypadku powolnej hibernacji USB.
Sprawdź więc w kolejności numerowanej - pierwszy schemat zawiera uwagi dotyczące hibernacji przy użyciu plików wymiany.


Z ciekawości
chciałbym wiedzieć, dlaczego chcesz hibernować, kiedy Linux, taki jak Ubuntu, może się zamknąć i uruchomić tak szybko.
Zgaduję,

  • ładujesz RAM 8GB z niektórymi aplikacjami i zostawiasz je tam
  • lub Wake-up-on-LAN

Ale czy to tak naprawdę? lub czy masz jakiś inny powód do hibernacji?

Używam Ubuntu do rozruchu USB i zawsze się wyłączam.

nik
źródło
2
Zawieszenie do pamięci flash USB byłoby takie wolne .
Tadeusz A. Kadłubowski,
6
Mam tendencję do otwierania wielu rzeczy podczas pracy i lubię mieć to wszystko tak, jak było następnego dnia. Ubuntu szybko się uruchamia (właściwie wydaje mi się, że jest szybsze niż wznawianie), ale Eclipse, Firefox itp. Mogą nie być, a inne aplikacje mogą nawet nie zapisać swojego obecnego stanu podczas zamykania.
Hanno Fietz
2
@ Hanno, Firefox pozwala także zapisywać sesje aż do pozycji przewijania. A więc Save-and-Quite jest świetny. Nie jestem pewien, co potrafi Eclipse.
nik
3
Firefox nie pamięta, w jakim obszarze roboczym było każde z jego okien, więc niewielka PITA polega na konieczności redystrybucji ich z powrotem na miejsce po odczekaniu, aż wszystkie się załadują. Nie ma również sposobu na przywrócenie stanu rzeczy, takich jak okna terminali.
intuicyjnie
Hibernacja pełnego 8 GB pamięci zajmie mniej niż minutę dzięki tej pamięci flash USB .
intuicyjnie
4

Tak, ale nie bez wysiłku. Istnieją 2 różne sposoby hibernacji (zawieszenia na dysk) w systemie Linux:

  1. swswap , który jest zawarty w jądrze
  2. tuxonice (wcześniej zawiesić2), co nie jest.

Tuxonice jest dostępny jako łatka do jądra i pozwoli ci zapisać obraz zawieszenia do zwykłego pliku.

Z Wikipedii :

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.

Ponieważ nie ma go w domyślnym jądrze, niestety musisz pobrać łaty jądra dostępne dla Jaunty i sam skompilować jądro.

Jest tutaj kilka rozszerzonych instrukcji , ale możesz wypróbować sugestię Roberta przed wędrówką tą drogą, chyba że jesteś starą ręką w tworzeniu własnych obrazów jądra.

nagul
źródło
2
No cóż, przerzuciłem wiele jąder (od kilku lat jestem entuzjastą Gentoo), ale był powód, dla którego przeniosłem się na Ubuntu ...;)
Hanno Fietz
3

Jak rozmawiali Joel i Jeff w podcastie , wyłączenie wymiany nie jest na ogół dobrym pomysłem - nawet jeśli byłoby to tego warte (a nie jest) - miejsce na dysku jest tak niesamowicie tanie, że pozostawienie go włączone nie kosztuje cię byle co. Możesz dostać koncert za mniej niż dziesięć centów (to znaczy eurocentów)!

cytować:

Atwood: Myślę, że każdy maniak w pewnym momencie przechodzi przez ten proces myślowy: mam mnóstwo pamięci, może uda mi się odwrócić plik strony. Mam blog na ten temat. ... Punktem zwrotnym jest: nigdy nie warto.

Słuchaj podcastu, aby uzyskać więcej rozmowy (zaczyna się mniej więcej w 59 minucie), lub przeczytaj pytanie o błędzie serwera, do którego link znajduje się na stronie podcastu (pytanie 23621). Mówią o pliku stronicowania Windows, ale argument jest równie poprawny dla UNIX (chociaż mogą zarządzać pamięcią w inny sposób).

0x89
źródło
1
Cóż, nie mam nic przeciwko włączeniu wymiany, w rzeczywistości moja obecna konfiguracja używa tej wolnej partycji 100 gig jako swap. Mam jednak na myśli partycję wymiany . Wymiana 100 gig to po prostu bzdura i nie chcę mieć małej partycji tylko do wymiany. Plik wymiany jest dla mnie świetny, dzięki odpowiedziom Roberta i Nicka, teraz również wiem, jak ich używać do hibernacji, więc wykorzystam to.
Hanno Fietz
4
Na czym polega problem z „małą” partycją? Btw. W ogóle nie uważałbym partycji 8 GB za małą - od lat korzystam z instalacji linuxa na mniejszej partycji / partiton. Pierwszy komputer, którego użyłem, miał dysk twardy o pojemności 20 MB.
0x89
1
W rzeczywistości Linux zarządza pamięcią w zupełnie inny sposób niż Windows. Nawet na moim starym laptopie z 2 GB pamięci RAM jest ledwo używany, 200 MB rozładowane jest maksymalna wartość, jaką widziałem
vava
@vava: Być może masz rację, dostosowałem trochę swoją odpowiedź. Ale fakt, że widziałeś
200 MB odciążonych na swapie, w