ZFS ARC Ayarlaması: Üst Sınırlar, Limitler ve Ölçülmesi Gerekenler
11 dakikalık okuma - 24 Haziran 2026

İş yüküne göre ZFS ARC ayarlaması. Hangi ayarların önemli olduğu, Linux ve FreeBSD'de zfs_arc_max'ın nasıl ayarlanacağı ve işlemin ne zaman tamamlandığının nasıl anlaşılacağı.
ZFS, varsayılan olarak okuma önbelleği için sistem RAM'inizin yaklaşık yarısını sessizce kullanır; yanlış türde bir sunucuda bu durum, takas etkinliği, OOM sonlandırmaları veya bir veritabanının bellek için dosya sistemiyle rekabet etmesi anlamına gelir. ZFS ARC ayarlaması, ARC'nin bu RAM'in ne kadarını gerçekten tutmasına izin verileceğine ve sınırı belirlemek için nelerden vazgeçeceğinize karar vermekle ilgilidir. Bu yazıda, ARC’nin belleği nasıl kullandığı, herhangi bir ayara dokunmadan önce neleri ölçmeniz gerektiği, değiştirmeye değer birkaç ayar ve dosya sunucuları, hipervizörler, veritabanları ve yedekleme hedefleri için mantıklı başlangıç noktaları ele alınmaktadır. ZFS’nin anlık görüntü (snapshot) özelliği ile ilgili olarak, ZFS anlık görüntüleri kılavuzumuza bakınız.
Herhangi bir ayar yapmadan önce ARC'yi ölçün
Normal bir yoğunluk dönemine ait temel verileri elde edene kadar tek bir ayar bile değiştirmeyin. Yoğun olmayan dönemlere ait anlık veriler sizi yanlış yöne yönlendirebilir. Geceleri yapılan yedeklemeler, haftalık raporlar ve toplu işler genellikle ARC davranışının ilginçleştiği alanlardır; bu nedenle verileri birkaç gün boyunca toplayın.
İhtiyacınız olanların çoğunu üç araç karşılar:
arcstat 1Hit ve miss sayaçları, talep ile önbellekleme etkinliği karşılaştırması ve mevcut ARC boyutunu canlı olarak kayan bir görünümde gösterir. Yük testleri ve yedekleme pencereleri sırasında kullanın.arc_summarytek bir anlık görüntü yazdırır: ARC boyutu ve hedefi, MFU/MRU dağılımı, meta veri oranları ve etkin ayarlanabilir parametreler. Yalnızcaarc_summary -s arckomutunu yalnızca ARC bölümü için çalıştırın.- Ham sayaçlar
/proc/spl/kstat/zfs/arcstatsbulunur vekstat.zfs.miscvevfs.zfssysctl ağaçlarında bulunur. Biçimlendirilmiş çıktıyı ayrıştırmak yerine, bunları izleme sisteminden alın.
Herhangi bir değişiklikten önce kaydedilmesi gereken sayaçlar:
| Metrik | Nerede bulunur | Neden önemlidir |
|---|---|---|
ARC boyutu, hedef, maksimum (size, c, c_max) | arcstat, kstat | ARC'nin tavan sınırına sabitlenmiş mi yoksa büyüme alanı kalmış mı olduğunu gösterir |
| Talep verileri ve meta veri isabet oranları | arcstat, arc_summary | Talep ıskalamaları, doğrudan uygulama gecikmesine yol açar |
Kullanılabilir bellek ve takas etkinliği (si/so) | free -h, vmstat 1 | ARC büyükken devam eden takas girişi/çıkışı, bellek baskısının en açık işaretidir |
Disk hizmet süresi (await) ve kullanım oranı | iostat -x | ARC kaçırmalarını gerçek depolama darboğazlarıyla ilişkilendirir |
memory_throttle_count | /proc/spl/kstat/zfs/arcstats | Artan sayı, ZFS'nin bellek baskısı nedeniyle kısıtlandığını doğrular |
Bu konuda insanların sıklıkla yanıldığı iki nokta vardır. Boş belleği değil, kullanılabilir belleği izleyin; Linux, düşük serbest RAM'i normal bir durum olarak gösterir ve bu tek başına bir sorun değildir. Önemli olan işaret, sıfıra yakın kullanılabilir bellek ile sürekli takas faaliyetinin birleşmesidir (bunun nedeni Linux bellek yönetimi kılavuzunda açıklanmaktadır). Ayrıca isabet oranını bir hedef olarak değil, bir eğilim olarak değerlendirin. Takas yapan bir sistemde %99 isabet oranı, bir başarı değil, ayarlama hatasıdır.
Önemli olan dört ARC ayarı
Üretim ortamındaki ayarlamaların çoğu dört ayara indirgenebilir. Ayarı, temel ölçümde gerçekte ölçtüğünüz baskıya göre ayarlayın. Takas etkinliği şunu gösterir zfs_arc_max. Sıcak önbelleği sürekli silen müşteri kaybını geri kazanma işlemi zfs_arc_min. Yavaş dizin taramaları ise meta veri sınırına işaret eder.
| Ayarlaması | Ne işe yarar | Ne zaman değiştirilmeli | Yanlış ayarlandığında risk |
|---|---|---|---|
zfs_arc_max | ARC RAM kullanımında katı üst sınır | Ayrılmış RAM gerektiren veritabanlarını veya sanal makineleri barındırma | Çok düşük: daha fazla disk I/O ve gecikme. Çok yüksek: takas baskısı veya OOM. |
zfs_arc_min | ARC'nin aşırı derecede küçülmesini engelleyen alt sınır | Önbelleği sürekli temizleyen kısa süreli bellek ani artışları olan iş yükleri | Çok yüksek: gerçek bellek baskısı sırasında uygulamaların kaynak yetersizliği yaşamasına neden olur |
zfs_arc_meta_limit_percent | Meta veriler için kullanılabilir ARC'nin payı (eski zfs_arc_meta_limit) | Milyonlarca küçük dosya, derin dizin ağaçları, yavaş ls/find | Çok düşük: dizin aramaları çok yavaşlar. Çok yüksek: veri önbelleklemeyi kısıtlar. |
zfs_arc_free_target | ZFS'nin kullanılabilir tutmaya çalıştığı boş sistem belleği miktarı | Ani büyük bellek tahsis patlamaları yaşayan sunucular (VM başlatma, büyük sorgu planları) | Çok yüksek: RAM mevcut olsa bile ARC küçük kalır |
Gördüğünüz baskıyı gideren en küçük değişiklikle başlayın. zfs_arc_max, doğru üst sınır iş yüküne bağlıdır (bir sonraki bölümde ele alınacaktır). zfs_arc_min, eğer bir alt sınır gerekiyorsa zfs_arc_max makul bir başlangıç noktasıdır (eğer bir alt sınıra ihtiyacınız varsa). Meta veriler için, OpenZFS'nin son varsayılan ayarları zaten meta verilere ARC'nin %75'ini zfs_arc_meta_limit_percent, bu da çoğu iş yükü için yeterlidir; yalnızca meta veri eksiklikleri açıkça görüldüğünde bu ayara dokunun arcstat.
Linux ve FreeBSD'de değişiklikleri uygulama
Linux'ta, sysfs parametre dosyasına yazarak bir değişikliği çalışma zamanında test edin. Yeniden başlatmaya gerek yoktur:
echo 17179869184 > /sys/module/zfs/parameters/zfs_arc_maxBu, zfs_arc_max değeri hemen 16 GiB olarak ayarlanır. Değişikliğin yeniden başlatma sonrasında da geçerli kalması için bunu /etc/modprobe.d/zfs.conf:
options zfs zfs_arc_max=17179869184FreeBSD'de, çalışma zamanı değişiklikleri sysctl:
sysctl vfs.zfs.arc_max=17179869184Aynı değeri /boot/loader.conf:
vfs.zfs.arc_max="17179869184"Her seferinde tek bir ayarı, toplam RAM'in yaklaşık %10'u kadar küçük adımlarla değiştirin. Sorun penceresini izleyin. Değişikliği yalnızca takas alanı sıfırda kalırsa ve gecikme süresi sabitse koruyun. Yalnızca çalışma zamanı testi geçtikten sonra kalıcı hale getirin.
İş yüküne göre ARC ayarlaması
Toplam RAM, başlangıç noktası olarak yanlış bir seçimdir. ARC boyutlandırması, cihazdaki iş yükü dağılımına göre yapılmalıdır.
| İş Yükü | Başlangıç zfs_arc_max | ARC önceliği | Notlar | Anahtar metrik |
|---|---|---|---|---|
| Özel dosya sunucusu / NAS | RAM'in %75 ila %80'i | Veri ve meta veri | Ön yükleme açık. Önemli olan agresif önbellek kullanımıdır. | Genel isabet oranı |
| Sanallaştırma ana bilgisayarı | RAM'in %30 ila %40'ı | Dengeli | Konuk RAM'i ve ana bilgisayar görevleri için yedek bırakın. Sıfırdan farklı herhangi bir si/so değer, sınırın daha da artırılması gerektiği anlamına gelir. | Ana bilgisayar takas alanı (si/so) |
| Veritabanı sunucusu | RAM'in %25 ila %50'si | Meta veriye dayalı | Önce veritabanı motoru için bellek ayırın. primarycache=metadata Motor kendi tampon önbelleğini yönetiyorsa ayarlayın. | Talep kaçırmaları |
| Yedekleme / arşivleme hedefi | İhtiyatlı sınır | Yalnızca meta veriler | Ayar primarycache=metadata böylece tek geçişli taramalar yararlı blokları silmez. | Ön yükleme kaçırmaları, meta veri isabet oranı |
| Analitik / tekrarlanan okuma | Diğer önbellekler ayrıldıktan sonra daha yüksek sınır | MFU ağırlıklı | NVMe üzerindeki L2ARC, sorgu çalıştırmaları boyunca sık kullanılan çalışma kümesini koruyabilir. | Talep kaçırmaları |
Bir VM ana bilgisayarı, konuklarıyla belleği paylaşmak zorundadır; bu nedenle %30 ila %40'lık bir sınır güvenli bir varsayılan değerdir ve %50 çoğu yapılandırmada zaten çok yüksektir. PostgreSQL ve MySQL gibi veritabanları kendi tampon önbelleklerini yönetir; bu nedenle önce motor için bellek ayırır ve kalan kısmı ARC'ye bırakırsınız. Yedekleme hedefleri, primarycache=metadata çünkü okunan verilere nadiren tekrar ihtiyaç duyulur ve gece yedeklemesinin tüm havuzu tarayarak ilerlerken önbelleğin geri kalanını boşaltmasını istemezsiniz. Her iş yükünde, ARC zfs_arc_max değeri, sınırın çok yüksek olduğu anlamına gelir; bu kural değişmez.
Sorunları teşhis etme ve ne zaman durması gerektiğini bilme
Boyutu yetersiz bir ARC, sistemde hala boş RAM varken yüksek okuma IOPS'si, düşük talep isabet oranları ve yavaş dizin taraması şeklinde kendini gösterir. Boyutu fazla olan bir ARC ise daha az belirgindir. İsabet oranı iyi görünür, ancak sunucu takas yapmaya başlar, yük ortalamaları yükselir, işlemler D durumunda kalır; en kötü durumda ise OOM killer kurban seçmeye başlar. Önbellek sağlıklı görünür, ancak sunucu çok kötü çalışır.
Meta veri baskısı, demand_metadata_bytes çok daha yüksek seviyede olduğunda ortaya çıkar demand_data_bytes olduğunda ortaya çıkar arc_summarydeğerinden çok daha yüksek olduğunda ortaya çıkar. Bu, meta verilerin veri ile alan için rekabet ettiği durumdur ve meta veri yüzde sınırının yükseltilmesi gerekir.
Gördüklerinizi, kontrol etmeniz gereken ilk ayarla karşılaştırın:
| Belirti | Muhtemel neden | Kontrol edilecek ilk ayar | Sonraki adım |
|---|---|---|---|
Yüksek await yüksek talep hatalarıyla | Çalışma kümesi ARC'yi aşıyor | zfs_arc_max | RAM ekleyin veya L2ARC ekleyin |
| ARC büyükken takas etkinliği | ARC, işletim sistemini veya uygulamaları yetersiz bırakıyor | zfs_arc_max | Sınırı düşürün |
| Bellek ani artışlarından sonra performans düşüyor | Geri kazanım sırasında agresif silme | zfs_arc_min | Tabanı %25 ile %50 arasında ayarlayın arc_max |
Yavaş ls, find, küçük dosya işlemleri | Meta veri önbelleği yetersizliği | zfs_arc_meta_limit_percent | Meta veri yüzdesini artırın |
Artan memory_throttle_count | Sistem genelinde bellek baskısı | zfs_arc_max | Sınırı düşürün; L2ARC dizininde şişkinlik olup olmadığını kontrol edin |
L2ARC ücretsiz değildir. L2ARC girdilerinin dizini birincil ARC'de bulunur ve bu ek yük toplam ARC kapasitesinin yaklaşık üçte birini aşarsa, ikincil önbellek yarardan çok zarar verir. L2ARC'yi yalnızca çalışma kümesi RAM'den daha büyük ancak yine de hızlı bir NVMe aygıtına sığabiliyorsa ve birincil ARC isabet oranı zaten sağlıklıysa kullanın.
Ayarlamayı durdurmanın doğru zamanı, gecikme sabit kaldığında, orijinal soruna neden olan aynı yoğunluk aralığında takas sıfırda kaldığında ve daha fazla değişiklik artık hiçbir şeyi iyileştirmediğinde gelir. Sunucu takas yapıyorsa, yüksek isabet oranı hiçbir anlam ifade etmez. Bu noktayı geçtikten sonra, ayarları değiştirmeyi bırakın ve yalnızca aynı iş yükü altında aynı sorun tekrar ortaya çıkarsa ayarları yeniden gözden geçirin.
VM'leriniz veya veritabanlarınızla bellek için rekabet etmeden ZFS'yi düzgün bir şekilde çalıştıracak RAM kapasitesine sahip bir sunucuya ihtiyacınız varsa (öncelikle "Gerçekten ne kadar RAM'e ihtiyacınız var?" başlıklı yazıyı okumanızda fayda var), FDC özel sunucularına bir göz atın.

Dijital göz yorgunluğu: Ekranların yoğun olarak kullanıldığı bir dünyada görme yeteneğinizi nasıl koruyabilirsiniz?
Bütün gün ekrana mı bakıyorsunuz? Kanıtlanmış teknikler ve araçlarla dijital göz yorgunluğunu nasıl azaltabileceğinizi öğrenin. Bu kılavuz, uzaktan çalışanlar, yazılım geliştiriciler ve teknoloji sektöründe çalışan herkes için vazgeçilmezdir.
4 dakikalık okuma - 21 Mayıs 2025
Güçlü ve sınırsız bir VPS'ye sahip olmanın önemi
8 dakikalık okuma - 9 Mayıs 2025

Sorularınız mı var veya özel bir çözüme mi ihtiyacınız var?
Esnek seçenekler
Küresel erişim
Anında dağıtım
Esnek seçenekler
Küresel erişim
Anında dağıtım