Gdy RAM się skończył, a swapa brak

Jakiś czas temu stwierdziłem, że na komputerach z 16 lub więcej gigabajtami RAMu bez sensu jest robić na dysku przestrzeń wymiany popularnie zwaną swapem. Uznałem to za marnotrawstwo miejsca na dysku. Okazało się jednak, że byłem w błędzie, ld potrafi jednak przy linkowaniu większych projektów zeżreć dużo więcej niż 16GB RAMu. Wtedy w mojej głowie pojawiło się pytanie co z tym zrobić, przecież nie będę przeinstalowywać systemu żeby zrobić sobie partycje na swapa specjalnie dla jednego zadania.

Okazuje się, że rozwiązanie tego problemu jest bardzo proste. Swap nie musi być partycją, może być po prostu plikiem.

Trzeba utwórzyć obraz dysku:

sudo dd if=/dev/zero of=swapfile.bin bs=1024 count=16777216

Powyższa komenda utworzy plik o rozmiarze 16GB. Następnie musimy sformatować jako przestrzeń wymiany:

mkswap swapfile.bin

Do swapa dostęp powinien mieć tylko użytkownik root więc wypada zmienić uprawnienia:

chmod 600 swapfile.bin

Na koniec musimy uruchomić swapa:

swapon swapfile.bin

Po ostatniej komendzie w programach typu top czy w monitorze systemu swap powinien być widoczny.

Aby powyższa zmiana była na stałe należy zmodyfikować plik /etc/fstab poprzez dodanie:

/ścieżka/do/swapfile.bin swap swap defaults 0 0

Jak się okazuje nawet przy RAMie o przyzwoitym rozmiarze swap bywa potrzebny i to nie trzeba robić nic nadzwyczajnego, wystarczy kompilacja nieco większego projektu.

Ten wpis został opublikowany w kategorii Artykuły, Linux. Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *