bopke | 2019-10-04 08:58:18 UTC | #1
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.
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
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
error | 2018-11-13 16:40:59 UTC | #2
[quote=”bopke, post:1, topic:8958”]
swpaie
[/quote]
Literówka ;)
Poza tym poradnik fajny. Co prawda niektóre systemy przy instalacji pytają się, czy utworzyć swap, ale poradnik jak najbardziej na +
bopke | 2019-01-03 15:52:26 UTC | #3
Wydzielono 1 post tworząc nowy wątek: Autouruchamianie skryptu przy starcie serwera
kjakkonrad | 2019-01-03 15:35:47 UTC | #4
Powiedz czy jest git :D
bopke | 2019-01-03 15:51:55 UTC | #5
Wygląda dobrze - widać, że nawet nie jest w tej chwili używany :)
kjakkonrad | 2019-01-03 16:29:41 UTC | #6
Spoko, Dzięki no zrobiłem screen zaraz po resecie vps ;)
Dudix | 2020-02-22 20:26:37 UTC | #7
Jak powiększyć rozmiar dysku swap?
bopke | 2020-02-22 23:31:35 UTC | #8
Najprościej będzie usunąć aktualny i utworzyć nowy
Nieznajomy11 | 2020-02-23 09:40:05 UTC | #9
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 | 2020-06-27 23:56:59 UTC | #10
Bardzo przydatny poradnik, działa również na PC :slightlysmilingface:
Mespi | 2020-07-18 12:47:47 UTC | #11
swapon: /var/swapfile: read swap header failed
😓
bopke | 2020-07-18 20:15:01 UTC | #12
Czy komenda mkswap na pewno zwróciła prawidłowe informacje?
Mespi | 2020-07-19 04:17:16 UTC | #13
O dziwo dzisiaj spróbowałem wykonać polecenia jeszcze raz i już nie wyrzuca tego błędu :slight_smile:
Dudix | 2020-10-10 17:55:09 UTC | #14
mkswap: error: swap area needs to be at least 40 KiB
wywala przy:
Nieznajomy11 | 2020-10-10 17:56:03 UTC | #15
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 | 2020-10-10 17:56:46 UTC | #16
juz wiele razy instalowałem swap’a przy tym poradniku, i nigdy nie było żadnego błędu.
Nieznajomy11 | 2020-10-10 17:58:28 UTC | #17
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.
Dudix | 2020-10-10 17:59:35 UTC | #18
o dziwo teraz zadziałało, po kilkukrotnym wpisywaniu podanych komend.
akuku597 | 2020-10-27 23:14:04 UTC | #19
wywala mi bląd
mkswap: error: swap area needs to be at least 40 KiB
Timo | 2020-10-27 23:42:32 UTC | #20
Wykonałeś wszystkie komendy dokładnie tak, jak w poradniku?