Dodanie lub zwiększenie przestrzeni wymiany w systemie Linux na komputerze jest możliwe bez konieczności modyfikowania partycji. W tym artykule przedstawimy prostą metodę, aby to osiągnąć.
Pliki wymiany a partycje
W różnych sytuacjach możesz potrzebować dodać nową przestrzeń wymiany lub zwiększyć już istniejącą.
Może zdarzyć się, że Twoja przestrzeń wymiany osiąga maksymalne wykorzystanie, albo podczas instalacji systemu wybrałeś niewłaściwą opcję, co skutkowało brakiem wymiany.
Być może wcześniej uznałeś, że masz wystarczającą ilość pamięci RAM i nie potrzebujesz dodatkowej wymiany, ale teraz zmieniłeś zdanie.
Czasami też zdarza się, że przejmujesz zarządzanie systemem, który nie miał skonfigurowanej przestrzeni wymiany, a przyczyny tego mogą być niejasne.
Najłatwiejszym rozwiązaniem jest dodanie pliku wymiany do swojego systemu. Taki plik jest specjalnie zarezerwowany do użytku jako przestrzeń wymiany, która współdziała z wszelkimi innymi istniejącymi przestrzeniami wymiany, niezależnie od tego, czy są one w postaci plików czy partycji.
W przeszłości zauważano, że pliki wymiany były mniej wydajne w porównaniu z partycjami wymiany. Obecnie jednak nie jest to już problem, szczególnie na nowoczesnych dyskach SSD oraz w kontekście poprawy wydajności funkcji wymiany w systemie Linux. Niektóre dystrybucje Linuksa domyślnie tworzą pliki wymiany zamiast partycji.
Przestrzeń wymiany jest nie tylko pomocna w zwalnianiu pamięci RAM, gdy brakuje jej w systemie, ale również odgrywa kluczową rolę w efektywnym zarządzaniu pamięcią przez jądro systemu. Zobaczmy, jak możemy dodać nową przestrzeń wymiany.
Przygotowania: Btrfs i SSD
Na początku omówmy dwa istotne zagadnienia.
System plików Btrfs ma pewne ograniczenia dotyczące plików wymiany. W przeszłości występowały konflikty między sposobem działania mechanizmu copy-on-write w Btrfs a wymaganiami, jakie stawiano plikom wymiany. Niektóre z funkcji niezbędnych do poprawnego działania plików wymiany nie były wprowadzone, co skutkowało brakiem ich wsparcia w Btrfs. Jednak od jądra 5.0 możesz używać plików wymiany w systemach plików Btrfs, pod warunkiem że są one odpowiednio skonfigurowane. Konieczne jest, aby pliki te nie były kopiowane przy zapisie, nie były skompresowane i nie znajdowały się na różnych dyskach twardych.
Większość użytkowników korzysta z domyślnego systemu plików ext4, więc te kwestie nie będą dla nich problematyczne.
Na początku, gdy pojawiły się dyski SSD, obawiano się, że będą one używane w sposób, który prowadziłby do szybkiego zużycia, szczególnie w kontekście intensywnego zapisu. Użytkownicy byli ostrzegani przed umieszczaniem plików wymiany na dyskach SSD, a nawet przed instalowaniem systemu operacyjnego na nich.
Obecnie te obawy są znacznie mniej istotne, ponieważ wiele nowoczesnych dysków SSD ma dłuższą żywotność niż większość komputerów. Pliki wymiany na dyskach SSD oferują znacznie lepszą wydajność niż partycje wymiany na tradycyjnych dyskach twardych.
Sprawdzanie dostępnej przestrzeni wymiany
Przed przystąpieniem do działania, warto sprawdzić, jaka przestrzeń wymiany jest już dostępna w systemie. Można to zrobić na dwa sposoby. Używając polecenia free
, możesz zobaczyć ilość używanej i wolnej pamięci. Opcja -h
wyświetla wyniki w przystępny sposób, używając odpowiednich jednostek.
free -h
Wynik tego polecenia pokazuje, że na tym komputerze nie skonfigurowano przestrzeni wymiany.
Warto również zwrócić uwagę na pamięć RAM oraz wolną pamięć RAM. W naszym przypadku wolna pamięć RAM wynosi 237 MB, co jest różne od całkowitej dostępnej pamięci RAM, która wynosi 881 MB.
Linux wykorzystuje wolną pamięć RAM do różnych celów, takich jak buforowanie plików. Ilość pamięci RAM przeznaczonej na buforowanie wynosi 871 MB, ale ta pamięć jest nadal uznawana za „dostępną” i może być natychmiast użyta przez aplikacje w razie potrzeby.
Innym sposobem sprawdzenia dostępności przestrzeni wymiany jest użycie polecenia swapon
z opcją --show
, co nie wpłynie na bieżącą konfigurację.
swapon --show
Jeśli polecenie nie zwraca żadnych wyników, oznacza to, że nie ma skonfigurowanej wymiany.
Jeśli jednak przestrzeń wymiany już istnieje, jej rozmiar powinien być brany pod uwagę przy określaniu wielkości nowego pliku wymiany, który zamierzasz utworzyć.
Jak dużą przestrzeń wymiany potrzebuję?
Tradycyjnie zalecało się, aby wielkość wymiany wynosiła „dwukrotność pamięci RAM”. Jednak ta zasada powstała w czasach, gdy komputery miały znacznie mniej pamięci RAM. W miarę jak pamięć RAM stała się tańsza, a programy bardziej wymagające, specyfikacje komputerów PC również się zmieniły. Obecnie komputery domowe z 32 GB pamięci RAM są powszechne, a przydzielenie 64 GB na plik wymiany byłoby przesadne.
Wielkość wymiany to temat, który wzbudza wiele dyskusji, podobnie jak pytanie o najlepszy edytor tekstu. Przykład rozsądnej dyskusji na ten temat można znaleźć w FAQ dotyczących wymiany w Ubuntu. Zawiera ona przydatną tabelę, która pokazuje zalecaną ilość miejsca wymiany w zależności od posiadanej pamięci RAM oraz tego, czy planujesz hibernację systemu.
Dobrą wiadomością jest to, że nie ma jednego słusznego rozmiaru pliku wymiany. Możesz zawsze usunąć istniejący plik wymiany i utworzyć nowy o innej wielkości lub po prostu dodać kolejny plik wymiany.
Wybierz odpowiedni rozmiar pliku wymiany z tabeli i obserwuj jego wykorzystanie. Jeśli zajdzie potrzeba dostosowania, zmiany można wprowadzić szybko i łatwo, co zajmuje zaledwie kilka minut. Porównując to z modyfikowaniem partycji na działającym systemie Linux, proces ten jest znacznie prostszy.
Tworzenie pliku wymiany
Nie zaleca się korzystania z polecenia fallocate
do tworzenia pliku wymiany. W dokumentacji swapon
można znaleźć następujące ostrzeżenie:
The swap file implementation in the kernel expects to be able to write to the file directly, without the assistance of the file system. This is a problem on files with holes or on copy-on-write files on file systems like Btrfs. Commands like cp(1) or truncate(1) create files with holes. These files will be rejected by swapon. Preallocated files created by fallocate(1) may be interpreted as files with holes too depending of the filesystem. Preallocated swap files are supported on XFS since Linux 4.18. The most portable solution to create a swap file is to use dd(1) and /dev/zero.
Chociaż fallocate
działa szybciej, w tym przypadku użyjemy dd
do utworzenia pliku wymiany. Nasza maszyna ma 2 GB pamięci RAM, więc utworzymy plik wymiany o rozmiarze 1 GB.
Parametry polecenia:
- if: plik wejściowy, w tym przypadku używamy
/dev/zero
, który generuje strumień zerowych bajtów. - of: plik wyjściowy, w którym utworzymy plik wymiany o nazwie
swapfile
. - bs: rozmiar bloku w bajtach, określający, ile bajtów ma być odczytywanych z pliku wejściowego i zapisywanych w pliku wyjściowym.
- count: liczba bloków do odczytu i zapisu, pomnóż tę liczbę przez wartość
bs
, aby uzyskać ostateczny rozmiar pliku.
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
Podczas tworzenia pliku, system wyświetli pewne statystyki dotyczące operacji.
Możesz użyć polecenia ls
, aby potwierdzić, że plik został utworzony:
ls /
Przygotowanie pliku wymiany
Przed użyciem pliku wymiany, musimy go przygotować za pomocą polecenia mkswap
. Nie potrzebujemy żadnych dodatkowych parametrów poza ścieżką do pliku:
sudo mkswap /swapfile
Plik jest teraz gotowy do użycia jako przestrzeń wymiany. Warto jednak zwrócić uwagę na konieczność zmiany uprawnień do pliku, aby tylko użytkownik root miał do niego dostęp.
Ustawienie uprawnień do pliku wymiany
Domyślne uprawnienia są zbyt luźne, więc należy je ograniczyć, aby tylko root miał prawo do korzystania z pliku wymiany. Użyj polecenia chmod
, aby zmienić te uprawnienia:
sudo chmod 600 /swapfile
W wyniku tego działania wszyscy użytkownicy oprócz root stracą dostęp do pliku, a tylko root będzie mógł go odczytywać i zapisywać.
Musimy teraz poinformować system Linux, że nowy plik wymiany jest dostępny, używając polecenia swapon
, podając jedynie ścieżkę i nazwę pliku:
sudo swapon /swapfile
Plik wymiany jest teraz aktywny.
Dodawanie pliku wymiany do fstab
Aby zapewnić, że plik wymiany będzie dostępny również po ponownym uruchomieniu systemu, dodaj go do pliku /etc/fstab
. Możesz użyć dowolnego edytora tekstu, ale jako przykład użyjemy graficznego edytora Gedit.
sudo gedit /etc/fstab
Na końcu pliku dodaj następującą linię:
/swapfile none swap sw 0 0
Wyjaśnienie pól:
- System plików: ścieżka i nazwa pliku wymiany.
- Punkt montowania: plik nie jest montowany jak system plików, więc wpis jest „brak”.
- Typ: to jest „zamiana”.
- Opcje: w czasie uruchamiania zostanie wywołane polecenie
swapon -a
, które uruchomi wszystkie zasoby oznaczone jako wymiana. Ta opcja informuje system, że ten wpis powinien być traktowany jako zasób wymiany. - Dump: można ustawić na zero, co w tym przypadku nie ma znaczenia.
- Pass: również można ustawić na zero, co w tym wypadku nie ma znaczenia.
Zapisz zmiany i zamknij edytor.
Sprawdzanie wykorzystania wymiany
Aby upewnić się, że przestrzeń wymiany jest używana, użyj polecenia swapon
z opcją --show
:
swapon --show
Wyniki będą zawierać następujące kolumny:
- Nazwa: nazwa pliku lub partycji wymiany.
- Typ: typ urządzenia wymiany.
- Rozmiar: całkowity rozmiar zasobu wymiany.
- Wykorzystane: ilość wykorzystywanej przestrzeni wymiany.
- Prio: priorytet dla tej przestrzeni wymiany.
Priorytet przestrzeni wymiany
Każda przestrzeń wymiany ma przypisany priorytet, który jest automatycznie nadawany, jeśli go nie określisz. Domyślne priorytety są zawsze ujemne, a ręcznie przydzielane mieszczą się w zakresie od 0 do 32767. Zasoby wymiany z wyższymi priorytetami są używane w pierwszej kolejności.
Jeżeli więcej niż jedna przestrzeń wymiany ma ten sam priorytet, będą one używane naprzemiennie, aż obie zostaną wypełnione, po czym system skorzysta z przestrzeni wymiany o niższym priorytecie. Jeśli masz tylko jeden plik wymiany, priorytet nie ma znaczenia. Przykładowo, zmienimy priorytet naszego pliku wymiany, aby pokazać, jak to zrobić.
Aby ustawić priorytet, dodaj opcję pri=(priorytet)
do wpisu w /etc/fstab
. Edytuj linię dodaną do /etc/fstab
, aby wyglądała następująco:
/swapfile none swap sw,pri=10 0 0
Oznacza to, że dodaliśmy pri=10
do pola opcji, oddzielając go od „sw” przecinkiem. Upewnij się, że nie ma spacji między „sw”, przecinkiem i „pri=10”. Uruchom ponownie komputer i sprawdź ustawienia za pomocą polecenia swapon --show
:
swapon --show
Priorytet przestrzeni wymiany został pomyślnie ustawiony na 10, co dowodzi, że pole opcji w /etc/fstab
nie jest ignorowane.
Szybkie tworzenie przestrzeni wymiany
Po przestudiowaniu wszystkich kroków, tworzenie nowego pliku wymiany można zrealizować w kilku prostych krokach:
sudo dd if=/dev/zero of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2
Aby sprawdzić, czy wszystko działa, ponownie użyj polecenia:
swapon --show
Jeśli chcesz, aby plik wymiany był trwały, dodaj go do pliku /etc/fstab
.
Gotowe! Teraz masz nowy plik wymiany w swoim systemie.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.