Swap használata Linux alatt

Swap. Mindenki ismeri a Linuxos fogalmat: egy olyan lemezterület, amit memóriához hasomlóan tud a rendszer használni, ha betelt a fizikai memória. A megfogalmazás elég pongyola, ennél sokkal mélyebben is lehetne ezzel foglalkozni, de számunkra ennyi ismeret elég.
Mi történik, ha nincs, vagy kevés a swap terület? Fagyások, leállások, adatvesztések lehetnek. Ami nem kellemes, főleg azért, mert olyan okok miatt történik, amiket nem látunk: használjuk a gépet, egyszer csak gond lesz. Bár a memória kijelzésére sok lehetőségünk van, de mi használni akarjuk a gépet, és nem a memória, CPU és egyéb adatokat figyelni folyamatosan. Ha kevés a fizikai memóriád, akkor érdemes akár a conky-ba keresni egy memória használat figyelő részt, vagy akár egy erre rendszeresített programot futtatni. A legegyszerűbb megoldás a htop nevű, ami sok egyéb mellett ezt is jelzi.

Mennyi legyen a memória, és a swap?

Sok. Több, mint amire most gondolsz. Ez az elv, de ennél azért egy kicsivel pontosabban is meg kellene határozni. Ha használsz most is számítógépet, akkor a htop-pal figyeld a memória használatát. Ott jól látod, hogy a meglévő és a használt milyen arányban van. Ha sokszor elfogy a memóriád, és a swap-ba kezd írni, akkor kevés a fizikai memória. Bővíteni kell. Ha pedig új gépet veszel, akkor nagyon jól gondold át a memória kérdést. Mekkora? Nálam a 8giga kevés volt, így az újba ennek a kétszerese került. Ha lehet minél nagyobb sebességű legyen. Már 3000-es alatt nem túl jó a választásod. Olcsóbbak a lassabbak, de nagyon érezni egy lassabb, és egy 3600 közt a különbséget. Ha berakod a modulokat, és indítod a gépet a BIOS-ban nézd meg, hogy valóban azokat az értékeket használja, ami a memóriára van írva. Sok esetben egy alap, lassabb beállítással megy a memória, és kézzel kell beállítani a megfelelő értékeket. Ezt a memória dobozáról le tudod olvasni és az alaplap leírásában benne lesz, hogy hol kell beállítani. Ég és föld a különbség az alapórajelen futó memória és a beállított memória közt! Ha kifizetted a jobb memória árát, akkor menjen is azon. CL érték, azaz időzítés a memóriában – szintén fontos. Ez legyen minél kisebb, persze normál határok közt. A gyors és kis CL értékű memóriák nagyon jók, de az ár az az eget veri!
Figyelj a pontos munkára, és ha kell akkor a memória feszültségét is be kell állítani. Nem mindegy, hogy 1.2 vagy 1.35V-on fut, vagy el sem indul. A memória választásnál az alaplap gyártói oldalán és a processzor gyártói oldalán nézd meg, hogy melyik memória gyártó, melyik típusait támogatja alapból a géped. Bár ez jellemzően nem jelent problémát, de egyes régebbi ryzen (1. és 2. generáció) prociknál ez kérdéses lehet. A memória fizikai magasságára is figyelj, ha nagyobb, főleg noctua hűtőt használsz, mert a bordázat rálóghat a memória slotokra, és a memória nem fér alá. Ez is egy periferikus dolog, de jobb tudni.

A swap-nak kétféle megoldása van:

A lemezen külön partíción, vagy egy fájlban. Mindegyiknek van előnye és hátránya, erős vitákat generálna, ha egyik mellett foglalnék állást, de nem teszem. A telepítéskor vagy van lehetőséged a kettő közt választani, vagy nincs, és csak egyik megoldást ajánlja fel a gép.
Sokszor, ha nincs semmi különleges elgondolásunk a partíciókról, a felcsatolt lemezekről, akkor ráhagyjuk a telepítőre a partíciók kialakítását. Ez sok telepítőben az automata, vagy a “használja az egész lemezt”, vagy hasonló néven található. Ez nagyon jó, és az esetek nagy részében kezdőknél ideális: a Linux telepítő nem tesz fel olyan kérdést, amire nem tud válaszolni. Tapasztalatom szerint az egy lemezre telepítendő Linuxoknál ez nagyon jól működik. Egy olyan pontban okoz ez gondot, ami elég vitatott terület.

A swap partíció

Swap, azaz csere partíciót a legtöbb Linux telepítéskor létrehozza, ha nem tiltjuk le. De kérdés, hogy nekünk jó az a méret? Bár mindig vihart kavar a swap mérete, de én szeretem ha van egy megfelelő méretű swap terület, amit a Linux használni tud. A megfelelő az relatív, hiszen a mai memória méreteknél látszólag soha nincs szükség a swap-ra, mert 8-16-32-64giga memória mellett nem szokott swap-ot foglalni a rendszer. Így sokan kicsire veszik a swap partíciót, vagy ami bosszantóbb, a telepítő kicsit készít. Az MX Linux telepítésekor nem figyeltem arra, hogy kellene kicsivel nagyobb swap partíció, mint az amit alapból készít a MX Linux telepítő. 8giga ram és 120giga ssd-n bizony kemény kettő gigát csinált. Ami elég a legtöbb esetben, de van amikor nem. A tapasztalat az, hogy pont akkor futottam ki a swapból, amikor nagyobb és természetesen sürgős munkám volt.

Kevés a swap partíció?

Ha igen, akkor mit tehetünk? Ez a cikk bemutatja, hogyan kell átállni a swap partícióról a swap fájlra. Illetve azt is bemutatom, hogy miképp lehet a swap fájl méretét gyorsan és hatékonyan változtatni. Ha olyan a rendszered, hogy már nem swap partíciót, hanem swap fájlt használ, vagy azt sem kérted telepítéskor, akkor csak swap fájlt kell létrehozni, akkor nyilván az első lépések nem kellenek. Ez a ritkább eset, de fontos megemlíteni, mert sokan az „elég ramot vettem, minek a swap” felkiáltással telepítenek.

Mikor lesz kicsi a swap terület?

• Ha nagyobb memória igényű programokat kezdesz el használni
• Nagy méretű fájlokat kezdesz el használni
• Több programot kezdesz el együtt használni

Azaz a géphasználati szokásod megváltozott, és nagyobb méretű swap kellene, de az betelt. Ez jellemzően csak lassuláshoz vezet, mert a Linux elég intelligensen kezeli a memóriát, a swap-ot. Így csak extrém esetben fagy le a géped, vagy az adott program. Ha fura lassulásokat, lefagyások tapasztalsz, akkor érdemes a memória, CPU használatot megnézni. Ezt a legegyszerűbben a

htop

paranccsal teheted meg. Ha a felhasznált memória, és swap megugrik, a szabad (free) memória, swap meg kicsi, akkor vagy memóriát veszel, vagy nagyobb swap-ot csinálsz. Az első jobb megoldás, de a második lényegesen olcsóbb.
Nagyobb swap érdekében lehet nagyobb swap partíciót készíteni, ami sok esetben elég macerás, hiszen ha nincs üres helyünk, akkor egy másik partícióból kell lecsípni. Nem lehetetlen, de nem is egy egyszerű feladat kezdőknek. A másik megoldás a swap fájl használata. Ez egyszerűbb, de minden lépésre figyelni kell.
Az aktív swap partíciót lekérdezzük:

swapon -s

Érdemes rögvest rendszergazdaként futtatni.
A kimenete:

root@laci:/home/laci# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2097148 86528 -2

Ahogy látni, van swap-unk, ami nekem kevésnek tűnik, és az a sda2-es partíciót foglalja el. Bár gyakorlatilag semmi nem fut, ami extra memória igényű, de használatban van egy jelképes mennyiségű swap. Ami azt támasztja alá, hogy akkor használunk egy minimális swap-ot, ha nem is kellene, mert van üres memóriánk.
Most kapcsoljuk ki a swap partíciót:

swapoff /dev/sda2

A lemez nevére figyelj, azt kell itt megadni, amit az előbbi paranccsal kaptunk. Bár elvileg hibajelet kapunk, ha nem a swap partíciót adjuk meg, de érdemes megszokni a pontos munkát.
A következő lépés, hogy az fstab fájlban kikapcsoljuk a swap lemez csatolást. Az fstab felelős azokért a lemezekért, melyeket a rendszerindításkor be kell csatolni. Így érdemes figyelemmel szerkeszteni, mert fontos bejegyzéseket tartalmaz.

nano /etc/fstab

Nem kötelező a nano-t használni a szerkesztéshez, a kedvenc szerkesztődet használhatod. De párszor próbáljuk ki a nano-t is, mert a legtöbb Linux-on előtelepítve van, és ha más nincs, akkor tudjuk ezt is használni.
Ilyen sor keress:
UUID=24886a09-1703-4119-9694-0a920b46dd20 swap swap defauts 0 0
A swap szó szerepeljen benne, ami a partíció típusára utal. A többi ettől eltér. Majd kommenteljük ki, azaz kapjon egy # jelet a sor elején.
# UUID=24886a09-1703-4119-9694-0a920b46dd20 swap swap defauts 0 0
Ezzel a Linuxunknak elmondjuk, hogy ez egy olyan sor, amit nem kell figyelembe venni. Ctrl+O és ENTER, mentjük a műveletet, és kilépünk: Ctrl+X.
Létrehozunk egy swap fájlt:

dd if=/dev/zero of=/swapfile bs=1024 count=5242880

/swapfile a swap fájl elérési útja és neve. Ez bármi lehet, de érdemes mindig beszélő neveket adni a fájloknak. A szám (5242880) a count után 5 GB. Növelheted ezt, ha nagyobb swap fájlt szeretnél. Egy GB az 1048576, amit felsorozva kaphatod meg a kívánt méretet. Nem kötelező kerek giga méretű swap fájlt használni.

Hova tegyem? SSD-re ne, mert…

Ez a válasz idejétmúlt, mert az újabb SSD-k már sokkal többet bíznak, mint a régiek, és az állandó írás-olvasást végző swap sem teszi tönkre őket. Ha más szempontod nincs, a leggyorsabb lemezre tedd. Normál használatban előbb avul el erkölcsileg egy lemez, mint fizikailag tönkre menne a swaptól. Hacsak nincsenek komoly anyagi megszorításaid, akkor előbb veszel egy jobb, modernebb lemezt, minthogy a régi teljesen elhaljon.
A swap területre kerülhet kényes adat is, hiszen a Linux intelligensen ide pakolja a fájlokat, ha elfogy a memória. Így ideális, ha más nem olvassa ezt a fájlt! Ha nem állítod ezt be, akkor sincs technikailag gond, használatbavételkor szól, hogy a jogok nem az elvártak, de használni tudod a swap fájlt majd. Ennek ellenére tedd meg!

chmod 600 /swapfile

Már van egy olyan fájl, ami üres, és kellő méretű. Most felkészítjük, formázzuk le ezt a fájlt, hogy swap „lemezként” üzemeljen.

mkswap /swapfile

Majd tudtára kell adni a kedvenc Linuxunknak, hogy ezt a fájt használja swap-ként:

swapon /swapfile

Az elérési utat (/swapfile) pontosan kell megadni. Ha nem ilyen egyszerű, akkor inkább másold be, ne kézzel írd. Már használatba lett véve a swap fájl, amit készítettünk. A swapon -s paranccsal le is kérdezheted. Ezután, hogy minden rendszerindításkor ezt használja a Linuxunk, hozzá kell adni az fstab-hoz. A legegyszerűbb, ha a „régi” swap bejegyzést lemásolod, és az elejét lecseréled: /swapfile swap swap defauts 0 0 Mentés, kilépés. Az fstab fájl egy fontos fájl, így máshoz nem nyúlj, főleg ha nem tudod mit írsz át. Hasznos egy mentést készíteni a szerkesztések előtt, így jó esetben vissza tudod állítani az eredeti állapotot. Ez minden ilyen rendszerhez fontos fájl szerkesztése előtt ajánlott művelet!

Több swap fájl használata

A fentiekből az is kikövetkeztethető, hogy ha valaki ideiglenesen akar nagyobb swap fájlt használni, akkor megteheti. Ha van egy kisebb, általános munkára használt „alap” swap fájl, vagy partíció, de ideiglenesen nagyobb kell, akkor egy script segítségével meg tudjuk oldani. Itt nem konkrétan írom le a script parancsait, hanem csak a teendőket, így biztos lehetek abban, hogy csak olyan használja ezt megoldást, aki tudja is, hogy mit csinál.

• Ki kell kapcsolni az alap swapot
• El kell készíteni a nagyobb swap fájlt
• Megfelelő jogot adni neki
• Le kell formázni swap-nak
• Aktivizálni kell
• Érdemes ezután lekérdeni a swap méretét helyét, hogy minden korrektül lefutott.

Ahogy látni az fstab-hoz nem nyúltunk ennél a megoldásnál, így a következő rendszerindításkor visszaáll az eredeti helyzet. De az is megoldás, ha ellenkező irányú swap fájl cserére is írunk scriptet: lecsatolj a nagyobbat, majd felcsatolja a régit, és törli a nagyobb swap fájlt.
Én az utóbbi időben, nem készítek telepítéskor swap-ot, hanem dinamikusan adom meg, ha kell a swap fájlt. Egyrészt akkora lesz, amekkora akkor kell, másrészt ha nem kell nagyobb swap, akkor nem foglalja a helyet a lemezen.
Ami sajnos nem megy, és igazán jó lenne, ha menne, de nem találtam rá megoldást: Olyan swap használat, ami az igényeknek megfelelően automatikusan növeli, vagy csökkenti a méretet. Így nem foglalna feleslegesen nagy helyet a swap fájl, de amikor kell megnövelné a méretét.
Észrevettétek, hogy a parancsok előtt nincs ott a sudo. Így a mechanikus parancs másolgatásnál sem lesz gond: a rendszer jelzi, ha emelt jog kell és akkor megnézed, hogy a másolt parancs valóban jó, vagy a partíció neve stb. az megfelelő.
Amit fontos tudni: én a fentieket MX Linux alatt, és ArcoLinux alatt teszteltem. Ott működik, de ha más terjesztést használsz, akkor azért érdemes megnézni, hogy valóban járható ott ez az út, vagy nem. Jellemzően igen, de az ördög nem alszik, inkább előbb olvass, azután cselekedj. Nyilván vissza lehet állítani a swap partíciót, ha nem jó valamiért a swap fájl, hiszen nem töröltük el, csak deaktiváltuk, és a fstab-ban is ott van az originál bejegyzés, csak a #-t kell kivenni előle.

Amit nem tudtam, nem akartam tesztelni az a hibernálás. Sok helyen olvastam, hogy a swap fájlba való hibernálás nem mindig jött össze. Így ha hibernálást is használsz, akkor inkább ne, vagy ne éles rendszeren kísérletezz. Az interneten pár megoldást találsz, ha nem tér vissza a rendszered a hibernáláskor, vagy éppen a visszatérés, indítás stb. lelassul. Ezeket nem próbáltam, mert nem használok hibernálást.

Related Posts