Dodajte swap prostor na Linux računar ili uvećajte postojeći, bez komplikovanja sa particijama. Predstavljamo jednostavan način da prilagodite svoj swap prostor.
Swap fajlovi naspram swap particija
Postoji nekoliko situacija kada možete poželeti da povećate postojeći ili dodate novi swap prostor na vašem Linux sistemu.
Možda vaš swap prostor često radi pri maksimalnom ili skoro maksimalnom opterećenju.
Lako je pogrešiti tokom instalacije i nenamerno onemogućiti dodavanje swap prostora vašem sistemu.
Možda ste ranije smatrali da sa tolikom količinom RAM memorije vam swap nije potreban, ali ste se predomislili.
Ponekad nasledite administraciju sistema koji nema swap, iz razloga koje nikada nećete otkriti.
Jednostavno rešenje za sve ovo je dodavanje swap fajla na vaš računar. To je posebna datoteka, unapred dodeljena i rezervisana za korišćenje kao swap prostor. Swap fajl će raditi paralelno sa bilo kojim postojećim swap prostorom, bilo da je to swap fajl ili swap particija.
Nekada je korišćenje swap fajla donosilo pad performansi u poređenju sa swap particijom. Međutim, to više nije slučaj zahvaljujući poboljšanjima kod mehaničkih hard diskova i većoj efikasnosti swap funkcija u Linux operativnom sistemu. Zapravo, neke Linux distribucije sada po defaultu kreiraju swap fajlove umesto swap particija.
Swap se ne koristi samo kao način za oslobađanje RAM-a kada vam ponestane memorije. On je važan deo sistema koji pomaže njegovom boljem funkcionisanju. Bez swap prostora, razumno upravljanje memorijom postaje veoma teško za kernel. Pogledajmo jednostavan način da dodate malo swap prostora.
Pre nego što počnemo: Btrfs i SSD
Postoje dve stvari o kojima želimo ukratko da porazgovaramo.
Btrfs sistem datoteka ima određena ograničenja u vezi sa swap fajlovima. Nekada je postojala kolizija između copy-on-write prirode Btrfs-a i swap fajlova. Neke funkcije od kojih zavise swap fajlovi nisu bile implementirane, a neke pretpostavke o numeraciji blokova unutar swap fajlova nisu bile istinite za Btrfs. Stoga, swap fajlovi nisu bili podržani.
Od kernela 5.0, možete imati swap fajlove na Btrfs sistemima datoteka ako su postavljeni sa sledećim zahtevima:
Ne smeju biti copy-on-write (NOCOW) datoteke.
Ne smeju biti kompresovane.
Ne smeju se nalaziti na različitim hard diskovima.
Većina korisnika će koristiti standardni ext4 sistem datoteka, tako da ovo neće biti problem.
Kada su se Solid-State diskovi (SSD) prvi put pojavili, postojala je zabrinutost oko njihove upotrebe u situacijama koje uključuju česta upisivanja na sistem datoteka. Ljudi su upozoravani da ne stavljaju swap prostor na SSD-ove, pa čak i da izbegavaju sistemsko logovanje na SSD-ovima.
Ovo je danas mnogo manje zabrinjavajuće, a mnogi SSD diskovi na tržištu imaju životni vek koji će nadživeti većinu računara. Swap fajl na SSD-u će imati mnogo bolje performanse od swap particije na mehaničkom hard disku.
Provera postojećeg swap prostora
Proverite pre nego što počnete. Da vidimo koji swap prostor je dostupan na vašem računaru. Postoje dva načina da to uradite, a mi ćemo koristiti oba. Komanda `free` će prikazati korišćenu i slobodnu memoriju. Opcija `-h` (human-readable) će prikazati vrednosti memorije u čitljivim jedinicama.
free -h
Izlaz iz `free` pokazuje da na ovom računaru nije konfigurisan swap prostor.
O swap-u se nikada ne razgovara bez pomena RAM-a i slobodnog RAM-a. Zato je vredno primetiti da je slobodna RAM memorija navedena kao 237 MB. Nemojte to pomešati sa ukupnom RAM memorijom koja je dostupna za korišćenje. Tu vrednost daje „available“ broj, koji iznosi 881 MB.
Linux koristi slobodnu RAM memoriju za svoje potrebe, kao što su keširanje fajlova i baferi kernela. Količina RAM-a posvećena tome je „buff/cache“ broj, koji iznosi 871 MB. Ali ta memorija se i dalje smatra „dostupnom“. Sadržaj „buff/cache“ RAM-a može odmah biti odbačen i korišćen od strane bilo koje aplikacije koja zahteva malo memorije.
Drugi način da proverite da li je swap prostor dostupan je korišćenje komande `swapon`. Opcija `–show` ne menja ništa na vašem swap prostoru. Samo prikazuje statistiku.
swapon --show
Ako nema izlaza iz ove komande, znači da nije konfigurisan swap.
Ako su ove komande otkrile da je neki swap prostor već konfigurisan, veličina postojećeg swap prostora treba da se uzme u obzir prilikom odlučivanja o veličini swap fajla koji ćete kreirati.
Koliko swap prostora mi treba?
Tradicionalni odgovor je bio „duplo više od količine RAM-a koju imate“. Ali to je nastalo kada su računari imali veoma ograničen RAM. Kako je RAM pojeftinio, a programi i igre zahtevali sve više memorije, specifikacije računara su se prilagodile. Kućni računari sa 32 GB RAM-a nisu neuobičajeni danas. I nećete dodeliti 64 GB prostora na hard disku za swap ako imate 32 GB RAM-a. To je očigledno preterano.
Količina swap prostora koja vam je potrebna je poprilično diskutabilna tema, uporediva sa „koji je najbolji editor“. Jedna od najrazumnijih diskusija na ovu temu koju smo videli je u Ubuntu swap FAQ. To je kratak i zdravorazumski pristup (iako, kao i mnogi, pogrešno razumeju kako swap funkcioniše na Linux-u). Postoji korisna tabela koja prikazuje preporučenu količinu swap prostora za količinu RAM-a koju vaš sistem ima, i da li hibernirate računar ili ne.
Dobra vest je da nije bitno koju vrednost izaberete. Uvek možemo ukloniti swap fajl i zameniti ga većim ili, u tom slučaju, manjim. Ili možete jednostavno dodati još jedan swap fajl.
Izaberite veličinu swap fajla iz tabele, i koristite ga neko vreme. Pratite korišćenje swap prostora od strane vašeg sistema. Ako je potrebno fino podešavanje, promene se lako unose. Sa swap fajlovima, to je posao od dva minuta. Uporedite to sa podešavanjem particija na živom Linux računaru.
Kreiranje swap fajla
Ne biste trebali koristiti komandu `fallocate` za kreiranje swap fajla. Ovo je sa man stranice za `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.
Dakle, iako je `fallocate` brži, koristićemo `dd` da kreiramo swap fajl. Mašina korišćena za ovaj članak ima dva GB RAM-a. Kreiraćemo swap fajl od jednog GB.
Opcije su:
if: Ulazni fajl. U ovom primeru koristimo `/dev/zero` koji će obezbediti niz nula bajtova.
of: Izlazni fajl. Kreiraćemo fajl u osnovnom direktorijumu, nazvan `swapfile`.
bs: Veličina bloka u bajtovima. Ovo određuje koliko bajtova treba čitati iz ulaznog fajla i pisati u izlazni, odjednom.
count: Koliko blokova za čitanje i pisanje. Pomnožite ovaj broj sa `bs` vrednošću da biste dobili veličinu fajla.
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
Neke statistike su prikazane kada se fajl kreira.
Možemo videti broj blokova koji su upisani u fajl, veličinu fajla, vreme potrebno za kreiranje i efektivnu brzinu prenosa podataka.
Koristite komandu `ls` da vidite fajl u osnovnom direktorijumu:
ls /
Priprema swap fajla
Moramo pripremiti swap fajl sa komandom `mkswap` pre nego što se može koristiti. Ne moramo davati nikakve parametre za `mkswap` osim putanje i imena fajla:
sudo mkswap /swapfile
Fajl je pripremljen za korišćenje kao swap fajl. Obratite pažnju na upozorenje o dozvolama za fajl. Moramo ih promeniti tako da root korisnik bude jedini koji može da čita i piše u swap fajl.
Korišćenje swap fajla
Podrazumevane dozvole su previše liberalne, moramo ih ograničiti tako da samo root može da koristi `swapfile`. Koristite `chmod` da promenite dozvole za fajl:
sudo chmod 600 /swapfile
Ovo uklanja sve dozvole od članova grupe fajlova i drugih, ali dozvoljava vlasniku fajla, root-u, da čita i piše u fajl.
Moramo koristiti komandu `swapon` da obavestimo Linux da je dostupan novi swap fajl. Potrebno je samo da navedemo putanju i ime fajla:
sudo swapon /swapfile
Swap fajl je sada aktivan.
Dodavanje swap fajla u fstab
Da biste bili sigurni da je vaš swap fajl dostupan nakon ponovnog pokretanja, dodajte ga u `/etc/fstab` fajl. Možete koristiti bilo koji editor teksta, ali mi ćemo prikazati proces sa grafičkim editorom Gedit.
sudo gedit /etc/fstab
Linija koju treba da dodamo na dno fajla je:
/swapfile none swap sw 0 0
Polja su:
Sistem datoteka: putanja i naziv fajla za swap.
Tačka montiranja: Fajl nije montiran kao sistem datoteka, tako da je unos `none`.
Tip: Ovo je `swap`.
Opcije: U vreme pokretanja, `swapon -a` (pokreni sve uređaje označene kao swap) će biti pozvan iz jedne od skripti za pokretanje. Ova opcija govori Linux-u da tretira ovaj unos kao swap resurs koji treba da bude pod kontrolom te `swapon` komande. Uobičajeno je videti `defaults` koje se ovde koriste, jer neki korisnici Linux-a pogrešno veruju da se ovo polje ignoriše. Kao što ćemo videti, to nije slučaj. Dakle, ima smisla koristiti ispravnu opciju.
Dump: Ovo se može podesiti na nulu. Nije bitno u ovom slučaju.
Pass: Ovo se može podesiti na nulu. Nije bitno u ovom slučaju.
Sačuvajte promene i zatvorite editor.
Provera korišćenja swap-a
Da biste videli da li se vaš swap prostor koristi, koristite komandu `swapon` sa opcijom `–show`:
swapon --show
Kolone su:
Ime: Ime swap particije ili swap fajla.
Tip: Tip swap uređaja.
Veličina: Veličina swap resursa.
Iskorišćeno: Količina iskorišćenog swap prostora.
Prioritet: Prioritet ovog swap prostora.
Prioritet swap prostora
Svakom swap prostoru se dodeljuje prioritet. Ako ga ne navedete, prioritet se automatski dodeljuje. Automatski dodeljeni prioriteti su uvek negativni. Raspon prioriteta koji se mogu ručno dodeliti je od 0 do 32767. Prvo se koriste swap resursi sa višim prioritetima.
Ako više od jednog swap prostora ima isti prioritet, oni se koriste naizmenično dok se oba ne popune, a onda sistem traži swap prostor sa sledećim najnižim prioritetom. Ako imate samo jedan swap prostor, onda je prioritet naravno nebitan. Ali, mi ćemo promeniti prioritet swap fajla koji smo kreirali kako bismo pokazali kako se to radi.
Da biste postavili prioritet, dodajte opciju `pri=` (prioritet) u `/etc/fstab` unos. Izmenite red koji ste dodali u `/etc/fstab` da izgleda ovako:
/swapfile none swap sw,pri=10 0 0
To jest, dodajte `pri=10` u polje opcija, odvojeno od `sw` zarezom. Ne ostavljajte razmake između `sw`, zareza i `pri=10`. Ponovo pokrenite računar i koristite komandu `swapon –show`:
swapon --show
Prioritet ovog swap prostora je podignut na 10. Što je dokaz da se polje opcija u `/etc/fstab` unosu ne ignoriše.
Lako menjanje swap prostora
Isključujući objašnjenje, možemo kreirati novi swap fajl lako i brzo kao što je ovo:
sudo dd if=/dev/zero of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2
I da proverimo da li radi:
swapon --show
Ako želite da ga trajno uključite, dodajte ga u vaš `/etc/fstab` fajl.
Gotovo.