Hogyan adjunk Swap helyet Ubuntu 18.04

author
10 minutes, 15 seconds Read

Ez a bemutató korábbi verzióját Justin Ellingwood

Bevezetés

Az alkalmazások memórián kívüli hibái ellen az egyik legegyszerűbb védekezési mód, ha némi swap helyet adunk a szerverünkhöz. Ebben az útmutatóban azt mutatjuk be, hogyan adhatunk swap fájlt egy Ubuntu 18.04 szerverhez.

Figyelmeztetés: Bár a swap általában a hagyományos forgó merevlemezeket használó rendszerekhez ajánlott, a swap használata SSD-k esetén idővel hardverromlással járó problémákat okozhat. E megfontolás miatt nem javasoljuk a swap engedélyezését a DigitalOcean vagy bármely más, SSD tárolót használó szolgáltatónál. Ez hatással lehet a mögöttes hardver megbízhatóságára az Ön és szomszédai számára. Ezt az útmutatót referenciaként adjuk meg azon felhasználók számára, akik esetleg máshol pörgős lemezes rendszerekkel rendelkeznek.

Ha javítani szeretné a DigitalOcean szerverének teljesítményét, javasoljuk a Droplet frissítését. Ez általánosságban jobb eredményekhez vezet, és csökkenti annak valószínűségét, hogy hozzájárul a szolgáltatását befolyásoló hardverproblémákhoz.

Mi az a Swap?

A Swap egy olyan terület a merevlemezen, amelyet olyan helyként jelöltek ki, ahol az operációs rendszer ideiglenesen tárolhatja azokat az adatokat, amelyeket a RAM-ban már nem tud tárolni. Alapvetően ez lehetőséget ad arra, hogy növelje a kiszolgálója által a munka-“memóriájában” tárolható információk mennyiségét, néhány fenntartással. A merevlemezen lévő swap-területet elsősorban akkor használják, ha a RAM-ban már nincs elegendő hely a használatban lévő alkalmazási adatok tárolására.

A lemezre írt információ jelentősen lassabb lesz, mint a RAM-ban tartott információ, de az operációs rendszer inkább a memóriában tartja a futó alkalmazási adatokat, és a régebbi adatokhoz a swap-ot használja. Összességében a swap-tárhely tartalékként való rendelkezésre állása arra az esetre, ha a rendszer RAM-ja kimerül, jó biztonsági hálót jelenthet a memórián kívüli kivételek ellen olyan rendszereken, ahol nem SD-tároló áll rendelkezésre.

1. lépés – A rendszer ellenőrzése a swap-információk tekintetében

Mielőtt elkezdenénk, ellenőrizhetjük, hogy a rendszer rendelkezik-e már némi swap-tárhellyel. Lehetséges, hogy több swap fájl vagy swap partíció is van, de általában elég egy is.

Megnézhetjük, hogy a rendszernek van-e konfigurált swapja, ha beírjuk:

  • sudo swapon --show

Ha nem kapunk vissza semmilyen kimenetet, ez azt jelenti, hogy a rendszernek jelenleg nincs szabad swap helye.

Az free segédprogrammal ellenőrizhetjük, hogy nincs aktív swap-fájl:

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 222M 680K 678M 721MSwap: 0B 0B 0B

Amint a kimenet Swap sorában láthatjuk, nincs aktív swap a rendszerben.

2. lépés – A merevlemezpartíció szabad helyének ellenőrzése

Mielőtt létrehoznánk a swap-fájlt, ellenőrizzük a jelenlegi lemezhasználatot, hogy biztosan elegendő helyünk legyen. Ezt a következő beírással tehetjük meg:

  • df -h
Output
Filesystem Size Used Avail Use% Mounted onudev 481M 0 481M 0% /devtmpfs 99M 656K 98M 1% /run/dev/vda1 25G 1.4G 23G 6% /tmpfs 493M 0 493M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 493M 0 493M 0% /sys/fs/cgroup/dev/vda15 105M 3.4M 102M 4% /boot/efitmpfs 99M 0 99M 0% /run/user/1000

A Mounted on oszlopban /-vel jelölt eszköz ebben az esetben a mi lemezünk. Ebben a példában rengeteg hely áll rendelkezésünkre (csak 1,4 G felhasználva). Az Ön felhasználása valószínűleg ettől eltérő lesz.

Bár sok vélemény létezik a swap-tárhely megfelelő méretéről, ez valójában a személyes preferenciáktól és az alkalmazás követelményeitől függ. Általában a rendszeren lévő RAM-mal megegyező vagy annak kétszerese a jó kiindulási pont. Egy másik jó ökölszabály, hogy minden 4G-nél nagyobb swap valószínűleg felesleges, ha csak RAM tartalékként használja.

3. lépés – Swap fájl létrehozása

Most, hogy ismerjük a rendelkezésre álló merevlemezterületünket, létrehozhatunk egy swap fájlt a fájlrendszerünkön. A gyökér (/) könyvtárunkban ki fogunk osztani egy általunk kívánt méretű swap fájlt swapfile néven.

A swap fájl létrehozásának legjobb módja a fallocate program. Ez a parancs azonnal létrehozza a megadott méretű fájlt.

Mivel a példánkban szereplő szerver 1G RAM-mal rendelkezik, ebben az útmutatóban egy 1G-os fájlt hozunk létre. Ezt a saját szerverünk igényeihez igazíthatjuk:

  • sudo fallocate -l 1G /swapfile

Az alábbi beírással ellenőrizhetjük, hogy a megfelelő mennyiségű helyet foglaltuk-e le:

  • ls -lh /swapfile
  • -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

A fájlunk a megfelelő mennyiségű elkülönített hellyel jött létre.

4. lépés – A swap-fájl engedélyezése

Most, hogy már rendelkezünk egy megfelelő méretű fájlal, ténylegesen swap-tárhellyé kell alakítanunk.

Először is le kell zárnunk a fájl jogosultságait, hogy csak a root jogosultsággal rendelkező felhasználók olvashassák a tartalmát. Ez megakadályozza, hogy a normál felhasználók hozzáférjenek a fájlhoz, aminek jelentős biztonsági következményei lennének.

A fájlt csak a root felhasználó számára tegyük hozzáférhetővé a következő beírással:

  • sudo chmod 600 /swapfile

A jogosultságok módosítását a következő beírással ellenőrizzük:

  • ls -lh /swapfile
Output
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Amint látjuk, csak a root felhasználónak van engedélyezve az írási és olvasási zászló.

Megjelölhetjük most a fájlt swap-tárhelyként:

  • sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

A fájl megjelölése után engedélyezhetjük a swap fájlt, így a rendszerünk elkezdheti használni:

  • sudo swapon /swapfile

Elérhetőségének ellenőrzését a következő beírással végezzük el:

  • sudo swapon --show
Output
NAME TYPE SIZE USED PRIO/swapfile file 1024M 0B -2

Újra ellenőrizhetjük a free segédprogram kimenetét, hogy megerősítsük megállapításainkat:

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 220M 680K 680M 722MSwap: 1.0G 0B 1.0G

Sikeresen beállítottuk a swapot, és operációs rendszerünk szükség szerint elkezdi használni.

5. lépés – A swap fájl állandóvá tétele

A legutóbbi változtatásaink lehetővé tették a swap fájl használatát az aktuális munkamenethez. Ha azonban újraindítjuk, a kiszolgáló nem fogja automatikusan megtartani a swap-beállításokat. Ezt úgy tudjuk megváltoztatni, hogy a swap-fájlt hozzáadjuk a /etc/fstab fájlunkhoz.

Másoljuk le a /etc/fstab fájlt arra az esetre, ha valami baj történne:

  • sudo cp /etc/fstab /etc/fstab.bak

Adjuk hozzá a swap-fájl adatait a /etc/fstab fájlunk végéhez a következő beírással:

  • echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

A következőkben áttekintünk néhány olyan beállítást, amelyet frissíthetünk a swap-tér beállításához.

6. lépés – A swap-beállítások hangolása

Van néhány olyan beállítás, amelyet konfigurálhatunk, és amely hatással lesz a rendszer teljesítményére, amikor a swap-tárral foglalkozik.

A Swappiness tulajdonság beállítása

A swappiness paraméter azt konfigurálja, hogy a rendszer milyen gyakran cseréljen adatokat a RAM-ból a swap-tárhelyre. Ez egy 0 és 100 közötti érték, amely egy százalékos értéket jelent.

Nulla közeli értékek esetén a kernel nem cserél adatokat a lemezre, hacsak nem feltétlenül szükséges. Ne feledjük, hogy a swap-fájllal való interakciók “drágák” abban az értelemben, hogy sokkal tovább tartanak, mint a RAM-mal való interakciók, és jelentős teljesítménycsökkenést okozhatnak. Ha megmondjuk a rendszernek, hogy ne nagyon támaszkodjon a swapra, az általában gyorsabbá teszi a rendszert.

A 100-hoz közelebbi értékek több adatot próbálnak a swapba tenni, hogy több RAM-területet tartsanak szabadon. Az alkalmazások memóriaprofiljától vagy attól függően, hogy mire használjuk a szerverünket, ez bizonyos esetekben jobb lehet.

A jelenlegi swappiness értéket a következő beírással láthatjuk:

  • cat /proc/sys/vm/swappiness
Output
60

Egy asztali számítógép esetében a 60-as swappiness beállítás nem rossz érték. Egy kiszolgáló esetében érdemes közelebb vinni a 0-hoz.

A swappiness értékét a sysctl paranccsal állíthatjuk más értékre.

Ha például a swappiness értékét 10-re szeretnénk állítani, beírhatjuk:

  • sudo sysctl vm.swappiness=10
Output
vm.swappiness = 10

Ez a beállítás a következő újraindításig megmarad. Ezt az értéket automatikusan beállíthatjuk az újraindításkor, ha a /etc/sysctl.conf fájlunkhoz hozzáadjuk a következő sort:

  • sudo nano /etc/sysctl.conf

Az alján hozzáadhatjuk:

/etc/sysctl.conf
vm.swappiness=10

Mentés és a fájl bezárása után.

A cache nyomás beállításának módosítása

Egy másik kapcsolódó érték, amit esetleg módosítani szeretnénk, a vfs_cache_pressure. Ez a beállítás azt konfigurálja, hogy a rendszer mennyire választja az inode és dentry információk gyorsítótárazását más adatokkal szemben.

Gyakorlatilag ezek a fájlrendszerre vonatkozó hozzáférési adatok. Ezt általában nagyon költséges megnézni, és nagyon gyakran kérik, ezért kiváló dolog a rendszer számára, hogy gyorsítótárba helyezze. Az aktuális értéket láthatjuk, ha újra lekérdezzük a proc fájlrendszert:

  • cat /proc/sys/vm/vfs_cache_pressure
Output
100

A jelenlegi konfiguráció szerint rendszerünk túl gyorsan távolítja el az inode információkat a gyorsítótárból. Ezt egy konzervatívabb, például 50-es értékre állíthatjuk, ha beírjuk:

  • sudo sysctl vm.vfs_cache_pressure=50
Output
vm.vfs_cache_pressure = 50

Mégis ez csak az aktuális munkamenetünkre érvényes. Ezt úgy tudjuk megváltoztatni, hogy hozzáadjuk a konfigurációs fájlunkhoz, ahogy a swappiness beállításunkkal tettük:

  • sudo nano /etc/sysctl.conf

Az alján adjuk hozzá az új értéket megadó sort:

/etc/sysctl.conf
vm.vfs_cache_pressure=50

Mentsük el és zárjuk be a fájlt, ha végeztünk.

Következtetés

Az ebben az útmutatóban leírt lépések követése némi lélegzethez juttat bennünket olyan esetekben, amelyek egyébként memórián kívüli kivételekhez vezetnének. A cserelehetőség hihetetlenül hasznos lehet az ilyen gyakori problémák némelyikének elkerülésében.

Ha OOM (out of memory) hibákba ütközik, vagy ha azt tapasztalja, hogy a rendszere nem tudja használni a szükséges alkalmazásokat, a legjobb megoldás az alkalmazáskonfigurációk optimalizálása vagy a szerver frissítése.

Similar Posts

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.