Tworzenie pliku swap na serwerze VPS

Poradniki
vps, zarządzanie, poradnik-miesiąca
bopke
bopke Moderator forum.lvlup.pro

Swap

Przy samodzielnej instalacji systemu instalator często proponuje nam, abyśmy utworzyli partycję na swap. Swap służy jako przedłużenie ramu, w sytuacjach kiedy ramu zacznie nam brakować, system zacznie pisać po swapie, dzięki czemu nasze aplikacje, zamiast wywalić się z powodu braku ramu, spowolnią swoje działanie, gdyż zaczną używać tej partycji jako pamięci ulotnej. Domyślnie instalowany system z instalatora jednak nie daje nam domyślnie utworzonego swapu. Żeby nie mieszać w partycjach, możemy utworzyć zwykły plik, który posłuży nam jako swap. W tym poradniku przedstawię jak utworzyć taki plik i jak aktywować go na naszym serwerze vps.

Tworzenie pliku

Musimy zacząć od stworzenia pliku który będzie miał taki rozmiar jaki chcemy nadać naszemu swapowi. Proponuję utworzyć go w katalogu /var/ pod nazwą swapfile, ale równie dobrze możemy utworzyć go w innej lokalizacji, odpowiednio zmieniając polecenia. Na ogół zalecanym rozmiarem swapu jest połowa rozmiaru pamięci ram, ale nic nie stoi na przeszkodzie aby utworzyć większy, lub mniejszy.

TIP: Domyślnie używanym systemem plików jest EXT4, więc możemy podążyć tą pierwszą drogą.

Jeżeli nasz system plików to XFS, EXT4 lub BTRFS, możemy użyć szybkiej komendy

sudo fallocate -l G /var/swapfile

np

sudo fallocate -l 2G /var/swapfile

Jeżeli po wykonaniu polecenia nie wyświetli się nam żaden dodatkowy komunikat to jest dobrze. Możemy już przejść do sekcji montowania swapu :)

Jeżeli jednak zdecydowaliśmy się przy instalacji systemu na inny system plików, to musimy użyć wolniejszej metody. Zaczynamy od utworzenia pustego pliku poleceniem

sudo touch /var/swapfile

Teraz, gdy mamy pusty plik, musimy rozszerzyć go do potrzebnego rozmiaru. W tym celu możemy użyć polecenia

sudo dd if=/dev/zero of=/var/swapfile bs=G count=1

np dla 2GB swapu:

sudo dd if=/dev/zero of=/var/swapfile bs=2G count=1

Montowanie swapu

Jeżeli nasz plik jest już gotowy, możemy już go montować. w tym celu musimy najpierw utworzyć w nim swap poleceniem

sudo mkswap /var/swapfile

Po wykonaniu tego polecenia możemy spodziewać się komunikatu podobnego do tego: image|575x73

Ze względów bezpieczeństwa w tym momencie dobrze jest zmienić uprawnienia do tego pliku, ponieważ możliwość czytania go przez dowolnych użytkowników może drastycznie uprościć wykradanie danych przez nie do końca zaufane aplikacje.

sudo chmod 0600 /var/swapfile

Teraz możemy ten swap uruchomić poleceniem

sudo swapon /var/swapfile

A także, żeby nasz nowoutworzony swap ładował się przy starcie systemu, musimy dodać wpis o nim do /etc/fstab. Możemy to zrobić jednym poleceniem

echo "/var/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab

Gotowe! Nasz swap będzie się już ładował i będzie normalnie używany przez system. Domyślne ustawienia swapu na ogół są wystarczające, system całkiem nieźle nim zarządza. Jeżeli jednak chcemy, żeby swap był używany tylko wtedy, gdy naprawdę brakuje ramu, a nie wtedy kiedy system uzna, że dobrym pomysłem jest go użyć, możemy ustawić tzw. swappiness na 10 za pomocą tych dwóch poleceń:

sudo sysctl -w vm.swappiness=10 echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

źródło: https://meta.discourse.org/t/create-a-swapfile-for-your-linux-server/13880

undefinedPoradnik miesiąca: listopad 2018

error
error

bopke:

swpaie

Literówka ;)

Poza tym poradnik fajny. Co prawda niektóre systemy przy instalacji pytają się, czy utworzyć swap, ale poradnik jak najbardziej na +

bopke
bopke Moderator forum.lvlup.pro

Wydzielono 1 post tworząc nowy wątek: Autouruchamianie skryptu przy starcie serwera

kjakkonrad
kjakkonrad

Powiedz czy jest git :Demm|655x60

bopke
bopke Moderator forum.lvlup.pro

Wygląda dobrze - widać, że nawet nie jest w tej chwili używany :)

kjakkonrad
kjakkonrad

Spoko, Dzięki no zrobiłem screen zaraz po resecie vps ;)

Dudix
Dudix

Jak powiększyć rozmiar dysku swap?

bopke
bopke Moderator forum.lvlup.pro

Najprościej będzie usunąć aktualny i utworzyć nowy

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Wydaje mi się, że możesz najpierw dodać drugi większy, a potem spokojnie wyłączyć ten pierwszy i powinno samo się przenieść, nawet live.

KMatuszak
KMatuszak Weteran

Bardzo przydatny poradnik, działa również na PC 🙂

Mespi
Mespi

swapon: /var/swapfile: read swap header failed 😓

bopke
bopke Moderator forum.lvlup.pro

Czy komenda mkswap na pewno zwróciła prawidłowe informacje?

Mespi
Mespi

O dziwo dzisiaj spróbowałem wykonać polecenia jeszcze raz i już nie wyrzuca tego błędu :slight_smile:

Dudix
Dudix

mkswap: error: swap area needs to be at least 40 KiB

wywala przy: image|683x129

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Istnieje duża szansa, że nie doczytałeś poradnika. Czy na pewno nie używasz na serwerze ext3? W jaki sposób tworzyłeś plik swapu? Fallocate czy dd? Przydałby się też wynik z np. df -h.

Dudix
Dudix

juz wiele razy instalowałem swap'a przy tym poradniku, i nigdy nie było żadnego błędu.

image|420x149

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Mój błąd, miałem na myśli df -Th. Za dużo pisania wersji bez T i pamięć mięśniowa się włączyła. :nosacz:

Dudix
Dudix

o dziwo teraz zadziałało, po kilkukrotnym wpisywaniu podanych komend.

akuku597
akuku597

wywala mi bląd

mkswap: error: swap area needs to be at least 40 KiB

Timo
Timo Moderator forum.lvlup.pro

Wykonałeś wszystkie komendy dokładnie tak, jak w poradniku?