ZFS ARC-beállítás: felső határok, korlátok és mérendő értékek
11 perc olvasás - 2026. június 24.

ZFS ARC-beállítások a terhelés szerint. Melyik beállítások fontosak, hogyan kell beállítani a zfs_arc_max értéket Linuxon és FreeBSD-n, és hogyan lehet megállapítani, hogy mikor fejeztük be a beállítást.
Az ZFS alapértelmezés szerint csendben lefoglalja a rendszer RAM-jának körülbelül felét olvasási gyorsítótárának, és nem megfelelő típusú szerveren ez swap-tevékenységet, OOM-leállásokat vagy azt jelenti, hogy az adatbázis a fájlrendszerrel verseng a memóriáért. Az ZFS ARC-beállítás lényege annak eldöntése, hogy az ARC valójában mennyi RAM-ot tarthat meg, és mit kell feladni a korlát beállításához. Ez a bejegyzés bemutatja, hogyan használja az ARC a memóriát, mit érdemes mérni, mielőtt bármit is módosítanál, melyek azok a néhány beállítások, amelyeket érdemes megváltoztatni, valamint a fájlkiszolgálók, hipervizorok, adatbázisok és biztonsági mentési célok számára javasolt kiindulási pontokat. A ZFS pillanatképekkel kapcsolatos részletekről a ZFS pillanatképekről szóló útmutatónkban olvashatsz.
Mérje meg az ARC-értéket, mielőtt bármit is beállítana
Ne változtasson meg egyetlen beállítást sem, amíg nincs rendelkezésre álló alapérték a normál forgalmas időszakból. A csendes időszakban készített pillanatfelvételek rossz irányba terelhetik. Az éjszakai biztonsági mentések, a heti jelentések és a kötegelt feladatok során általában érdekesebbé válik az ARC viselkedése, ezért több napon keresztül rögzítse az adatokat.
Három eszköz fedezi a szükséges funkciók nagy részét:
arcstat 1Élő, görgethető nézetet nyújt a találati és hibás számlálókról, a kereslet és az előzetes letöltés tevékenységéről, valamint az aktuális ARC-méretről. Használja terheléses tesztek és biztonsági mentési ablakok során.arc_summaryEgyetlen pillanatképet nyomtat ki: az ARC méretét és célértékét, az MFU/MRU megoszlást, a metaadatok arányait és az aktív beállítható paramétereket. Futtassa aarc_summary -s arcparancsot kizárólag az ARC szakaszra.- A nyers számlálók a
/proc/spl/kstat/zfs/arcstatsLinuxon, valamint akstat.zfs.miscésvfs.zfssysctl fákban találhatók. Ezeket inkább a felügyeleti rendszerből gyűjtsük össze, a formázott kimenet elemzése helyett.
A változtatások előtt érdemes rögzíteni a következő számlálókat:
| Mérőszám | Hol található | Miért fontos |
|---|---|---|
ARC méret, célérték, maximális érték (size, c, c_max) | arcstat, kstat | Megmutatja, hogy az ARC elérte-e a felső határát, vagy van még helye a növekedésre |
| A keresleti adatok és a metaadatok találati arányai | arcstat, arc_summary | A keresleti eltérések közvetlenül az alkalmazás késleltetéséhez vezetnek |
Rendelkezésre álló memória és swap-tevékenység (si/so) | free -h, vmstat 1 | Az ARC nagy méret mellett tartósan fennálló swap-be/ki tevékenység a memória terheltség legegyértelműbb jele |
Lemezszolgáltatási idő (await) és kihasználtsága | iostat -x | Összekapcsolja az ARC-hibákat a tényleges tárolási szűk keresztmetszetekkel |
memory_throttle_count | /proc/spl/kstat/zfs/arcstats | A szám emelkedése megerősíti, hogy a ZFS-t memóriahiány miatt korlátozzák |
Két dologban gyakran tévednek az emberek. A rendelkezésre álló memóriát kell figyelni, nem a szabad memóriát; a Linux nyugodtan jelenti az alacsony szabad RAM-ot stabil állapotként, és ez önmagában nem jelent problémát. Az a jel, amire figyelni kell, az a nullához közeli rendelkezésre álló memória, tartós swap-tevékenységgel párosulva (a Linux memóriakezelési bevezetője elmagyarázza, miért). A találati arányt pedig trendként kezelje, ne célként. Egy swap-oló gépen elért 99%-os találati arány a hangolás kudarca, nem pedig sikere.
A négy fontos ARC-beállítás
A termelési hangolás nagy része négy beállításra vezethető vissza. A beállítást igazítsa az alapvonalban ténylegesen mért nyomáshoz. A csereaktivitás a következőre utal zfs_arc_max. A forró gyorsítótárat folyamatosan törlő churn visszanyerése a zfs_arc_min. A lassú könyvtárbejárások a metaadat-korlátra utalnak.
| Beállítási paraméter | Mit csinál | Mikor kell módosítani | Kockázat helytelen beállítás esetén |
|---|---|---|---|
zfs_arc_max | Az ARC RAM-használat szigorú felső határa | Olyan adatbázisok vagy virtuális gépek tárhelyezése, amelyek számára RAM-ot kell fenntartani | Túl alacsony: több lemez-I/O és késleltetés. Túl magas: swap-terhelés vagy OOM. |
zfs_arc_min | Az a küszöbérték, amely megakadályozza az ARC agresszív zsugorodását | Olyan terhelések, amelyek rövid memóriacsúcsokkal folyamatosan törlik a gyorsítótárat | Túl magas: az alkalmazások memóriahiányt szenvednek valódi memóriaigény esetén |
zfs_arc_meta_limit_percent | A metaadatok számára rendelkezésre álló ARC aránya (felváltja a régebbi zfs_arc_meta_limit) | Több millió kis fájl, mély könyvtárfák, lassú ls/find | Túl alacsony: a könyvtárkeresések rendkívül lassúak. Túl magas: korlátozza az adat-gyorsítótárazást. |
zfs_arc_free_target | Mennyi szabad rendszermemóriát próbál a ZFS elérhetővé tartani | Szerverek hirtelen nagy allokációs csúcsokkal (VM indítás, nagy lekérdezési tervek) | Túl magas: az ARC kicsi marad, még akkor is, ha RAM áll rendelkezésre |
Kezdje a legkisebb változtatással, amely megoldja a látható terhelést. zfs_arc_maxA megfelelő felső határ a terheléstől függ (ezt a következő szakasz tárgyalja). zfs_arc_minesetben a zfs_arc_max és ez ésszerű kiindulási pont, ha egyáltalán szükség van ilyenre. A metaadatok esetében a legújabb OpenZFS alapértelmezések máris a metaadatoknak az ARC 75%-át biztosítják a zfs_arc_meta_limit_percent, ami a legtöbb terhelés esetén bőséges; ezt csak akkor módosítsd, ha a metaadatok hiányai egyértelműen láthatók a arcstat.
Változások alkalmazása Linuxon és FreeBSD-n
Linuxon a sysfs paraméterfájlba való írással tesztelhetjük a módosítást futásidőben. Újraindításra nincs szükség:
echo 17179869184 > /sys/module/zfs/parameters/zfs_arc_maxEzzel zfs_arc_max az értéket azonnal 16 GiB-ra állítja. Ahhoz, hogy a módosítás újraindítás után is megmaradjon, vegye fel a /etc/modprobe.d/zfs.conf:
options zfs zfs_arc_max=17179869184FreeBSD-n a futásidejű módosításokhoz a sysctl:
sysctl vfs.zfs.arc_max=17179869184Az azonos érték megőrzéséhez a /boot/loader.conf:
vfs.zfs.arc_max="17179869184"Egyszerre csak egy beállítást módosítson, a teljes RAM-kapacitás kb. 10%-os kis lépésekben. Figyelje a problémajelző ablakot. Csak akkor tartsa meg a módosítást, ha a swap értéke nulla marad, és a késleltetés stabil. Csak a futásidejű teszt sikeres teljesítése után állítsa be állandónak.
Az ARC munkaterhelés szerinti beállítása
A teljes RAM-memória nem a megfelelő kiindulási pont. Az ARC méretezését a rendszer terhelési összetételének kell követnie.
| Terhelés | Kezdő zfs_arc_max | ARC prioritás | Megjegyzések | Fő mutató |
|---|---|---|---|---|
| Dedikált fájlszerver / NAS | A RAM 75–80%-a | Adatok és metaadatok | Előzetes betöltés bekapcsolva. A lényeg az agresszív gyorsítótár. | Átfogó találati arány |
| Virtualizációs gazdagép | A RAM 30–40%-a | Kiegyensúlyozott | Hagyjon tartalékot a vendég RAM-jának és a gazdagép feladataiknak. Bármely nullától eltérő si/so érték további korlátozást jelent. | Gazdagép swap (si/so) |
| Adatbázis-kiszolgáló | a RAM 25–50%-a | Metadatokra támaszkodó | Először foglaljon memóriát az adatbázis-motor számára. Állítsa be primarycache=metadata ha a motor kezeli a saját puffer-gyorsítótárát. | Igény szerinti hiányok |
| Biztonsági mentés / archiválás célja | Konzervatív felső határ | Csak metaadatok | Beállítva primarycache=metadata hogy az egylépéses szkennelés ne távolítsa el a hasznos blokkokat. | Előzetes letöltés elmulasztásai, metaadatok találati aránya |
| Elemzés / ismételt olvasás | Magasabb felső határ más gyorsítótárak lefoglalása után | MFU-intenzív | Az NVMe-n futó L2ARC a lekérdezések során megőrizheti a gyakran használt munkakészletet. | Keresési eltévesztések |
A virtuális gép-gazdagépnek meg kell osztania a memóriát a vendégekkel, ezért a 30–40%-os korlát biztonságos alapértelmezés, a 50% pedig a legtöbb konfigurációban már túl magas. Az olyan adatbázisok, mint a PostgreSQL és a MySQL, saját puffer-gyorsítótárukat kezelik, ezért először a motor számára kell memóriát fenntartani, és a maradékot az ARC-nek kell átadni. A biztonsági mentési célok előnyös helyzetben vannak primarycache=metadata , mivel az olvasott adatokra ritkán van szükség újra, és nem szeretnénk, ha az éjszakai biztonsági mentés végigfutna az egész poolon, és közben kiürítené a cache többi részét. Minden terhelés esetében, ha az ARC-t zfs_arc_max , a felső határ túl magas; ez a szabály nem változik.
A problémák diagnosztizálása és annak felismerése, mikor kell leállni
A túl kicsi ARC magas olvasási IOPS-értékekkel, alacsony keresési találati arányokkal és lassú könyvtárböngészéssel jár, miközben a rendszernek még van szabad RAM-ja. A túl nagy ARC kevésbé nyilvánvaló. A találati arány rendben tűnik, de a rendszer elkezdi a swapolást, a terhelési átlagok emelkednek, a folyamatok D állapotba kerülnek, miközben a kernel igény szerint visszanyeri az ARC-oldalakat, és a legrosszabb esetben az OOM-killer elkezd áldozatokat kiválasztani. A gyorsítótár látszólag rendben van, de a szerver szörnyen működik.
A metaadat-terhelés akkor jelentkezik, amikor demand_metadata_bytes sokkal magasabb, mint demand_data_bytes -nál arc_summary. Ekkor a metaadatok az adatokkal versengenek a helyért, és érdemes megemelni a metaadatok százalékos korlátját.
Hasonlítsa össze a látottakat az első ellenőrizendő beállítással:
| Tünet | Valószínű ok | Elsőként ellenőrizendő beállítás | Következő lépés |
|---|---|---|---|
Nagy await magas igény mellett kihagyások | A munkakészlet meghaladja az ARC-t | zfs_arc_max | RAM vagy L2ARC hozzáadása |
| Swap-tevékenység, miközben az ARC nagy | Az ARC kimeríti az operációs rendszert vagy az alkalmazásokat | zfs_arc_max | Csökkentse a felső határt |
| A teljesítmény romlik a memória-csúcsok után | Agresszív kiürítés a memória-visszanyerés során | zfs_arc_min | Állítson be egy alsó határt a arc_max |
Lassú ls, find, kis fájlokkal kapcsolatos műveletek | A metaadat-gyorsítótár kimerülése | zfs_arc_meta_limit_percent | Növelje a metaadatok százalékos arányát |
Növekvő memory_throttle_count | Rendszer-szintű memóriaigény | zfs_arc_max | Csökkentse a felső határt; ellenőrizze az L2ARC-index túlterheltségét |
Az L2ARC nem ingyenes. Az L2ARC-bejegyzések indexe az elsődleges ARC-ben található, és ha ez a terhelés meghaladja az ARC teljes kapacitásának körülbelül egyharmadát, a másodlagos gyorsítótár több kárt okoz, mint hasznot. Csak akkor érje el az L2ARC-ot, ha a munkakészlet nagyobb, mint a RAM, de még mindig elfér egy gyors NVMe-eszközön, és csak akkor, ha az elsődleges ARC találati aránya már megfelelő.
A hangolás befejezésének megfelelő időpontja az, amikor a késleltetés stabil marad, a swap nulla szinten marad ugyanazon a forgalmas időszakban, amely az eredeti problémát okozta, és a további változtatások már nem javítanak semmin. A magas találati arány semmit sem jelent, ha a szerver swapol. Ezen a ponton túl hagyja abba a beállítások módosítását, és csak akkor vizsgálja meg őket újra, ha ugyanaz a probléma ugyanazon a terhelés mellett újra felmerül.
Ha olyan szerverre van szüksége, amelynek elegendő RAM-tartaléka van a ZFS megfelelő futtatásához anélkül, hogy a virtuális gépekkel vagy adatbázisokkal kellene versengenie a memóriáért (érdemes először elolvasni, hogy valójában mennyi RAM-ra van szüksége), akkor nézze meg az FDC dedikált szervereit.

Digitális szemfáradás: Hogyan védje meg látását a képernyőhasználat-intenzív világban
Egész nap a képernyőt bámulja? Ismerje meg, hogyan csökkentheti a digitális szemfáradást bevált technikákkal és eszközökkel. Ez az útmutató elengedhetetlen a távmunkások, a fejlesztők és a technológiai ágazatban dolgozók számára.
4 perc olvasás - 2025. május 21.
Miért fontos egy nagy teljesítményű, korlátlan adatforgalmú VPS?
8 perc olvasás - 2025. május 9.

Kérdése van, vagy egyedi megoldásra van szüksége?
Rugalmas lehetőségek
Globális elérés
Azonnali telepítés
Rugalmas lehetőségek
Globális elérés
Azonnali telepítés