bcache vs dm-cache: Linux SSD Önbellekleme Karşılaştırması
11 dakikalık okuma - 28 Mayıs 2026

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ı:
- Hem HDD hem de SSD üzerinde Fiziksel Birimler (PV'ler) oluşturun.
- Her iki PV'yi de tek bir Birim Grubuna (VG) ekleyin.
- Üç Mantıksal Birim oluşturun: biri yedekleme verileri (HDD), biri önbellek (SSD), biri meta veriler (SSD) için.
- Önbellek ve meta veri LV'lerini bir önbellek havuzunda birleştirin:
lvconvert --type cache-pool --poolmetadata <meta_lv> <cache_lv> - 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.
| Mod | Nasıl çalışır | Hız | Risk |
|---|---|---|---|
| Yazma | Yazma işlemleri hem SSD'ye hem de HDD'ye aynı anda gönderilir | Yalnızca okuma hızı artırılır | Düşük. HDD'de her zaman güncel veriler bulunur. |
| Geri yazma | Yazma işlemleri önce SSD'ye, daha sonra HDD'ye aktarılır | Okuma ve yazma hızlandırma | Daha yüksek. Boşaltma öncesinde SSD arızası veri kaybına neden olur. |
| Yazma atlama / Geçiş | Yazma işlemleri önbelleği tamamen atlar | Yalnı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ör | bcache | dm-cache |
|---|---|---|
| Mevcut veriler üzerinde kurulum | Yıkıcı (silme gerektirir) | Yıkıcı olmayan (çevrimiçi dönüştürme) |
| Yeniden boyutlandırma | Desteklenmiyor | LVM aracılığıyla desteklenir |
| Rastgele yazma optimizasyonu | Güçlü (sıralı yazma konsolidasyonu) | Standart |
| Sıralı I/O baypas | Otomatik (>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ında | Ayrı 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.
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

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