Pamięć wirtualna jest jedną z tych rzeczy, które stanowią podstawę nowoczesnych systemów operacyjnych, ale zwykle tak naprawdę nie myślisz o tym, chyba że masz problem. Dystrybucje Linuksa proszą o skonfigurowanie przestrzeni pamięci wirtualnej (zamień partycje) podczas instalacji, ale większość początkujących nie zdaje sobie sprawy, jak bardzo jest to przydatne.

Oto wszystko, co musisz wiedzieć o pamięci wirtualnej w systemie Linux.

Co to jest pamięć wirtualna?

Pamięć wirtualna to sposób przedstawiania pamięci, która jest wyabstrahowana z pamięci fizycznej na komputerze. Wykorzystuje zarówno pamięć RAM, jak i przestrzeń dyskową, niezależnie od tego, czy jest to tradycyjny dysk twardy, czy dysk SSD.

W Linuksie odbywa się to na poziomie jądra i sprzętu. Procesor ma element sprzętowy zwany jednostką zarządzania pamięcią (MMU), który tłumaczy adresy pamięci fizycznej na adresy wirtualne. Adresy te są niezależne od tego, gdzie fizycznie znajdują się na komputerze. Te przestrzenie adresowe są znane jako „strony” i mogą znajdować się w pamięci RAM lub na dysku twardym lub SSD. System operacyjny widzi te adresy jako jedną dużą pulę pamięci, znaną jako „przestrzeń adresowa”.

Pamięć wirtualna wykorzystuje fakt, że nie cała pamięć używana teoretycznie jest używana przez cały czas. Programy w pamięci są dzielone na strony, a części, które jądro uważa za niepotrzebne, są „zamieniane” lub przenoszone na dysk twardy. Kiedy są potrzebne, można je „zamienić” lub przywrócić do pamięci RAM.

Miejsce używane przez pamięć wirtualną na dysku jest znane jako „magazyn zapasowy” lub „przestrzeń wymiany”. W świecie Windows to zwykle realizowane jako plik, znany jako „plik wymiany”. Można to również zrobić w Linuksie, ale jest to znacznie bardziej powszechne do użyj dedykowanej partycji dyskowej.

Pliki wymiany w systemie Linux są zwykle zarezerwowane dla minimalnych lub wbudowanych systemów i często te ostatnie działają całkowicie bez pamięci wirtualnej, ponieważ wbudowane systemy operacyjne muszą być małe.

W rezultacie pamięć wirtualna jest taka, że ​​można uruchamiać duże programy, używając więcej pamięci niż fizyczna pamięć RAM w Twój komputer, podobnie jak karta kredytowa, która umożliwia dokonywanie dużych zakupów za więcej pieniędzy niż masz w banku rachunek. Podobnie jak karta kredytowa, pamięć wirtualna jest przydatna, gdy jej potrzebujesz, ale nie chcesz jej nadmiernie wykorzystywać.

Pamięć wirtualna umożliwia również programistom tworzenie aplikacji bez konieczności znajomości organizacji pamięci komputera.

Główną wadą pamięci wirtualnej w historii było to, że dyski twarde były wolniejsze niż pamięć RAM. Jeśli komputer nie ma wystarczającej ilości pamięci RAM, system może bez końca wymieniać strony, co jest znane jako „thrashing”. To jest mniejszy problem na nowoczesnych komputerach z większą ilością pamięci RAM i szybszymi dyskami SSD zastępującymi mechaniczne dyski twarde, ale nadal należy o tym pamiętać z.

Partycje wymiany systemu Linux

Jak wspomniano wcześniej, typową metodą konfigurowania pamięci wirtualnej w systemie Linux jest użycie dedykowanej partycji dysku. Narzędzie instalacyjne sprawdzi twój sprzęt i zaproponuje schemat partycjonowania, który zawiera partycję wymiany.

Możesz także dodać partycje wymiany po instalacji. Jeśli chcesz dodać nową partycję do istniejącego dysku, musisz użyj nieniszczącego narzędzia do partycjonowania jak GParted. Upewnij się, że wybrałeś "Linux swap" jako system plików dla swojej partycji.

Utwórz kopię zapasową ważnych danych przed ponownym partycjonowaniem dysku.

Po utworzeniu partycji użyj polecenia mkswap, aby sformatować partycję.

sudo mkswap /dev/sdX

Teraz musisz edytować swój /etc/fstab jako root, aby dodać partycję wymiany. Ta linia, dodana do pliku, skonfiguruje partycję wymiany, która zostanie zamontowana podczas rozruchu:

/dev/sdX brak swap wartości domyślne 0 0

Teraz użyj zamiana polecenie, aby aktywować nową przestrzeń wymiany, gdzie sdX jest nazwą partycji wymiany:

sudo swapon /dev/sdX

Korzystanie z plików wymiany w systemie Linux

Łatwo jest skonfiguruj plik wymiany w systemie Linux za pomocą wiersza poleceń. Możesz to zrobić, jeśli nie chcesz zawracać sobie głowy ponownym partycjonowaniem dysku lub edycją /etc/fstab. Jedną z metod jest użycie oszukać:

Na przykład, aby utworzyć plik wymiany 2 GB:

sudo fallocate -l 2G /ścieżka/do/pliku wymiany

Alternatywnie możesz użyć polecenia dd do utworzenia pliku wymiany.

sudo dd jeśli=/dev/zero z=/path/do/zamień plik bs=1024 liczba=2048

Upewnij się, że poprawnie używasz polecenia dd, ponieważ błędne błędny plik wejściowy i wyjściowy może spowodować utratę danych. Z tego powodu preferowaną metodą jest fallocate.

The /dev/zero device to specjalne urządzenie, które wypisuje „0”. To, co robi to polecenie dd, to utworzenie pustego dwugigabajtowego pliku blokowego przy użyciu 1024-kilobajtowych bloków odpowiednich do wykorzystania jako przestrzeń wymiany.

Następnie możesz użyć mkswap oraz zamiana polecenia z plikiem wymiany, tak jak z partycją wymiany:

sudo mkswap /ścieżka/do/pliku wymiany
sudo swapon /ścieżka/do/pliku wymiany

Możesz się zastanawiać, kiedy powinieneś użyć pliku wymiany, czy dedykowanej partycji dla swojej przestrzeni wymiany. Wybór jest prosty: w większości przypadków powinieneś użyć partycji. Jest to najlepszy wybór dla komputera stacjonarnego lub serwera z systemem Linux. Schemat partycji sugerowany przez instalatora jest zwykle odpowiedni na jednostanowiskowym pulpicie systemu Linux.

Możesz użyć pliku wymiany, jeśli używasz Linuksa na maszynie wirtualnej, na małym systemie wbudowanym lub po prostu nie chcesz ponownie partycjonować istniejącego systemu Linux.

Ile przestrzeni wymiany?

Przez wiele lat standardową wskazówką dotyczącą potrzebnej przestrzeni wymiany jest dwukrotność fizycznej pamięci RAM. Przy dużych dyskach i ilości pamięci, które są wyposażone w nawet najtańsze komputery, ta zasada może zostać zakwestionowana.

W wielu systemach, jeśli zaznaczysz top lub htop, możesz nawet zauważyć, że twoja przestrzeń wymiany w ogóle nie jest używana, jeśli skonfigurujesz system w ten sposób.

Mimo to, podwójna pamięć fizyczna jest dobrym punktem wyjścia i polisą ubezpieczeniową, jeśli masz większe wymagania dotyczące pamięci. W razie potrzeby możesz wprowadzić zmiany w swoim systemie. Jeśli system wykorzystuje całą pamięć RAM, komputer może napotkać problemy z wydajnością podczas korzystania z pamięci wirtualnej.

Komputer może się przełączać i wyłączać, co jest procesem znanym jako thrashing, przez co wydaje się, że nie odpowiada. Jeśli nadal masz mechaniczny dysk twardy, często możesz usłyszeć, jak ma on ciągły dostęp.

W dzisiejszych czasach jest to znacznie mniejszy problem, ponieważ ilość pamięci RAM nawet w najtańszych komputerach jest więcej niż wystarczająca, a prędkość dysków SSD jest znacznie większa niż w przypadku starych dysków twardych. To wciąż coś, o czym powinieneś wiedzieć.

Najprostszym sposobem, aby to naprawić, jest po prostu dodanie większej ilości pamięci RAM do komputera. Jeśli nie jest to możliwe, możesz spróbować dostosować „podmianę” jądra Linuksa.

Liczba swappiness określa, jak bardzo jądro zanurza się w pamięci wirtualnej. Waha się od 0 do 100. Ustawienie na 0 oznacza, że ​​Linux w ogóle się nie zamieni, podczas gdy przy 100 będzie zamieniał się przy każdej okazji. Wartość domyślna w większości systemów to 60.

Aby tymczasowo zmienić swappiness, użyj polecenia sysctl:

sudo sysctl vm.swappiness=20

„20” w tym poleceniu będzie numerem wymiany do momentu ponownego uruchomienia. Aby zmienić to na stałe, edytuj /etc/sysctl.conf plik jako root i umieść wiersz "vm.swappiness=[numer zamiany]", gdzie "[numer zamiany]" jest żądanym numerem zamiany. To będzie prowizorka, dopóki nie będziesz mógł zainstalować więcej pamięci RAM.

Pamięć wirtualna zapewnia płynne działanie systemu Linux

Pamięć wirtualna to składnik nowoczesnych systemów operacyjnych, w tym Linux, który zapewnia płynną pracę komputera. Możesz użyć pliku wymiany, ale zwykłą metodą jest dedykowana partycja. Nie musisz o tym myśleć tak dużo, ale partycje wymiany i pliki wymiany Linuksa są łatwe do skonfigurowania i rozwiązywania problemów.

Wiele z tych porad dotyczy również innych systemów, w tym Windows, nawet jeśli metody konfigurowania pamięci wirtualnej są różne.