Swap to miejsce na dysku, do którego system przenosi dane z RAM, gdy pamięci zaczyna brakować. Dodasz go w kilka minut, a dzięki niemu VPS nie zawiesi się przy krótkim skoku zużycia. Pokażemy też, kiedy swap nie pomaga i potrzebujesz więcej RAM.
Czego potrzebujesz
- VPS w StormHost z Ubuntu 24.04 lub Debianem 13
- Połączenie SSH jako root (poradnik)
- Wolne miejsce na dysku co najmniej wielkości swapu (sprawdź przez
df -h /) - Około 10 minut
Czym jest swap i kiedy pomaga#
Gdy RAM się kończy, a swapu nie ma, jądro Linuxa uruchamia OOM killer („out of memory”) i zabija proces zajmujący najwięcej pamięci. Zwykle jest to dokładnie Twoja baza danych, serwer gier lub aplikacja. W logu znajdziesz wtedy Out of memory: Killed process.
Ze swapem system najpierw przenosi rzadko używane dane na dysk, a proces działa dalej.
| Sytuacja | Czy swap pomaga? |
|---|---|
| Krótki skok (aktualizacje, kompilacja, kopia zapasowa) | Tak, VPS przetrwa go bez awarii. |
| Dane wczytane raz i potem leżące bezczynnie (część pamięci bazy danych, nieużywane usługi) | Tak, zwalnia RAM na to, co ważne. |
| Aplikacja stale potrzebuje więcej RAM, niż ma VPS | Nie. Dysk jest wielokrotnie wolniejszy od RAM, więc aplikacja zwalnia. Rozwiązaniem jest upgrade RAM. |
| Serwer gier (Minecraft, Rust) z pełną pamięcią | Nie. Serwer zaczyna lagować. Daj mu mniej pamięci albo dodaj RAM. |
Sprawdzenie bieżącego stanu#
swapon --show
free -hswapon --show– wypisuje aktywny swap. Jeśli nic nie wypisze, VPS nie ma swapu (dla nowego VPS to normalne).free -h– pokazuje zużycie RAM i swapu w czytelnych jednostkach (-h= human readable).
W wyjściu free -h obserwuj kolumnę available w linii Mem: ile pamięci naprawdę mają do dyspozycji aplikacje. Linia Swap pokazuje rozmiar i zużycie swapu.
Jak duży swap wybrać#
| RAM VPS | Zalecany swap | Dlaczego |
|---|---|---|
| 2 GB | 2 GB | Mały VPS najłatwiej dochodzi do limitu, więc rezerwa się przydaje. |
| 4–8 GB | 2–4 GB | Wystarczy na pokrycie skoków. |
| 16 GB i więcej | 2–4 GB | Większy swap nie ma sensu. Jeśli VPS naprawdę go używa, potrzebuje więcej RAM. |
Swap zajmuje miejsce na dysku, więc nie rób go niepotrzebnie dużego.
Tworzenie pliku swap#
Dotyczy zarówno Ubuntu 24.04, jak i Debiana 13. Dla przykładu utworzymy swap 2 GB w pliku /swapfile.
Utwórz plik o wymaganym rozmiarze:
bash fallocate -l 2G /swapfilefallocate– szybko rezerwuje miejsce na dysku dla pliku.-l 2G– rozmiar pliku (2G= 2 GB; dla 4 GB wpisz4G)./swapfile– ścieżka do pliku.
Ustaw uprawnienia tak, aby plik mógł czytać tylko root. Swap może zawierać fragmenty pamięci z hasłami:
bash chmod 600 /swapfile600– odczyt i zapis tylko dla właściciela (root), nic dla pozostałych.
Przygotuj plik jako swap:
bash mkswap /swapfilemkswap– zapisuje do pliku nagłówek swapu. WypisujeSetting up swapspace version 1, size = 2 GiB.
Włącz swap:
bash swapon /swapfileswapon– zaczyna używać swapu od razu, ale tylko do następnego restartu.
Sprawdź wynik przez
swapon --show. Zobaczysz linię/swapfile file 2G.
Gdy swapon zgłasza „holes”
Jeśli swapon wypisze skipping - it appears to have holes, system plików nie przyjął pliku utworzonego przez fallocate. Usuń go (rm /swapfile) i utwórz wolniej, ale niezawodnie przez dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress (count=2048 = 2048 × 1 MB = 2 GB). Potem kontynuuj od kroku 2.
Włączenie na stałe przez /etc/fstab#
Aby swap włączał się także po restarcie, dodaj go do pliku /etc/fstab.
Zarchiwizuj plik:
bash cp /etc/fstab /etc/fstab.bakDodaj linię swapu na koniec pliku:
bash echo '/swapfile none swap sw 0 0' >> /etc/fstabecho '…'– wypisuje tekst w cudzysłowie.>>– dopisuje tekst na koniec pliku. Uwaga: pojedynczy>nadpisałby cały plik.
Co oznacza każda kolumna linii:
Kolumna Wartość Znaczenie 1. urządzenie /swapfilePlik swap. 2. punkt montowania noneSwap nie jest nigdzie montowany. 3. typ swapTo swap. 4. opcje swDomyślne opcje swapu. 5. dump 0Nie archiwizuj starym narzędziem dump.6. sprawdzanie 0Nie sprawdzaj przy starcie (swap nigdy nie jest sprawdzany). Sprawdź, czy fstab jest w porządku:
bash findmnt --verifyfindmnt --verify– sprawdza składnię/etc/fstab. Wynik musi byćSuccess, no errors or warnings detectedalbo podsumowanie z0 parse errors, 0 errors. Same ostrzeżenia (warnings) o innych liniach nie zatrzymają startu VPS.
Zepsuty /etc/fstab może zatrzymać start VPS
Jeśli VPS nie wstanie po restarcie, otwórz konsolę w przeglądarce i przywróć kopię przez cp /etc/fstab.bak /etc/fstab.
Swappiness: jak chętnie system swapuje#
Wartość vm.swappiness (0–200) mówi, jak szybko jądro zaczyna przenosić dane do swapu. Domyślnie 60. Na serwerze lepsza jest niższa wartość, aby swap służył głównie jako siatka bezpieczeństwa.
| Ustawienie | Co robi | Zalecana wartość | Kiedy zmieniać |
|---|---|---|---|
vm.swappiness | Równowaga między zwalnianiem cache plików a przenoszeniem pamięci procesów do swapu. Niższa liczba = mniej swapowania. | 10 | Wróć do 60 (domyślnej), jeśli VPS przy pełnej pamięci jest wolniejszy niż wcześniej. Wartość 0 nie oznacza „swap wyłączony”; system używa go tylko w ostateczności. |
Sprawdź bieżącą wartość:
bash cat /proc/sys/vm/swappinessZapisz nową wartość do własnego pliku (Debian 13 nie czyta już
/etc/sysctl.conf; folder/etc/sysctl.d/działa w obu systemach):bash echo 'vm.swappiness=10' > /etc/sysctl.d/99-swappiness.confWczytaj ustawienie bez restartu:
bash sysctl --systemsysctl --system– wczytuje wszystkie ustawienia z folderówsysctl.d. W wyjściu zobaczysz linięvm.swappiness = 10.
Weryfikacja#
swapon --showpokazuje/swapfilez właściwym rozmiarem.free -hma niezerową wartośćtotalw liniiSwap.- Po restarcie VPS swap jest aktywny nawet bez ręcznego uruchamiania
swapon.
Usuwanie swapu#
- Wyłącz swap:
swapoff /swapfile. Jeśli swap jest mocno używany, trwa to dłużej, bo dane wracają do RAM. Jeśli brakuje na to RAM, polecenie kończy się błędem i nic się nie dzieje. - Usuń linię
/swapfile none swap sw 0 0z pliku/etc/fstab(nano /etc/fstab). - Usuń plik:
rm /swapfile.
Rozwiązywanie problemów#
fallocate: fallocate failed: No space left on device#
Na dysku brakuje miejsca. Sprawdź wolne miejsce przez df -h / i wybierz mniejszy swap albo rozszerz dysk.
swapon: /swapfile: insecure permissions 0644, 0600 suggested.#
Uprawnienia pliku są za szerokie. Swap się włącza, ale plik może czytać każdy na VPS. Uruchom chmod 600 /swapfile.
swapon: /swapfile: swapon failed: Device or resource busy#
Swap jest już włączony. Sprawdź przez swapon --show.
VPS jest wolny nawet ze swapem, a swap jest stale pełny#
Aplikacje stale potrzebują więcej pamięci, niż ma VPS. Sprawdź, co zużywa pamięć (htop, sortowanie po kolumnie MEM%), i albo daj aplikacji mniej pamięci, albo dodaj RAM w zakładce Zmiana pakietu.
Podsumowanie
- Swap chroni przed awarią przy krótkim braku RAM, ale nie zastępuje RAM.
- Tworzenie:
fallocate,chmod 600,mkswap,swapon. - Na stałe: linia
/swapfile none swap sw 0 0w/etc/fstabi sprawdzenie przezfindmnt --verify. - Na serwerze ustaw
vm.swappiness=10w/etc/.sysctl. d/ 99-swappiness. conf - Pełny swap i wolny VPS oznaczają, że potrzebujesz więcej RAM.