Ez a bemutató korábbi verzióját Justin Ellingwood
- Bevezetés
- Mi az a Swap?
- 1. lépés – A rendszer ellenőrzése a swap-információk tekintetében
- 2. lépés – A merevlemezpartíció szabad helyének ellenőrzése
- 3. lépés – Swap fájl létrehozása
- 4. lépés – A swap-fájl engedélyezése
- 5. lépés – A swap fájl állandóvá tétele
- 6. lépés – A swap-beállítások hangolása
- A Swappiness tulajdonság beállítása
- A cache nyomás beállításának módosítása
- Következtetés
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
OutputFilesystem 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
OutputSetting 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
OutputNAME 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
Output60
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
Outputvm.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:
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
Output100
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
Outputvm.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:
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.