Co to jest pamięć wirtualna w systemie Linux? Jak nim zarządzać
Pamięć wirtualna pomaga systemowi operacyjnemu wykonywać swoje procesy bez przerw. Oto jak możesz zarządzać pamięcią wirtualną w systemie Linux.
Pamięć wirtualna jest jedną z tych rzeczy, które leżą u 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 (zamiana partycji) podczas instalacji, ale większość początkujących nie zdaje sobie sprawy, jak przydatne jest to.
Oto wszystko, co musisz wiedzieć o pamięci wirtualnej w systemie Linux.
Co to jest pamięć wirtualna?
Pamięć wirtualna to sposób reprezentowania pamięci wyodrębnionej 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, na dysku twardym lub dysku SSD. System operacyjny postrzega te adresy jako jedną dużą pulę pamięci, znaną jako „przestrzeń adresowa”.
Pamięć wirtualna wykorzystuje fakt, że nie cała pamięć, która jest używana w teorii, 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ą „wymieniane” lub przenoszone na dysk twardy. Kiedy są potrzebne, można je „zamienić” lub przenieść z powrotem do pamięci RAM.
Miejsce używane na pamięć wirtualną na dysku jest znane jako „magazyn zapasowy” lub „przestrzeń wymiany”. W świecie Windows jest zwykle implementowany jako plik, znany jako „plik wymiany”. Można to również zrobić w Linuksie, ale znacznie częściej używa się dedykowanej partycji dysku.
Pliki wymiany w systemie Linux są zwykle zarezerwowane dla systemów minimalnych lub systemów wbudowanych, a te ostatnie często działają całkowicie bez pamięci wirtualnej, ponieważ wbudowane systemy operacyjne muszą być małe.
Rezultatem pamięci wirtualnej jest to, że możliwe jest uruchamianie dużych programów przy użyciu większej ilości pamięci niż fizyczna pamięć RAM w komputerze, podobnie jak karta kredytowa pozwala robić duże zakupy za więcej pieniędzy niż masz na koncie bankowym. Podobnie jak karta kredytowa, pamięć wirtualna jest przydatna, gdy jej potrzebujesz, ale nie chcesz nadmiernie jej używać.
Pamięć wirtualna umożliwia również programistom tworzenie aplikacji bez konieczności znajomości organizacji pamięci komputera.
Głównym minusem pamięci wirtualnej w przeszłości było to, że dyski twarde były wolniejsze niż pamięć RAM. Jeśli maszyna nie ma wystarczającej ilości pamięci RAM, system może wymieniać strony w nieskończoność. Jest to mniejszy problem na nowoczesnych komputerach z większą ilością pamięci RAM i szybszymi dyskami SSD wypierającymi mechaniczne dyski twarde, ale nadal należy o tym pamiętać.
Linuxowe partycje wymiany
Jak wspomniano wcześniej, zwykłą metodą konfigurowania pamięci wirtualnej w systemie Linux jest użycie dedykowanej partycji dysku. Narzędzie instalacyjne sprawdzi sprzęt i zaproponuje schemat partycjonowania obejmujący partycję wymiany.
Możesz także dodać partycje wymiany po instalacji. Jeśli chcesz dodać nową partycję do istniejącego dysku, musisz użyć nieniszczącego narzędzia do partycjonowania, takiego jak GParted. Upewnij się, że wybrałeś „Linux swap” jako system plików dla twojej partycji.
Wykonaj kopię zapasową ważnych danych przed zmianą partycji na dysku.
Po utworzeniu partycji użyj polecenia mkswap, aby sformatować partycję.
sudo mkswap /dev/sdXTeraz będziesz musiał edytować swój /etc/fstab jako root, aby dodać partycję wymiany. Ten wiersz, dodany do pliku, skonfiguruje partycję wymiany do zamontowania podczas uruchamiania:
/dev/sdX none swap defaults 0 0Teraz użyj polecenia swapon, aby aktywować nową przestrzeń wymiany, gdzie sdX to nazwa twojej partycji wymiany:
sudo swapon /dev/sdXUżywanie plików wymiany w systemie Linux
Łatwo jest skonfigurować plik wymiany w systemie Linux za pomocą wiersza poleceń. Możesz to zrobić, jeśli nie chcesz zawracać sobie głowy partycjonowaniem dysku lub edytowaniem /etc/fstab. Jedną z metod jest użycie fallocate:
Na przykład, aby utworzyć plik wymiany o wielkości 2 GB:
sudo fallocate -l 2G /path/to/swapfileAlternatywnie możesz użyć polecenia dd, aby utworzyć plik wymiany.
sudo dd if=/dev/zero of=/path/to/swapfile bs=1024 count=2048Upewnij się, że poprawnie używasz polecenia dd, ponieważ nieprawidłowe ustawienie pliku wejściowego i wyjściowego może spowodować utratę danych. Z tego powodu preferowaną metodą jest fallocate.
Urządzenie /dev/zero to specjalne urządzenie, które zwraca „0”. To polecenie dd tworzy pusty dwugigabajtowy plik blokowy przy użyciu bloków 1024-kilobajtowych odpowiednich do wykorzystania jako przestrzeń wymiany.
Następnie możesz użyć poleceń mkswap i swapon z plikiem wymiany, tak jak z partycją wymiany:
sudo mkswap /path/to/swapfile
sudo swapon /path/to/swapfile
Możesz się zastanawiać, kiedy powinieneś użyć pliku wymiany lub dedykowanej partycji dla swojej przestrzeni wymiany. Wybór jest prosty: w większości przypadków należy użyć partycji. To najlepszy wybór dla komputera stacjonarnego lub serwera z systemem Linux. Schemat partycji sugerowany przez instalator jest zwykle odpowiedni na pulpicie z systemem Linux dla jednego użytkownika.
Możesz chcieć 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 miejsca na wymianę?
Od wielu lat standardową wskazówką dotyczącą potrzebnej przestrzeni wymiany jest dwukrotność fizycznej pamięci RAM. Przy dużych dyskach i ilości pamięci, w które wyposażone są nawet najtańsze komputery, ta zasada może zostać podważona.
W wielu systemach, jeśli zaznaczysz top lub htop, możesz nawet zauważyć, że przestrzeń wymiany nie jest w ogóle używana, jeśli skonfigurujesz system w ten sposób.
Mimo to dwukrotna pamięć fizyczna to dobry punkt wyjścia i polisa ubezpieczeniowa, jeśli stawiasz większe wymagania 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 ciągle się włączać i wyłączać, proces znany jako rzucanie, przez co wydaje się, że nie odpowiada. Jeśli nadal masz mechaniczny dysk twardy, często słyszysz, że ma on ciągły dostęp.
W dzisiejszych czasach jest to o wiele 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ć.
Najłatwiejszym sposobem rozwiązania tego problemu jest dodanie większej ilości pamięci RAM do komputera. Jeśli nie jest to możliwe, możesz spróbować dostosować „zamiana” jądra Linuksa.
Liczba wymiany określa, jak bardzo jądro zanurza się w pamięci wirtualnej. Mieści się w zakresie od 0 do 100. Ustawienie go na 0 oznacza, że Linux w ogóle nie będzie wymieniał, podczas gdy przy 100 będzie wymieniał przy każdej okazji. Wartość domyślna w większości systemów to 60.
Aby tymczasowo zmienić zamianę, użyj polecenia sysctl:
sudo sysctl vm.swappiness=20„20” w tym poleceniu będzie liczbą wymiany do momentu ponownego uruchomienia. Aby zmienić go na stałe, edytuj plik /etc/sysctl.conf jako root i umieść wiersz „vm.swappiness=[numer wymiany]”, gdzie „[numer wymiany]” to numer wymiany chcesz. Będzie to przerwa, dopóki nie będziesz mógł zainstalować więcej pamięci RAM.
Pamięć wirtualna zapewnia płynne działanie systemu Linux
Pamięć wirtualna jest składnikiem nowoczesnych systemów operacyjnych, w tym Linuksa, który zapewnia płynne działanie komputera. Możesz użyć pliku wymiany, ale zwykłą metodą jest dedykowana partycja. Nie musisz tak dużo o tym myśleć, ale partycje wymiany systemu Linux i pliki wymiany są łatwe do skonfigurowania i rozwiązywania problemów.
Wiele z tych porad ma również zastosowanie do innych systemów, w tym Windows, nawet jeśli metody konfigurowania pamięci wirtualnej są różne.


