ZFS ARC-beállítás: felső határok, korlátok és mérendő értékek

11 perc olvasás - 2026. június 24.

hero section cover
Tartalomjegyzék
  • Mérje meg az ARC-értéket, mielőtt bármit is beállítana
  • A négy fontos ARC-beállítás
  • Az ARC munkaterhelés szerinti beállítása
  • A problémák diagnosztizálása és annak felismerése, mikor kell leállni
Megosztás

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_summary Egyetlen 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 a arc_summary -s arc parancsot kizárólag az ARC szakaszra.
  • A nyers számlálók a /proc/spl/kstat/zfs/arcstats Linuxon, valamint a kstat.zfs.misc és vfs.zfs sysctl 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ámHol találhatóMiért fontos
ARC méret, célérték, maximális érték (size, c, c_max)arcstat, kstatMegmutatja, 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ányaiarcstat, arc_summaryA 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 1Az 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ágaiostat -xÖsszekapcsolja az ARC-hibákat a tényleges tárolási szűk keresztmetszetekkel
memory_throttle_count/proc/spl/kstat/zfs/arcstatsA 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éterMit csinálMikor kell módosítaniKockázat helytelen beállítás esetén
zfs_arc_maxAz ARC RAM-használat szigorú felső határaOlyan adatbázisok vagy virtuális gépek tárhelyezése, amelyek számára RAM-ot kell fenntartaniTúl alacsony: több lemez-I/O és késleltetés. Túl magas: swap-terhelés vagy OOM.
zfs_arc_minAz a küszöbérték, amely megakadályozza az ARC agresszív zsugorodásátOlyan terhelések, amelyek rövid memóriacsúcsokkal folyamatosan törlik a gyorsítótáratTúl magas: az alkalmazások memóriahiányt szenvednek valódi memóriaigény esetén
zfs_arc_meta_limit_percentA 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/findTú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_targetMennyi szabad rendszermemóriát próbál a ZFS elérhetővé tartaniSzerverek 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_max

Ezzel 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=17179869184

FreeBSD-n a futásidejű módosításokhoz a sysctl:

sysctl vfs.zfs.arc_max=17179869184

Az 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ésKezdő zfs_arc_maxARC prioritásMegjegyzésekFő mutató
Dedikált fájlszerver / NASA RAM 75–80%-aAdatok és metaadatokElőzetes betöltés bekapcsolva. A lényeg az agresszív gyorsítótár.Átfogó találati arány
Virtualizációs gazdagépA RAM 30–40%-aKiegyensúlyozottHagyjon 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%-aMetadatokra 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éljaKonzervatív felső határCsak metaadatokBeá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ásMagasabb felső határ más gyorsítótárak lefoglalása utánMFU-intenzívAz 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ünetValószínű okElsőként ellenőrizendő beállításKövetkező lépés
Nagy await magas igény mellett kihagyásokA munkakészlet meghaladja az ARC-tzfs_arc_maxRAM vagy L2ARC hozzáadása
Swap-tevékenység, miközben az ARC nagyAz ARC kimeríti az operációs rendszert vagy az alkalmazásokatzfs_arc_maxCsökkentse a felső határt
A teljesítmény romlik a memória-csúcsok utánAgresszív kiürítés a memória-visszanyerés soránzfs_arc_minÁllítson be egy alsó határt a arc_max
Lassú ls, find, kis fájlokkal kapcsolatos műveletekA metaadat-gyorsítótár kimerülésezfs_arc_meta_limit_percentNövelje a metaadatok százalékos arányát
Növekvő memory_throttle_countRendszer-szintű memóriaigényzfs_arc_maxCsö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.

Blog

Kiemelt ezen a héten

További cikkek
Digitális szemfáradás: Hogyan védje meg látását a képernyőhasználat-intenzív világban

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.

További cikkek
background image

Kérdése van, vagy egyedi megoldásra van szüksége?

icon

Rugalmas lehetőségek

icon

Globális elérés

icon

Azonnali telepítés

icon

Rugalmas lehetőségek

icon

Globális elérés

icon

Azonnali telepítés