Jak utworzyć plik wymiany w systemie Linux

Dodaj przestrzeń wymiany do komputera z systemem Linux lub zwiększ przestrzeń wymiany, która jest już obecna, bez majstrowania przy partycjach. Pokażemy Ci łatwy sposób dostosowania przestrzeni wymiany.

Zamiana plików a zamiana partycji

Istnieje kilka scenariuszy, w których możesz chcieć zwiększyć istniejącą lub dodać nową przestrzeń wymiany na komputerze z systemem Linux.

Być może twoja przestrzeń wymiany często działa na maksimum lub blisko maksimum.
Łatwo jest kliknąć niewłaściwą opcję podczas procesu instalacji i odmówić nieumyślnego dodania wymiany do systemu.
Może wcześniej zdecydowałeś, że masz tak dużo pamięć o dostępie swobodnym (RAM) nie potrzebowałeś żadnej wymiany i zmieniłeś zdanie.
Czasami dziedziczysz administrację systemem, który nie ma zamiany, z powodów, których nigdy nie będziesz w stanie odkryć.

Prostym rozwiązaniem tego wszystkiego jest dodanie pliku zamienić plik na swój komputer. Jest to specjalny plik, wstępnie przydzielony i zarezerwowany do użytku jako przestrzeń wymiany. Plik wymiany będzie działał w tandemie z każdą istniejącą wymianą, którą możesz mieć, niezależnie od tego, czy jest to plik wymiany, czy partycja wymiany.

W pewnym momencie wystąpił spadek wydajności podczas korzystania z pliku wymiany w porównaniu z partycją wymiany. To już nie dotyczy poprawy wydajności mechanicznych (wirujących) dysków twardych i większej wydajności funkcji wymiany w systemie operacyjnym Linux. W rzeczywistości niektóre dystrybucje Linuksa domyślnie tworzą teraz pliki wymiany zamiast partycji wymiany.

Zamiana służy nie tylko do zwalniania pamięci RAM, gdy zaczyna brakować pamięci. To ważna część dobrze funkcjonującego systemu. Bez wymiany rozsądne zarządzanie pamięcią staje się bardzo trudne do osiągnięcia przez jądro. Przyjrzyjmy się prostemu sposobowi dodania przestrzeni wymiany.

Zanim zaczniemy: Btrfs i SSD

Chcielibyśmy szybko omówić dwie kwestie.

Plik System plików Btrfs ma pewne zastrzeżenia dotyczące plików wymiany. W pewnym momencie wystąpił konflikt między kopiowanie przy zapisie charakter Btrfs, który chciał działać w jeden sposób, a wymieniać pliki potrzebne do działania w inny. Niektóre funkcje, od których zależą pliki wymiany, nie zostały zaimplementowane, a niektóre założenia dotyczące numerowania bloków w plikach wymiany nie sprawdziły się w Btrfs. Więc pliki wymiany nie były obsługiwane.

Od jądra 5.0 ty może mieć pliki wymiany w systemach plików Btrfs jeśli są skonfigurowane z następującymi wymaganiami:

Brak plików kopiowanych przy zapisie (NOCOW).
Nie są skompresowane.
Nie używają różnych dysków twardych.

Większość czytelników będzie używać domyślnego systemu plików ext4, więc nie będzie to dla nich problemem.

Kiedy dyski półprzewodnikowe (SSD) były dostępne po raz pierwszy, istniała obawa, że ​​będą używane w sytuacjach, w których często zapisywano system plików. Ostrzegano ludzi przed umieszczaniem miejsca wymiany na dyskach SSD, a nawet przed rejestrowaniem systemu na dyskach SSD.

W dzisiejszych czasach jest to znacznie mniejszy problem, a oczekiwana długość życia wielu dysków SSD, które są w sprzedaży, będzie trwać dłużej niż większość komputerów. Plik wymiany na dysku SSD będzie miał znacznie lepszą wydajność niż partycja wymiany na mechanicznym dysku twardym.

Sprawdzanie istniejącej przestrzeni wymiany

Rozejrzyj się zanim skoczysz. Sprawdźmy, jakie miejsce wymiany jest dostępne na Twoim komputerze. Możesz to zrobić na dwa sposoby, a użyjemy obu. Wolne polecenie wyświetli używaną i wolną pamięć. Opcja -h (czytelna dla człowieka) spowoduje, że przy wyświetlaniu wartości pamięci będzie można używać sensownych jednostek.

free -h

fre -h w oknie terminala

Wynik polecenia free pokazuje, że na tym komputerze nie ma skonfigurowanej przestrzeni wymiany.

Wymiana nigdy nie jest omawiana bez pojawienia się pamięci RAM i wolnej pamięci RAM. Warto więc zauważyć, że wolna pamięć RAM wynosi 237 MB. Nie pomyl tego z całkowitą dostępną pamięcią RAM. Wartość tę określa liczba „dostępna”, która wynosi 881 MB.

Linux używa wolnej pamięci RAM do własnych celów, takich jak buforowanie plików i bufory jądra. Ilość dedykowanej pamięci RAM jest wartością „buff / cache”, która wynosi 871 MB. Ale ta pamięć jest nadal uważana za – i liczona jako – „dostępna”. Zawartość pamięci RAM „buf / cache” może zostać natychmiast usunięta i wykorzystana przez dowolną aplikację, która potrzebuje trochę pamięci.

Innym sposobem sprawdzenia, czy przestrzeń wymiany jest dostępna, jest użycie polecenia swapon. Opcja –show nie powoduje żadnego zmiany w zamianie na twoim komputerze. Zawiera tylko statystyki.

swapon --show

swapon --show w oknie terminala

Jeśli nie ma wyjścia z tego polecenia, nie ma skonfigurowanej zamiany.

Jeśli te polecenia ujawniły, że część przestrzeni wymiany jest już skonfigurowana, rozmiar istniejącej przestrzeni wymiany powinien być brany pod uwagę przy podejmowaniu decyzji dotyczących rozmiaru pliku wymiany, który zamierzasz utworzyć.

Ile miejsca wymiany potrzebuję?

Tradycyjną odpowiedzią było „dwukrotność posiadanej pamięci RAM”. Ale to zostało wymyślone, gdy komputery miały bardzo ograniczoną pamięć RAM. Ponieważ pamięć RAM stała się tańsza, a programy i gry bardziej wymagające pamięci, specyfikacje komputerów PC zostały odpowiednio dostosowane. Domowe komputery PC z 32 GB pamięci RAM nie są w dzisiejszych czasach rzadkością. I nie zamierzasz przydzielać 64 GB miejsca na dysku twardym do wymiany miejsca, jeśli masz 32 GB pamięci RAM. To po prostu przesada.

Ilość potrzebnej wymiany jest tematem zapalającym, porównywalnym do „który jest najlepszym redaktorem”. Jedna z najbardziej rozsądnych dyskusji na ten temat, jaką widzieliśmy, znajduje się w Często zadawane pytania dotyczące wymiany Ubuntu. To krótkie i zdroworozsądkowe podejście (chociaż, podobnie jak wielu ludzi, źle rozumieją, jak działa zamiana w systemie Linux). Jest przydatna tabela, która pokazuje zalecaną ilość miejsca wymiany dla ilości pamięci RAM, którą ma twój system, oraz tego, czy hibernujesz komputer, czy nie.

Dobra wiadomość jest taka, że ​​tak naprawdę nie ma znaczenia, jaką wartość wybierzesz. Zawsze możemy usunąć plik wymiany i zastąpić go większym lub mniejszym. Możesz też po prostu dodać kolejny plik wymiany.

Wybierać rozmiar pliku wymiany z tabelii uruchom go na chwilę. Monitoruj wykorzystanie przestrzeni wymiany w systemie. Jeśli wymagane jest dostrojenie, zmiany można łatwo wprowadzić. W przypadku plików wymiany zajmuje to dwie minuty. Porównaj to z dostosowywaniem partycji na działającym komputerze z systemem Linux.

Tworzenie pliku wymiany

Nie powinieneś używać polecenia fallocate aby stworzyć swój plik wymiany. To jest ze strony man dla swapon:

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.

Tak więc, chociaż Fallocate jest szybsze, użyjemy dd do utwórz plik wymiany. Maszyna wykorzystana do zbadania tego artykułu ma dwa GB pamięci RAM. Utworzymy plik wymiany o rozmiarze 1 GB.

Dostępne opcje:

if: plik wejściowy. W tym przykładzie używamy / dev / zero, który zapewni strumień zerowych bajtów.
of: plik wyjściowy. Zamierzamy utworzyć plik w katalogu głównym o nazwie swapfile.
bs: rozmiar bloku w bajtach. Określa, ile bajtów ma być odczytywanych z pliku wejściowego i zapisywanych w pliku wyjściowym.
count: ile bloków ma przeczytać i zapisać. Pomnóż tę liczbę przez wartość bs, aby uzyskać rozmiar pliku.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

sudo dd if = / dev / zero of = / swapfile bs = 1024 count = 1048576 w oknie terminala

Podczas tworzenia pliku dostępne są pewne statystyki.

wyjście z sudo dd if = / dev / zero of = / swapfile bs = 1024 count = 1048576 w oknie terminala

Widzimy liczbę bloków (rekordów), które zostały zapisane w pliku, rozmiar pliku, czas potrzebny na utworzenie pliku oraz efektywną szybkość przesyłania danych.

Użyj polecenia ls, aby wyświetlić plik w katalogu głównym:

ls /

ls / w oknie terminala

Przygotowanie pliku wymiany

Musimy przygotuj plik wymiany z poleceniem mkswap, zanim będzie można go użyć. Nie musimy podawać żadnych parametrów mkswap poza ścieżką i nazwą pliku:

sudo mkswap /swapfile

sudo mkswap / swapfile w oknie terminala

Plik jest przygotowany do użycia jako plik wymiany. Zwróć uwagę na ostrzeżenie dotyczące uprawnień do plików. Będziemy musieli je zmienić, aby użytkownik root był jedyną osobą, która może czytać i zapisywać w pliku wymiany.

Korzystanie z pliku wymiany

Domyślne uprawnienia są zbyt liberalne, musimy je ograniczyć, aby tylko root mógł używać pliku wymiany. Użyj chmod, aby zmienić uprawnienia do pliku:

sudo chmod 600 /swapfile

sudo chmod 600 / swapfile w oknie terminala

Spowoduje to usunięcie wszystkich uprawnień członkom grupy plików i innym osobom, ale umożliwia właścicielowi pliku, rootowi, odczyt i zapis w pliku.

Musimy użyć polecenia swapon, aby powiadomić Linuksa, że ​​jest dostępny nowy plik wymiany. Musimy tylko podać ścieżkę i nazwę pliku:

sudo swapon /swapfile

sudo swapon / swapfile w oknie terminala

Plik wymiany jest teraz aktywny.

Dodawanie pliku wymiany do fstab

Aby upewnić się, że plik wymiany jest dostępny po ponownym uruchomieniu, dodaj go do pliku / etc / fstab. Możesz użyć dowolnego preferowanego edytora tekstu, ale pokażemy proces za pomocą graficznego edytora tekstu Gedit.

sudo gedit /etc/fstab

sudo gedt / etc / fstab w oknie terminala

Linia, którą musimy dodać na dole pliku, to:

/swapfile    none    swap    sw    0    0

/ etc / fstab z podświetlonym wpisem pliku wymiany

Pola to:

System plików: ścieżka i nazwa pliku wymiany.
Punkt montowania: plik nie jest montowany jak system plików, więc wpis to „brak”.
Typ: to jest „zamiana”.
Opcje: W czasie startu programu swapon -a (uruchom wszystkie urządzenia oznaczone jako swap) zostanie wywołane z jednego ze skryptów startowych. Ta opcja mówi Linuksowi, aby traktował ten wpis jako zasób wymiany, który powinien być kontrolowany przez polecenie swapon -a. Często używa się tutaj „wartości domyślnych”, ponieważ wśród niektórych użytkowników Linuksa panuje błędne przekonanie, że to pole jest ignorowane. Jak zobaczymy, tak nie jest. Dlatego warto użyć właściwej opcji.
Dump: można ustawić na zero. W tym przypadku nie ma to znaczenia.
Pass: można ustawić na zero. W tym przypadku nie ma to znaczenia.

Zapisz zmiany i zamknij edytor.

Sprawdzanie wykorzystania wymiany

Aby sprawdzić, czy przestrzeń wymiany jest używana, użyj polecenia swapon z opcją –show:

swapon --show

swapon --show w oknie terminala

Kolumny to:

Nazwa: nazwa partycji wymiany lub pliku wymiany.
Typ: typ urządzenia do wymiany.
Rozmiar: rozmiar zasobu wymiany.
Wykorzystane: ilość wykorzystanej przestrzeni wymiany.
Prio: Priorytet tej przestrzeni wymiany.

Priorytet przestrzeni wymiany

Każda przestrzeń wymiany ma przydzielony priorytet. Jeśli go nie podasz, zostanie automatycznie przydzielony. Automatycznie przydzielane priorytety są zawsze ujemne. Zakres priorytetów, które można przydzielić ręcznie, wynosi od 0 do 32767. W pierwszej kolejności używane są zasoby wymiany z wyższymi priorytetami.

Jeśli więcej niż jedna przestrzeń wymiany ma ten sam priorytet, są one używane naprzemiennie, aż obie są zapełnione, wówczas system szuka przestrzeni wymiany o następnym najniższym priorytecie. Jeśli masz tylko jedną przestrzeń wymiany, priorytet nie ma oczywiście znaczenia. Ale zmienimy priorytet pliku wymiany, który stworzyliśmy, aby zademonstrować, jak to zrobić.

Aby ustawić priorytet, dodaj opcję pri = (priorytet) do wpisu / etc / fstab. Edytuj linię, którą dodałeś do / etc / fstab, aby wyglądała następująco:

/swapfile    none    swap    sw,pri=10    0    0

Oznacza to, że dodaj pri = 10 do pola opcji, oddzielając od „sw” przecinkiem. Nie zostawiaj spacji między „sw”, przecinkiem i „pri = 10”. Uruchom ponownie komputer i użyj polecenia swapon –show:

swapon -- show

swapon - pokaż w oknie terminala

Priorytet tej przestrzeni wymiany został podniesiony do 10. Co jest dowodem na to, że pole opcji we wpisie / etc / fstab nie jest ignorowane.

Łatwa wymiana przestrzeni

Przechodząc przez ekspozycję i wyjaśnienia, możemy utworzyć nowy plik wymiany tak łatwo i szybko, jak to:

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

I sprawdźmy, czy zadziałało:

swapon --show

sudo dd if = / dev / zero / of = / swapfile2 bs = 1024 count = 104857 w oknie terminala

Jeśli chcesz, aby to trwałe upuszczenie, to do pliku / etc / fstab.

Bum. Zadanie wykonane.