bcache vs dm-cache: Linux SSD Önbellekleme Karşılaştırması

11 dakikalık okuma - 28 Mayıs 2026

hero section cover
İçindekiler
  • bcache ve dm-cache: Linux'ta SSD Önbellekleme
  • Bcache Nasıl Çalışır?
  • dm-cache Nasıl Çalışır?
  • Önbellekleme Modları
  • bcache ve dm-cache: Hangisi Kullanılmalı
  • Sonuç
Paylaş

Linux'ta SSD önbellekleme için bcache ve dm-cache'i karşılaştırın. Kurulum, performans, önbellekleme modları ve her birinin ne zaman kullanılacağı.

bcache ve dm-cache: Linux'ta SSD Önbellekleme

SSD'ler hızlıdır ancak gigabayt başına maliyeti yüksektir. HDD'ler ucuzdur ancak yavaştır. Linux, bunları birleştirmek için iki çekirdek düzeyinde araç sunar: bcache ve dm-cache. Her ikisi de daha büyük bir HDD'nin önünde şeffaf bir önbellek olarak SSD kullanır, ancak mimari, kurulum gereksinimleri ve en iyi performans gösterdikleri alanlar bakımından farklılık gösterir.


 

Bcache Nasıl Çalışır?

Bcache, 3.10 sürümünden (Haziran 2013) beri Linux çekirdeğinde bulunmaktadır. Blok katmanında çalışır, bu nedenle UUID'leri destekleyen tüm dosya sistemleriyle uyumludur.

Dahili olarak, bcache hibrit bir B+ ağacı/günlük yapısı kullanır. SSD depolama alanını, silme bloğu sınırlarına hizalanmış sabit boyutlu kovalara (128K ila 2MB) böler. Bu, rastgele yazma işlemlerini sıralı yazma işlemlerine dönüştürür, bu da yazma amplifikasyonunu azaltır ve SSD'nin ömrünü uzatır. 4MB'nin üzerindeki sıralı I/O işlemleri önbelleği otomatik olarak atlar, böylece SSD'nin en fazla değer kattığı rastgele erişim modellerine odaklanmasını sağlar.

Bcache ayrıca SSD gecikmesini gerçek zamanlı olarak izler. Okuma gecikmesi 2 ms'yi veya yazma gecikmesi 20 ms'yi aşarsa, önbellek cihazının bir darboğaz haline gelmesini önlemek için trafiği kısıtlar.

Kurulum

Yükleyin bcache-tools'yi yükleyin, ardından yedekleme cihazınızı ve önbellek cihazınızı biçimlendirin:

make-bcache -B /dev/sdb          # format HDD as backing device
make-bcache -C /dev/sdc          # format SSD as cache device
echo <UUID> > /sys/block/bcache0/bcache/attach   # attach cache

Çalışma zamanı ayarlaması, /sys/block/bcache<N>/bcache/ sysfs arayüzü üzerinden gerçekleştirilir; burada önbellekleme modlarını, sıralı I/O eşiklerini ve gecikme hedeflerini ayarlayabilirsiniz. RAID dizileri için, --data-offset kullanarak şerit genişliğinizle hizalayın.

Tek sorun: kurulum verileri siler. Her iki aygıt da bcache hedefleri olarak biçimlendirilmelidir, bu nedenle mevcut bir dosya sistemine önce silmeden bcache ekleyemezsiniz. Bcache aygıtlarının boyutu da oluşturulduktan sonra değiştirilemez.

Performans

Bcache'in yazma konsolidasyonu, ona güçlü rastgele yazma rakamları sağlar. Karşılaştırmalı testlerde, yalnızca ham SSD'de 12.200 IOPS'ye kıyasla yaklaşık 18.500 rastgele 4K yazma IOPS'ye ulaşmıştır. Rastgele okuma verimi, uygun donanımla yaklaşık 1.000.000 IOPS'ye ulaşabilir.

Şifrelenmiş iş yükleri için, altta yatan sürücüleri tek tek şifrelemek yerine /dev/bcache<N> altta yatan sürücüleri tek tek şifrelemek yerine cihazın üzerine dm-crypt katmanı ekleyin. Bcache, şifreleme öncesinde yazma işlemlerini birleştirebildiği için bu genellikle daha iyi performans sağlar.

dm-cache Nasıl Çalışır?

dm-cache, mevcut bir mantıksal birimin üzerinde yer alan bir Device Mapper hedefidir. Üç alt aygıt kullanır: bir kaynak aygıt (HDD), bir önbellek aygıtı (SSD veya NVMe) ve blok konumlarını ve kirli durumları izleyen bir meta veri aygıtı. Varsayılan önbellek politikası, karışık iş yüklerinde sık kullanılan verileri tanımlayan smq'dur (Stochastic Multi-Queue).

En önemli avantajı: dm-cache, mevcut verileri yok etmeden canlı bir LVM birimine katmanlanabilir. Ayrıca standart LVM komutlarını kullanarak boyutunu değiştirebilirsiniz.

LVM ile kurulum

dm-cache'i yapılandırmanın pratik yolu lvmcache. Manuel dmsetup yapılandırma mümkündür ancak hataya açıktır ve yeniden başlatmalardan sonra kaybolur. LVM yaklaşımı:

  1. Hem HDD hem de SSD üzerinde Fiziksel Birimler (PV'ler) oluşturun.
  2. Her iki PV'yi de tek bir Birim Grubuna (VG) ekleyin.
  3. Üç Mantıksal Birim oluşturun: biri yedekleme verileri (HDD), biri önbellek (SSD), biri meta veriler (SSD) için.
  4. Önbellek ve meta veri LV'lerini bir önbellek havuzunda birleştirin:
    lvconvert --type cache-pool --poolmetadata <meta_lv> <cache_lv>
  5. Havuza kaynağı ekleyin:
    lvconvert --type cache --cachepool <pool_lv> <data_lv>

Dikkat edilmesi gereken bir nokta: dosya sistemini UUID ile değil, /dev/mapper/ yolunu kullanarak bağlayın, UUID ile değil. UUID ile bağlama, önbellek katmanını atlayıp doğrudan kaynak cihaza ulaşabilir.

Performans ve bellek

90/10 okuma/yazma Zipf iş yükü altında yazma geri modunda, dm-cache yaklaşık 193 MB/s okuma hızı ve yaklaşık 21 MB/s yazma hızı elde etmiştir. Başka bir karşılaştırmada, 10 GB NVMe bölümü olan 100 GB HDD'yi önbelleğe almak, rastgele yazma IOPS'sini 118'den 798'e çıkarmıştır.

Bunun karşılığında ödediğiniz bedel ise bellek. dm-cache'in meta veri yükü, blok boyutuna bağlıdır. 512 baytlık bir blok boyutu, 100 GB önbellek başına 16 GB'nin üzerinde RAM tüketebilir. Bunu 4.096 bayta çıkarmak, bellek kullanımını 100 GB başına yaklaşık 2 GB'ye düşürür. Ortalama I/O boyutunuza yakın bir blok boyutu seçin (64 KB makul bir başlangıç noktasıdır) ve bunun 32 KB ile 1 GB aralığında, 64 sektörün (32 KB) katı olduğundan emin olun.

Meta veriler her FLUSH veya FUA yazma işleminde veya saniyede en az bir kez temizlenir. Yüksek kullanılabilirlik için, tek bir arıza noktasını önlemek amacıyla meta veri aygıtını yansıtın.

Önbellekleme Modları

Hem bcache hem de dm-cache aynı temel önbellekleme modlarını destekler. Seçim, hem performansı hem de veri güvenliğini etkiler.

ModNasıl çalışırHızRisk
YazmaYazma işlemleri hem SSD'ye hem de HDD'ye aynı anda gönderilirYalnızca okuma hızı artırılırDüşük. HDD'de her zaman güncel veriler bulunur.
Geri yazmaYazma işlemleri önce SSD'ye, daha sonra HDD'ye aktarılırOkuma ve yazma hızlandırmaDaha yüksek. Boşaltma öncesinde SSD arızası veri kaybına neden olur.
Yazma atlama / GeçişYazma işlemleri önbelleği tamamen atlarYalnızca okuma hızı artışı, SSD aşınmasının azalmasıDüşük. HDD'de her zaman güncel veriler bulunur.

Writethrough, her iki araç için de güvenli varsayılan ayardır. Writeback daha hızlıdır ancak gerçek bir risk oluşturur: SSD, temizlenmemiş verileri tutarken arızalanırsa, bu veriler kaybolur ve dosya sistemi bozulabilir. Writeback'i yalnızca yedek SSD'leriniz varsa veya ara sıra veri kaybını tolere edebiliyorsanız kullanın.

bcache ve dm-cache: Hangisi Kullanılmalı

Faktörbcachedm-cache
Mevcut veriler üzerinde kurulumYıkıcı (silme gerektirir)Yıkıcı olmayan (çevrimiçi dönüştürme)
Yeniden boyutlandırmaDesteklenmiyorLVM aracılığıyla desteklenir
Rastgele yazma optimizasyonuGüçlü (sıralı yazma konsolidasyonu)Standart
Sıralı I/O baypasOtomatik (>4 MB)smq politikası tarafından yönetilir
Bellek yüküDüşük (B+ ağacı)Daha yüksek (blok boyutuna bağlı)
Meta veriÖnbellek cihazındaAyrı aygıt, yansıtılabilir

Sıfırdan yeni bir sistem kurarken ve mümkün olan en iyi rastgele I/O performansı istiyorsanız bcache'i kullanın. Veritabanları ve VM depolama gibi yazma yoğun iş yükleri ve rastgele yazma cezalarının ağır olduğu RAID 6 dizileri için daha iyi bir seçimdir.

Halihazırda üretimde olan bir sunucuya önbellekleme eklemeniz gerektiğinde dm-cache'i kullanın. LVM entegrasyonu sayesinde, kesinti veya veri taşıma olmadan önbellek ekleyebilirsiniz. Okuma yoğun iş yükleri ve depolama alanını anında yeniden boyutlandırma veya yeniden yapılandırma esnekliğine ihtiyaç duyduğunuz ortamlar için daha uygundur.

Sonuç

Her iki araç da aynı sorunu çözer, ancak farklı durumlara uygundur. Bcache, yeni kurulumlar için performans açısından en iyi seçimdir. dm-cache ise mevcut LVM sistemleri için pratik bir seçimdir. Hangisini seçerseniz seçin, SSD'nizin güvenilirliğinden emin olana kadar writethrough moduyla başlayın, ardından yazma performansına ihtiyacınız olursa writeback moduna geçin.

SSD önbellekleme yapılandırmalarına sahip özel sunuculara ihtiyacınız varsa, FDC'nin özel sunucu seçeneklerini inceleyin.

Blog

Bu hafta öne çıkanlar

Daha fazla makale
Linux Paket İşleme için XDP ve eBPF

Linux Paket İşleme için XDP ve eBPF

XDP ve eBPF'nin NIC sürücüsü seviyesinde saniyede milyonlarca paketi nasıl işlediği. Benchmarklar, DDoS kullanım durumları, araç zinciri kurulumu ve donanım gereksinimleri.

14 dakikalık okuma - 27 Mayıs 2026

Güçlü ve ölçülmemiş bir VPS'ye sahip olmak neden önemlidir?

3 dakikalık okuma - 9 Mayıs 2025

Daha fazla makale
background image

Sorularınız mı var veya özel bir çözüme mi ihtiyacınız var?

icon

Esnek seçenekler

icon

Küresel erişim

icon

Anında dağıtım

icon

Esnek seçenekler

icon

Küresel erişim

icon

Anında dağıtım