Adjon hozzá swap területet egy Linux számítógéphez, vagy növelje a már meglévő csereterületet anélkül, hogy a partíciókkal bajlódna. Megmutatjuk a csereterület testreszabásának egyszerű módját.
Fájlok cseréje vs. Partíciócsere
Számos forgatókönyv létezik, amikor érdemes lehet növelni a meglévő vagy új swap területet Linux számítógépén.
Lehet, hogy a csereterületed gyakran maximumon vagy a maximum közelében fut.
Könnyű rossz lehetőségre kattintani a telepítési folyamat során, és megtagadni a swap véletlen hozzáadását a rendszerhez.
Lehet, hogy korábban úgy döntöttél, hogy ennyi mindened van véletlen hozzáférésű memória (RAM) nem volt szüksége cserére, és meggondolta magát.
Néha egy olyan rendszer adminisztrációját örökli, amelyen nincs csere, olyan okokból, amelyeket soha nem fog tudni felfedezni.
Mindezekre az egyszerű megoldás, ha hozzáadjuk a cserélje ki a fájlt a számítógépére. Ez egy speciális fájl, előre lefoglalva és csereterületként való használatra fenntartva. A swap fájl együtt fog működni bármely meglévő cserefájllal, legyen az swap fájl vagy swap partíció.
Egy időben a swap fájl használata a swap partícióhoz képest teljesítménybeli sikereket ért el. Ez már nem így van a mechanikus (pörgő) merevlemezek teljesítményének javításával és a Linux operációs rendszeren belüli cserefunkciók nagyobb hatékonyságával. Valójában egyes Linux disztribúciók alapértelmezés szerint swap fájlokat hoznak létre, nem pedig cserepartíciókat.
A Swap nem csak a RAM felszabadítására szolgál, ha fogy a memória. Ez egy jól működő rendszer fontos része. Swap nélkül az értelmes memóriakezelést nagyon nehéz elérni a kernel számára. Nézzük meg a csereterület hozzáadásának egyszerű módját.
Mielőtt belemerülnénk: Btrf-ek és SSD-k
Két pontot szeretnénk gyorsan megvitatni.
A Btrfs fájlrendszer bizonyos figyelmeztetéseket tartalmaz a swap fájlokkal kapcsolatban. Egy időben konfliktus volt a között másolás-írás A Btrfs természete, amely egy módon akart működni, és más módon akart fájlokat cserélni, amelyeknek működniük kellett. Egyes funkciók, amelyektől a fájlok cseréje függ, nem valósultak meg, és a swap fájlokon belüli blokkszámozással kapcsolatos feltételezések nem feleltek meg a Btrfs-nek. Tehát a cserefájlok nem támogatottak.
A kernel 5.0 óta te lehetnek cserefájlok a Btrfs fájlrendszerekben ha a következő követelményeknek megfelelően vannak beállítva:
Nincsenek másolás-írásra (NOCOW) fájlok.
Nincsenek tömörítve.
Nem rakják szét a különböző merevlemezeket.
A legtöbb olvasó az alapértelmezett ext4 fájlrendszert fogja használni, így ez nem okoz gondot számukra.
Amikor a szilárdtest-meghajtók (SSD-k) először elérhetők voltak, aggodalomra ad okot, hogy olyan helyzetekben használják őket, amikor gyakran kellett fájlrendszert írni. Az embereket figyelmeztették, hogy ne helyezzenek csereterületet az SSD-kre, és még azt is, hogy kerüljék a rendszernaplózást az SSD-kre.
Ez manapság sokkal kevésbé aggodalomra ad okot, és sok értékesítésre kerülő SSD várható élettartama meghaladja a legtöbb PC-t. Az SSD-n lévő cserefájl sokkal jobb teljesítményt nyújt, mint a mechanikus merevlemez cserepartíciója.
Meglévő csereterület ellenőrzése
Gondold át. Nézzük meg, milyen csereterület áll rendelkezésre a számítógépén. Ezt kétféleképpen teheti meg, mi pedig mindkettőt használjuk. A szabad parancs megjeleníti a felhasznált és szabad memóriát. A -h (ember által olvasható) opció szabadon használható értelmes mértékegységeket tesz lehetővé, amikor megjeleníti a memóriaértékeket.
free -h
Az ingyenes kimenet azt mutatja, hogy ezen a gépen nincs konfigurálva swap terület.
A cseréről soha nem beszélnek RAM és szabad RAM nélkül. Érdemes tehát megjegyezni, hogy az ingyenes RAM 237 MB-ban van megadva. Ne tévessze össze ezt a használható teljes RAM-mal. Ezt az értéket az „elérhető” adat adja, ami 881 MB.
A Linux ingyenes RAM-ot használ saját céljaira, például fájlok gyorsítótárazására és kernelpufferekre. Az erre szánt RAM mennyisége a „buff/cache” érték, ami 871 MB. De ezt az emléket továbbra is „rendelkezésre állónak” tekintik – és annak számítják. A „buf/cache” RAM tartalma azonnal eldobható, és bármilyen memóriát igénylő alkalmazás felhasználható.
Egy másik módja annak, hogy ellenőrizze, van-e szabad csereterület, a swapon parancs használata. A –show opció nem tesz semmit a swap módosításai a számítógépen. Csak statisztikákkal szolgál.
swapon --show
Ha nincs kimenet ebből a parancsból, akkor nincs swap konfigurálva.
Ha ezek a parancsok azt mutatták, hogy bizonyos swap terület már be van állítva, akkor a meglévő csereterület méretét figyelembe kell venni a létrehozandó swap fájl méretével kapcsolatos döntéseknél.
Mennyi csereterületre van szükségem?
A hagyományos válasz az volt, hogy „a RAM-mennyiség kétszerese”. De ezt akkor találták ki, amikor a számítógépek nagyon korlátozott RAM-mal rendelkeztek. Mivel a RAM olcsóbb lett, a programok és játékok pedig egyre több memóriát igényelnek, a PC specifikációi ennek megfelelően módosultak. A 32 GB RAM-mal rendelkező otthoni PC-k manapság nem ritkák. És nem fog 64 GB merevlemez-területet lefoglalni a csereterülethez, ha 32 GB RAM-mal rendelkezik. Ez egyértelműen túlzás.
A szükséges cseremennyiség gyújtós téma, hasonló ahhoz, hogy „melyik a legjobb szerkesztő”. Az egyik legésszerűbb megbeszélés, amelyet ebben a témában láttunk, a Ubuntu csere GYIK. Ez egy rövid és közérthető megközelítés (bár sok emberhez hasonlóan ők is félreértik, hogyan működik a cserelehetőség Linuxon). Van egy praktikus táblázat, amely megmutatja a rendszerben lévő RAM mennyiségének megfelelő csereterület ajánlott mennyiségét, valamint azt, hogy hibernálja-e a számítógépet vagy sem.
És a jó hír az, hogy teljesen mindegy, milyen értéket választasz. A cserefájlt mindig eltávolíthatjuk, és lecserélhetjük egy nagyobbra, vagy ami azt illeti, egy kisebbre. Vagy egyszerűen hozzáadhat egy másik cserefájlt.
Szed a swap fájl mérete a táblázatból, és futtassa egy ideig. Figyelje, hogy a rendszer hogyan használja a swap területet. Ha finomhangolásra van szükség, a változtatások könnyen elvégezhetők. Swap fájlokkal ez egy kétperces munka. Hasonlítsa össze ezt a partíciók beállításával egy élő Linux számítógépen.
Cserefájl létrehozása
Ne használja a fallocate parancsot a cserefájl létrehozásához. Ez a swapon man oldaláról van:
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.
Tehát, bár a fallocate gyorsabb, a dd to-t használjuk hozza létre a swap fájlt. A cikk kutatására használt gép két GB RAM-mal rendelkezik. Létre fogunk hozni egy 1 GB swap fájlt.
A lehetőségek a következők:
if: A bemeneti fájl. Ebben a példában a /dev/zero fájlt használjuk, amely nulla bájtos adatfolyamot biztosít.
/: A kimeneti fájl. Létre fogunk hozni egy fájlt a gyökérkönyvtárban, swapfile néven.
bs: A blokk mérete bájtokban. Ez adja meg, hogy egyszerre hány bájtot kell kiolvasni a bemeneti fájlból és írni a kimeneti fájlba.
count: Hány blokkot kell olvasni és írni. A fájl méretének kiszámításához ezt a számot megszorozzuk a bs értékkel.
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
Néhány statisztikai adat a fájl létrehozásakor jelenik meg.
Láthatjuk a fájlba írt blokkok (rekordok) számát, a fájl méretét, a fájl létrehozásához szükséges időt és az effektív adatátviteli sebességet.
Használja az ls parancsot a fájl megtekintéséhez a gyökérkönyvtárban:
ls /
A Swap fájl előkészítése
muszáj készítse elő a swap fájlt az mkswap paranccsal, mielőtt felhasználná. Nem kell más paramétert megadnunk az mkswap számára, mint a fájl elérési útja és neve:
sudo mkswap /swapfile
A fájl cserefájlként való használatra készült. Vegye figyelembe a fájlengedélyekre vonatkozó figyelmeztetést. Ezeket úgy kell módosítanunk, hogy a root felhasználó legyen az egyetlen, aki olvasni és írni tud a swap fájlba.
A Swap fájl használata
Az alapértelmezett engedélyek túl liberálisak, korlátoznunk kell őket, hogy csak a root használhassa a cserefájlt. A chmod segítségével módosítsa a fájlengedélyeket:
sudo chmod 600 /swapfile
Ez eltávolítja az összes engedélyt a fájlcsoport tagjaitól és másoktól, de lehetővé teszi a fájl tulajdonosának, a root számára, hogy olvassa és írjon a fájlt.
Használnunk kell a swapon parancsot, hogy a Linux tudja, hogy egy új cserefájl áll rendelkezésre. Csak az elérési utat és a fájlnevet kell megadnunk:
sudo swapon /swapfile
A cserefájl most aktív.
A Swap fájl hozzáadása az fstab-hoz
Annak érdekében, hogy a cserefájl elérhető legyen az újraindítás után, adja hozzá az /etc/fstab fájlhoz. Bármilyen szövegszerkesztőt használhat, de mi a folyamatot a grafikus Gedit szövegszerkesztővel mutatjuk be.
sudo gedit /etc/fstab
A következő sort kell hozzáadnunk a fájl aljához:
/swapfile none swap sw 0 0
A mezők a következők:
Fájlrendszer: A cserefájl elérési útja és neve.
Csatlakozási pont: A fájl nem úgy van csatlakoztatva, mint egy fájlrendszer, ezért a bejegyzés „nincs”.
Típus: Ez a „csere”.
Opciók: Indításkor a swapon -a (minden csereként megjelölt eszköz elindítása) meg lesz hívva az egyik rendszerindító szkriptből. Ez a beállítás arra utasítja a Linuxot, hogy ezt a bejegyzést swap erőforrásként kezelje, amelynek a swapon -a parancs irányítása alá kell tartoznia. Gyakran előfordul, hogy itt „alapértelmezett” értékeket használnak, mert egyes Linux-felhasználók tévesen úgy vélik, hogy ezt a mezőt figyelmen kívül hagyják. Mint látni fogjuk, ez nem így van. Tehát érdemes a megfelelő opciót használni.
Dump: Ez nullára állítható. Jelen esetben lényegtelen.
Pass: Ez nullára állítható. Jelen esetben lényegtelen.
Mentse el a változtatásokat, és zárja be a szerkesztőt.
Cserehasználat ellenőrzése
Ha meg szeretné nézni, hogy a csereterület használatban van-e, használja a swapon parancsot a –show kapcsolóval:
swapon --show
Az oszlopok a következők:
Név: A swap partíció vagy swap fájl neve.
Típus: A csereeszköz típusa.
Méret: A csereerőforrás mérete.
Használt: A felhasznált csereterület mennyisége.
Prio: Ennek a csereterületnek a prioritása.
A csereterület prioritása
Minden csereterület prioritást kap. Ha nem ad meg egyet, a rendszer automatikusan kioszt egyet. Az automatikusan kiosztott prioritások mindig negatívak. A manuálisan kiosztható prioritások tartománya 0-tól 32767-ig terjed. Először a magasabb prioritású erőforrásokat használja a rendszer.
Ha egynél több csereterületnek ugyanaz a prioritása, felváltva használják őket, amíg mindkettő meg nem telik, akkor a rendszer a következő legalacsonyabb prioritású csereterületet keresi. Ha csak egyetlen csereterületed van, akkor a prioritás természetesen lényegtelen. De megváltoztatjuk az általunk létrehozott swapfájl prioritását, hogy bemutassuk, hogyan kell csinálni.
A prioritás beállításához adja hozzá a pri= (priority) paramétert az /etc/fstab bejegyzéshez. Szerkessze az /etc/fstab fájlhoz hozzáadott sort, hogy így nézzen ki:
/swapfile none swap sw,pri=10 0 0
Vagyis adja hozzá a pri=10 értéket a beállítások mezőhöz, vesszővel elválasztva az „sw”-től. Ne hagyjon szóközt az „sw”, a vessző és a „pri=10” között. Indítsa újra a számítógépet, és használja a swapon –show parancsot:
swapon -- show
Ennek a swap területnek a prioritása 10-re emelkedett. Ami azt bizonyítja, hogy az /etc/fstab bejegyzés beállítási mezőjét nem hagyja figyelmen kívül.
Swap Space Made Easy
A kifejtést és a magyarázatot átvágva olyan egyszerűen és gyorsan készíthetünk új swap fájlt, mint ez:
sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2
És nézzük meg, hogy működött-e:
swapon --show
Ha véglegesen el akarja dobni, akkor az /etc/fstab fájlba.
Bumm. Elvégzett munka.