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 <rozmiar w gigabajtach>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=<rozmiar w gigabajtach>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:
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