Dodanie przestrzeni wymiany (swap) do serwera to doskonały sposób na skompensowanie błędów braku pamięci. Linux pozwala użytkownikom dodać przestrzeń wymiany w systemie, gdy pamięć RAM jest w pełni wykorzystana. Tworząc dedykowaną partycję, umożliwiasz płynne działanie pamięci fizycznej bez martwienia się o brak miejsca na dysku.
Przegląd pamięci Swap
Przestrzeń swap w systemie Linux to część pamięci wirtualnej używanej, gdy kończy się miejsce w pamięci fizycznej. Szczególnie podczas pracy z dużym programem lub aplikacją, gdy pojawia się zapotrzebowanie na dodatkową pamięć, przestrzeń swap jest idealnym wyborem do tymczasowego przechowywania nieaktywnych stron pamięci. Utworzenie przestrzeni swap pozwala użytkownikom na przechowywanie danych podczas działania dużych programów, co zmniejsza liczbę awarii aplikacji. Oznacza to, że jeśli system potrzebuje więcej zasobów pamięci, a pamięć RAM jest pełna, wszystkie nieaktywne strony w pamięci są przenoszone do przestrzeni swap, a programy mogą działać bez zakłóceń.
Jakiej ilości pamięci Swap potrzebuję?
Ilość przestrzeni swap zależy od kilku czynników. Należą do nich dostępna pamięć RAM, obciążenie systemu oraz to, czy system musi obsługiwać funkcję hibernacji (suspend-to-disk). Zapoznaj się z poniższą tabelą, aby sprawdzić zalecaną przestrzeń swap na podstawie dostępnej pamięci RAM:
|
Lp. |
Dostępna pamięć RAM |
Zalecana przestrzeń Swap |
|
1. |
1GB |
1GB |
|
2. |
2GB |
1GB |
|
3. |
3GB |
2GB |
|
4. |
4GB |
2GB |
|
5. |
5GB |
2GB |
|
6. |
6GB |
2GB |
|
7. |
8GB |
3GB |
W tym poradniku przeprowadzimy Cię przez kroki dodawania przestrzeni swap w systemie Ubuntu 20.04. Zaczynajmy!
Wymagania wstępne
Aby przejść przez ten poradnik, będziesz potrzebować:
- zainstalowanego systemu Ubuntu na swoim komputerze.
- Konto użytkownika niebędącego rootem skonfigurowane z uprawnieniami sudo na Twoim komputerze.
Krok 1: Sprawdzenie informacji o pamięci Swap
Rozmiar przestrzeni swap zależy od pamięci RAM systemu. Dlatego przed jej utworzeniem należy koniecznie sprawdzić dostępność przestrzeni swap w systemie. Wpisz poniższe polecenie, aby sprawdzić, czy system ma skonfigurowaną pamięć swap:
|
1 |
$ sudo swapon --show |
Wyświetlenie danych wyjściowych oznacza, że w systemie jest dostępne miejsce na utworzenie przestrzeni swap. Brak danych wyjściowych to sygnał, że nie ma wystarczającej ilości wolnego miejsca na dodanie przestrzeni swap.
Użyj narzędzia free, aby upewnić się, że nie ma aktywnej pamięci swap:
|
1 |
$ free -h |
Zobaczysz dane wyjściowe z pustym wierszem swap:
Krok 2: Sprawdzenie dostępności partycji dysku twardego
Podobnie jak w przypadku sprawdzania dostępności systemu, sprawdźmy teraz aktualne użycie dysku, aby upewnić się, że mamy wystarczająco dużo miejsca. Użyj polecenia df, aby sprawdzić dostępność partycji dysku twardego:
|
1 |
df -h |
Urządzenie z / w kolumnie Mounted on to nasz dysk, który ma 11% wolnego miejsca. Zobaczysz dane wyjściowe:
Po sprawdzeniu wymagań systemowych przejdźmy dalej i utwórzmy plik swap w naszym systemie plików.
Step 3: Create a Swap File
Aby utworzyć plik swap w naszym systemie plików, przydziel nazwę pliku jako swapfile w katalogu głównym (/) za pomocą programu fallocate. Przydzielenie rozmiaru pliku zależy od Twoich potrzeb. Aby poradnik był prosty i łatwy do zrozumienia, tworzymy plik o rozmiarze 1G i przeznaczamy 1G pamięci RAM. Użyj polecenia sudo aby utworzyć plik swap:
|
1 |
sudo fallocate -l 1G /swapfile |
Następnie wpisz to polecenie, aby zweryfikować zarezerwowane miejsce:
|
1 |
$ ls -lh /swapfile |
Skoro utworzyliśmy już przestrzeń swap w naszym systemie, w następnym kroku ją włączmy.
Krok 4: Włączenie pliku Swap
Gdy mamy już odpowiedni rozmiar, przekształćmy go w przestrzeń swap. Ze względów bezpieczeństwa kluczowe jest, aby nasz plik był dostępny dla użytkowników root i zabezpieczony przed dostępem zwykłych użytkowników. Dodamy ograniczenia, aby użytkownicy z uprawnieniami root mogli przeglądać plik i czytać jego zawartość. Użyj następującego polecenia root, aby plik był dostępny wyłącznie dla użytkowników root :
|
1 |
sudo chmod 600 /swapfile |
Następnie użyj polecenia ls, aby zweryfikować zmiany:
|
1 |
$ ls -lh /swapfile |
Jak widać, tylko użytkownik root ma włączone flagi odczytu i zapisu:
Następnie oznacz plik jako przestrzeń swap:
|
1 |
sudo mkswap /swapfile |
Zobaczysz dane wyjściowe:
Następnie włącz plik swap i zezwól naszemu systemowi na rozpoczęcie korzystania z niego:
|
1 |
sudo swapon /swapfile |
Następnie zweryfikuj dostępność przestrzeni swap:
|
1 |
$ sudo swapon --show |
Zobaczysz następujący wynik:
Tak jak zrobiliśmy to w Kroku 1, sprawdzimy ponownie przestrzeń narzędzia free jeszcze raz:
|
1 |
free -h |
Zobaczysz następujący wynik:
Nasza przestrzeń swap została pomyślnie skonfigurowana i nasz system operacyjny zacznie z niej korzystać w razie potrzeby. W następnym kroku sprawimy, że plik swap będzie trwały.
Krok 5: Uczynienie pliku swap trwałym
Domyślnie serwer nie zachowa automatycznie ustawień swap po ponownym uruchomieniu. Aby zmienić domyślne ustawienia i postępować bezpiecznie, dodamy plik swap do naszego pliku /etc/fstab. Użyj polecenia sudo, aby utworzyć kopię zapasową pliku /etc/fstab:
|
1 |
sudo cp /etc/fstab /etc/fstab.bak |
Następnie dodaj informacje o pliku swap na końcu swojego pliku /etc/fstab, wpisując:
|
1 |
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab |
Następnie przeanalizujmy niektóre ustawienia i wprowadźmy modyfikacje, aby dostroić naszą przestrzeń swap.
Krok 6: Modyfikacja ustawień swap
W tym kroku skonfigurujemy ustawienia i wprowadzimy pewne modyfikacje. Dostosujmy właściwość swappiness i zmieńmy nacisk na pamięć podręczną.
-
Dostosowanie właściwości Swappiness
Parametr swappiness jest konfigurowalnym parametrem jądra. Zmienia on równowagę między przenoszeniem pamięci operacyjnej do przestrzeni wymiany a wymianą danych z pamięci RAM do przestrzeni swap. Ta wartość parametryczna jest wyrażona w procentach, w zakresie od 0 do 100.
Wartość vm.swappiness ma bezpośredni wpływ na zachowanie swappiness systemu. Im wyższa wartość vm.swappiness, tym częściej system będzie korzystał ze swapu i na odwrót. Jeśli wartość jest bliska zeru, jądro nie będzie przenosić danych do pamięci wymiany, co może prowadzić do spadku wydajności. Pozwolenie systemowi na mniejsze poleganie na swapie to doskonały sposób na zwiększenie jego wydajności i uzyskanie szybkiej reakcji.
Alternatywnie, wartość vm.swappiness zbliżona do 100 próbuje umieścić więcej danych w swapie, a mniej w pamięci fizycznej. W przeciwieństwie do niskiej lub średniej wartości vm.swappiness, intensywne korzystanie ze swapu przez system ma bardzo niepożądane skutki, gdy duże ilości danych są aktywnie przenoszone do i z pamięci RAM.
Sprawdź aktualną wartość swappiness, wpisując:
|
1 |
cat /proc/sys/vm/swappiness |
Zobaczysz następujący wynik:
Możesz również ustawić wybraną wartość swappiness za pomocą polecenia sysctl. Ustawmy wartość swappiness na 15, wpisując:
|
1 |
sudo sysctl vm.swappiness = 15 |
Zobaczysz następujący wynik:
Dopóki system nie zostanie uruchomiony ponownie, ustawienia pozostaną bez zmian. Dodaj linię do naszego pliku /etc/sysctl.conf , aby wartość była ustawiana automatycznie przy ponownym uruchomieniu:
|
1 |
sudo nano /etc/sysctl.conf |
Możesz dodać następujący kod na samym dole:
|
1 |
Vm.swappiness = 15 |
Następnie zapisz i zamknij plik.
-
Dostosowanie parametru Cache Pressure
Następnie zmodyfikujemy vfs_cache_pressure, co wpłynie na zachowanie informacji o inode oraz dentry w stosunku do innych danych. Te vfs_cache_pressure ustawienia również kontrolują skłonność jądra do odzyskiwania pamięci używanej do buforowania katalogów. Przejdź ponownie do systemu plików proc , aby sprawdzić aktualną wartość:
|
1 |
cat /proc/sys/vm/vfs_cache_pressure |
Zobaczysz następujący wynik:
Ponieważ konfiguracja została już zakończona, nasz system będzie usuwał informacje o i-węzłach (inode) z pamięci podręcznej. Ustawmy sysctl vm.vfs_cache_pressure na bardziej stabilną wartość, w ten sposób:
|
1 |
sudo sysctl vm.vfs_cache_pressure = 60 |
Zobaczysz następujący wynik:
Podobnie jak w przypadku ustawienia swappiness, tutaj również możemy zmienić konfigurację:
|
1 |
sudo nano /etc/sysctl.conf |
Na samym dole wstaw linię wskazującą nową utworzoną wartość:
|
1 |
Vm.vfs_cache_pressure = 60 |
Na koniec zapisz i zamknij plik.
Podsumowanie
Możesz dodać przestrzeń wymiany jako dedykowaną partycję swap, plik swap lub kombinację obu. Możesz utworzyć przestrzeń wymiany i czerpać korzyści z jej używania, aby bezproblemowo uruchamiać aplikacje bez martwienia się o ostrzeżenia o braku pamięci (out-of-memory). Chociaż utworzenie przestrzeni wymiany jest dodatkową zaletą w systemach z ograniczoną ilością pamięci, nie należy jej traktować jako alternatywy dla większej ilości pamięci RAM. Pamiętaj, że przestrzeń wymiany znajduje się na dysku twardym, dlatego możesz doświadczyć nieco dłuższego czasu dostępu w porównaniu z pamięcią fizyczną.
Oto więcej poradników na naszym blogu, które pomogą Ci rozpocząć pracę z serwerami Ubuntu:
- Konfiguracja montowania NFS na Ubuntu 20.04
- Instalacja Nginx na Ubuntu 18.04
- Konfiguracja zapory sieciowej z UFW na Ubuntu 18.04
Miłego korzystania!










Komentarze
Brak komentarzy. Bądź pierwszy.