Dlaczego Linux używa partycji wymiany zamiast pliku?


32

Wydaje mi się, że plik wymiany jest bardziej elastyczny.


1
Możesz użyć pliku wymiany w systemie Linux. Robię to teraz na wielu komputerach. Nie używam jednak nic specjalnego, tylko ext4 lub ext4 na LVM. Bez szyfrowania lub czegokolwiek skomplikowanego. Zawieszenie i hibernacja działały dla mnie świetnie, nawet na moim komputerze NVMe.
Cory T

Odpowiedzi:


32

Plik wymiany jest bardziej elastyczny, ale także bardziej zawodny niż partycja wymiany. Błąd systemu plików może uszkodzić plik wymiany. Plik wymiany może być uciążliwy dla administratora, ponieważ nie można go przenieść ani usunąć. Plik wymiany nie może być używany do hibernacji. Plik wymiany był w przeszłości nieco wolniejszy, choć obecnie różnica jest znikoma.

Zaletą pliku wymiany jest brak konieczności wcześniejszego decydowania o rozmiarze. Jednak w systemie Linux nadal nie można zmienić rozmiaru pliku wymiany online: należy go wyrejestrować, zmienić rozmiar, a następnie ponownie zarejestrować (lub utworzyć inny plik i usunąć stary). Więc nie ma tak dużych korzyści z pliku wymiany w systemie Linux, w porównaniu do partycji wymiany. Jest to szczególnie przydatne, gdy potrzebujesz tymczasowo więcej pamięci wirtualnej, a nie jako stałe urządzenie.


4
w przeszłości występowała również korzyść z wydajności. Ale myślę, że to się skończyło, kiedy pojawiło się 2.6.
ksenoterracid,

Wygląda na to, że tak naprawdę nie odpowiada na pytanie. A może coś mi brakuje? Odpowiedź mówi tylko o plikach wymiany i w ogóle nie wspomina o partycjach. @Gilles był taki celowy, czy popełniłeś literówkę?
Gabe.

1
@ gabe: Dyskutowałem o plikach wymiany w porównaniu z partycjami. Mam nadzieję, że teraz jest to wyraźniejsze.
Gilles 'SO - przestań być zły'

1
Wskazuję tutaj moje komentarze w odpowiedzi Penz. Postrzegana utrata wydajności w plikach wymiany wywołana fs jest dyskusyjna.
ata

2
Według Wiki Pomocy społeczności Ubuntu help.ubuntu.com/community/SwapFaq Do hibernacji potrzebna jest partycja wymiany. Cytat: „Nie można użyć pliku wymiany w aktywnym systemie plików.”. Jeśli chodzi o wydajność, wydaje się, że nie ma różnicy, chyba że plik jest rzadki. serverfault.com/questions/25653/…
Erik Sjölund

28

Preferowana jest partycja wymiany, ponieważ pozwala uniknąć zależności od systemu plików, gdy wszystko, czego potrzebujesz, to adresowalna pula pamięci.

Ale nic nie stoi na przeszkodzie, aby użyć pliku wymiany zamiast partycji wymiany lub oprócz partycji wymiany.

  • Utwórz plik:

    dd if=/dev/zero of=/extraswap bs=1M count=512
    
  • Zainicjuj zawartość pliku:

    mkswap /extraswap
    
  • Użyj tego:

    swapon /extraswap
    
  • Sprawdź, czy zadziałało:

    free -m
    

Aby zacząć korzystać z pliku wymiany zawsze podczas uruchamiania, edytuj plik / etc / fstab i dodaj

/extraswap           swap          swap    defaults    0 0

[1] http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/s1-swap-adding.html


5
Przydatny alias Używam od zawsze, aby pozwolić mi wpisać moreswapterminal, jeśli nagle potrzebuję dodatkowej przestrzeni wymiany:alias moreswap='swapfile=`mktemp /tmp/swapXXXX` && sudo touch $swapfile && sudo dd bs=512 count=1M if=/dev/zero | tee $swapfile | pv -s 512M && sudo mkswap $swapfile && sudo swapon $swapfile'
Michael Mrozek

to dobra informacja, ale nie odpowiada na pytanie.
lesmana

6
Ponadto bit narzutu systemu plików jest niepoprawny. W przeciwieństwie do powszechnego przekonania, korzystanie z plików wymiany nie wiąże się z żadnymi kosztami. Andrew Morton podaje tutaj proste wyjaśnienie . Jest to jeden z powodów, dla których użycie dynamicznego menedżera wymiany opartego na plikach wymiany, takiego jak demon swapspace, jest dobrym rozwiązaniem, jeśli jest dobrze skonfigurowane.
ata

Dodajmy, że podejście do pliku wymiany może być Twoją jedyną opcją, gdy pracujesz w chmurze.
sorin,

1

Być może głównym powodem jest to, że główne jądro zawieszenia na dysk nie działa z plikami wymiany. Na przykład instrukcje wiki Debiana są instalowane, uswsuspjeśli jest to potrzebne.

Ostatnio pliki wymiany nie działają, jeśli jest to system plików btrfs, więc najłatwiej jest, aby dystrybucje zawsze tworzyły swap jako partycję.

Jest niejasno wspomniane, że użycie pliku do wymiany miało potencjalnie niższą wydajność niż partycja, przed wersją jądra 2.6. https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15


1

Dla kompletności dodam własną odpowiedź:

Jak powiedział @Gilles, pliku wymiany nie można użyć do hibernacji. Podczas korzystania z pliku wymiany system musi zlokalizować nagłówek pliku wymiany, ale w tym celu należy zainstalować system plików zawierający plik wymiany, a także system plików z kronikowaniem - np. Ext3, ext4 i zasadniczo wszystkie nowoczesne systemy plików używane przez system Linux - nie można zamontować podczas wznawiania z dysku. (W rzeczywistości istnieją na to sposoby, ale dość kłopotliwe.)

Źródło: https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt


0

Myślę, że dzieje się tak głównie dlatego, że czas dostępu do danych znajdujących się na partycji jest krótszy. Plik wymiany ma na celu pomóc administratorowi sys, gdy naprawdę brakuje mu pamięci RAM i musi wykonywać ogromne operacje, które mogą spowodować awarię jego systemu. W takim przypadku sporadycznie tworzy pliki wymiany w razie potrzeby.

Ale i tak możesz mieć ich obu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.