RAID Seviyeleri Karşılaştırması: RAID 0, 1, 5 ve 10 Farkları
Depolama sistemleriyle ciddi anlamda uğraşmaya başladığımda, bir sunucunun disklerini yanlış RAID seviyesiyle yapılandırdığım için nasıl performans kaybı yaşadığımı hala hatırlıyorum. O gün öğrendim ki RAID sadece “yedeklilik” demek değil; doğru seçim yapmak, iş yüküne, bütçeye ve tolerans eşiğine göre değişiyor. Bu yazıda RAID 0, 1, 5 ve 10’u gerçek dünya senaryolarıyla karşılaştıracağım ve her birini ne zaman kullanmanız, ne zaman kesinlikle kullanmamanız gerektiğini açıklayacağım.
RAID Nedir, Ne Değildir?
Önce şunu netleştirelim: RAID bir yedekleme çözümü değildir. Çok sık karşılaştığım bir yanılgı bu. RAID, disk arızalarına karşı koruma sağlar; ama veri silme, fidye yazılımı saldırısı ya da kullanıcı hatası gibi senaryolarda sizi korumaz. Bunun için ayrı bir yedekleme stratejiniz olmalı.
RAID temelde iki şey yapar: ya diskleri bir araya getirerek performansı artırır, ya da veriyi birden fazla diske yazarak arıza toleransı sağlar. Ya da her ikisini birden. Hangi seviyenin ne yaptığını anlamak için biraz teknik bilgiye girelim.
RAID 0: Şeritler Ama Güvenlik Yok
RAID 0, en saf haliyle performans odaklı bir yapılandırma. Veri, birden fazla diske şerit (stripe) halinde yazılır. Yani 4 KB’lık bir dosya varsa, 2 diskli bir RAID 0 dizisinde ilk 2 KB birinci diske, diğer 2 KB ikinci diske gider. Bu sayede hem okuma hem yazma hızları teorik olarak disk sayısıyla orantılı artış gösterir.
Ama işin karanlık yüzü şu: hiçbir yedeklilik yok. Bir disk bile arızalanırsa tüm veri gider. 2 diskli bir RAID 0’da her bir diskin %1 arıza ihtimali varsa, dizinin toplam arıza ihtimali yaklaşık %2’ye çıkar.
Linux üzerinde software RAID 0 oluşturmak için mdadm kullanabilirsiniz:
# İki diskle RAID 0 dizisi oluşturma
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
Diziyi oluşturduktan sonra durumunu kontrol etmek için:
# RAID dizisinin durumunu kontrol et
cat /proc/mdstat
# Daha detaylı bilgi için
mdadm --detail /dev/md0
Dosya sistemini oluşturup bağlamak için:
# XFS dosya sistemi oluştur (büyük dosyalar için ideal)
mkfs.xfs /dev/md0
# Mount et
mount /dev/md0 /mnt/data
RAID 0 Ne Zaman Kullanılır?
Gerçek dünyada RAID 0’ın mantıklı olduğu birkaç senaryo var:
- Geçici işlem verileri: Video render farm’larında ara dosyalar, build sunucularındaki geçici artifact’lar. Veri kaybolsa bile yeniden üretilebilir.
- Yüksek performans gerektiren test ortamları: Üretimdeki yükü simüle etmeniz gereken load test sunucuları.
- Veritabanı geçici tablo alanları (tempdb/tmp tablespace): SQL Server’ın tempdb’si ya da Oracle’ın geçici tablo alanları için RAID 0 gayet mantıklı.
Kesinlikle kullanmayın: Üretim veritabanları, müşteri verileri, herhangi bir kalıcı veri barındıran sistem.
RAID 1: Ayna Gibi Yedeklilik
RAID 1, en anlaşılır RAID seviyesi. Her disk birbirinin aynası. Bir diske yazılan her bit, diğer diske de yazılır. 2 diskli RAID 1’de kullanılabilir kapasite disklerden birinin kapasitesi kadar. 2x1TB = 1TB kullanılabilir alan.
Okuma performansı artabilir çünkü controller, iki diskten paralel okuma yapabilir. Yazma performansı ise tek diskle neredeyse aynı; çünkü her iki diske de yazmak zorundasınız.
# İki diskle RAID 1 dizisi oluşturma
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
# Senkronizasyon ilerlemesini izle
watch -n 2 cat /proc/mdstat
Bir disk arızalandıktan sonra yenisiyle değiştirip diziye eklemek:
# Arızalı diski diziden kaldır
mdadm /dev/md1 --remove /dev/sdb
# Yeni diski ekle (rebuild başlar otomatik)
mdadm /dev/md1 --add /dev/sdd
# Rebuild ilerlemesini takip et
mdadm --detail /dev/md1 | grep -E "State|Rebuild"
RAID 1 Gerçek Dünya Kullanımı
Bir e-ticaret şirketinde çalışırken web sunucularının işletim sistemi disklerini RAID 1 ile yapılandırdık. Gerekçe basitti: OS diski için çok kapasiteye ihtiyacımız yoktu, ama bir disk arızasında sunucunun ayakta kalması kritikti. RAID 1 tam bu iş için biçilmiş kaftan.
Boot sürücüleri için RAID 1 yapılandırdığınızda /etc/mdadm/mdadm.conf dosyasını güncellemeyi ve initramfs’i yenilemeyi unutmayın:
# Yapılandırmayı kaydet
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
# initramfs güncelle
update-initramfs -u
RAID 1’in ideal olduğu senaryolar:
- İşletim sistemi ve boot bölümleri
- Küçük ama kritik veritabanları
- Sık erişilen, düşük kapasiteli log sunucuları
- Depolama maliyetinin performanstan önemli olmadığı durumlar
Dezavantaj: Disk kapasitesini yarı yarıya kullanıyorsunuz. 2x4TB = 2TB kullanılabilir. Bu, büyük ölçekli depolama için ciddi bir maliyet dezavantajı.
RAID 5: Denge Noktası
RAID 5, birçok sysadmin’in “default” tercihi haline gelmiş ve bu çoğu zaman doğru bir seçim. En az 3 disk gerektirir. Veri şeritler halinde yazılır ve her şerit grubu için bir parite bilgisi hesaplanarak farklı bir diske yazılır.
Parite, XOR işlemiyle hesaplanır. Bir disk arızalandığında, kalan disklerden ve parite bilgisinden kayıp veri yeniden hesaplanabilir. Bu sayede bir disk arızasına tolerans gösterirken kapasite verimliliği de iyi kalır.
Kapasite formülü: (N-1) x tek disk kapasitesi. 3x1TB = 2TB kullanılabilir. 4x1TB = 3TB kullanılabilir.
# Üç diskle RAID 5 oluşturma
mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
# Chunk size belirtmek istersen (varsayılan 512KB)
mdadm --create /dev/md5 --level=5 --raid-devices=3
--chunk=256 /dev/sdb /dev/sdc /dev/sdd
Chunk size seçimi önemlidir. Çok küçük dosyalarla çalışıyorsanız chunk size’ı küçük tutmak, büyük sequential okuma/yazma için ise daha büyük değerler daha iyi performans verir. Veritabanı iş yükleri için genellikle 64K-256K arası tercih edilir.
# Mevcut RAID 5 dizisinin detaylarını görüntüle
mdadm --detail /dev/md5
# Read-ahead değerini optimize et (büyük sequential okumalar için)
blockdev --setra 65536 /dev/md5
RAID 5’in Kritik Zayıf Noktası: Write Hole ve Rebuild Süreci
RAID 5’in en önemli dezavantajı, write hole problemi ve uzun rebuild süreleri. Büyük disklerle (4TB, 8TB) çalışıyorsanız, bir disk arızalandıktan sonra rebuild süreci saatler, hatta günler sürebilir. Bu süre zarfında ikinci bir disk arızası tüm diziyi yok eder.
Modern büyük kapasiteli disklerle (8TB+) RAID 5 kullanmayı artık pek önermiyorum. Bu boyuttaki diskler için RAID 6’ya (çift parite) ya da RAID 10’a geçmek daha güvenli.
# Rebuild süresini tahmin et
cat /proc/mdstat | grep "finish"
# Rebuild hızını ayarla (sistem üzerindeki yükü dengelemek için)
echo 50000 > /proc/sys/dev/raid/speed_limit_max
echo 10000 > /proc/sys/dev/raid/speed_limit_min
RAID 5 nerede mantıklı:
- Orta boy dosya sunucuları
- Arşiv depolama sistemleri
- Küçük-orta ölçekli veritabanları (4TB altı disklerle)
- Kapasite verimliliğinin önemli olduğu, IOPS gereksiniminin orta düzeyde kaldığı senaryolar
RAID 10: Performans ve Güvenlik Birlikte
RAID 10 (ya da RAID 1+0), adından da anlaşılacağı üzere RAID 1 ve RAID 0’ın birleşimi. Önce diskler çiftler halinde ayna (RAID 1) oluşturur, sonra bu aynalar şeritlenir (RAID 0). En az 4 disk gerekir.
Bu yapılandırma hem yedeklilik hem de yüksek performans sunar. Her çiftten birer disk arızalanabilir ve dizi çalışmaya devam eder. Kapasite verimliliği %50’dir (RAID 1 ile aynı), bu en büyük dezavantajı.
# Dört diskle RAID 10 oluşturma
mdadm --create /dev/md10 --level=10 --raid-devices=4
/dev/sdb /dev/sdc /dev/sdd /dev/sde
# Layout seçeneği: near, far, offset
# Near (varsayılan): Kopyalar bitişik şeritlerde
# Far: Kopyalar uzak şeritlerde, okuma performansı daha iyi
mdadm --create /dev/md10 --level=10 --raid-devices=4
--layout=f2 /dev/sdb /dev/sdc /dev/sdd /dev/sde
Far layout, okuma-ağırlıklı iş yüklerinde daha iyi performans verir. Near layout ise yazma-ağırlıklı senaryolarda tercih edilir.
# RAID 10 dizisinin layout bilgisini kontrol et
mdadm --detail /dev/md10 | grep Layout
# Belirli bir diskin hangi mirror grubunda olduğunu gör
mdadm --examine /dev/sdb
RAID 10 Gerçek Dünya Senaryosu
Yoğun IOPS gerektiren bir MySQL master sunucusunu RAID 10 ile yapılandırdığım bir proje aklımda kaldı. Elimizde 4x SAS 15K RPM disk vardı. RAID 5 ile gitsek kapasite verimli olurdu ama random write IOPS’umuz yetersiz kalacaktı. RAID 10 seçiminde şu sonuçları gördük:
- Random write IOPS neredeyse iki katına çıktı
- Bir disk arızasından sonra rebuild süresi RAID 5’e kıyasla çok daha kısa oldu
- İki ayrı mirror çiftinden birer disk arızalandığında bile sistem çalışmaya devam etti
# RAID 10 rebuild süresini izle
watch -n 5 'cat /proc/mdstat && mdadm --detail /dev/md10 | grep -E "State|Rebuild|Active"'
# Disk arızası simülasyonu (test ortamında)
mdadm /dev/md10 --fail /dev/sdc
mdadm --detail /dev/md10
# Yedek disk ekleme
mdadm /dev/md10 --add /dev/sdf
RAID 10 ne zaman kullanılır:
- Yüksek IOPS gerektiren üretim veritabanları (MySQL, PostgreSQL, MongoDB)
- Sanallaştırma altyapıları (VMware datastores, KVM storage pools)
- İşlem yoğun uygulamaların storage katmanı
- Bütçe müsaade ediyorsa ve kapasite kritik değilse neredeyse her şey
İzleme ve Uyarı: Asıl Önemli Olan Burada
RAID kurulumu kadar, belki ondan daha önemli olan şey: izleme. Bir disk arızalandığında haberdar olmadan gün geçirirseniz, ikinci disk arızasında veri kaybıyla yüz yüze gelirsiniz.
# mdadm mail uyarılarını yapılandır
echo "MAILADDR [email protected]" >> /etc/mdadm/mdadm.conf
# mdadm monitor servisini aktifleştir
systemctl enable mdmonitor
systemctl start mdmonitor
# Manuel monitoring scripti - cron'a eklenebilir
#!/bin/bash
RAID_STATUS=$(cat /proc/mdstat | grep -E "degraded|failed")
if [ -n "$RAID_STATUS" ]; then
echo "RAID UYARISI: $RAID_STATUS" | mail -s "RAID Sorunu Tespit Edildi" [email protected]
fi
Prometheus ve node_exporter kullanıyorsanız, RAID metrikleri otomatik olarak toplanır. Grafana dashboard’unuza şu metrikleri eklemenizi öneririm:
# node_exporter md device metriklerini kontrol et
curl -s http://localhost:9100/metrics | grep "node_md_"
# Örnek çıktıdan degraded diskleri filtrele
curl -s http://localhost:9100/metrics | grep "node_md_disks{" | grep -v "active"
Yaygın Hatalar ve Kaçınılması Gerekenler
Yıllar içinde gördüğüm, başkalarından duyduğum veya bizzat yaptığım hataları listeleyeyim:
- Farklı hız ve kapasitede disklerle RAID kurmak: Teorik olarak çalışır, pratikte performans en yavaş diske endekslenir. Aynı modelden disk kullanın mümkünse.
- Hot spare unutmak: RAID 5 veya RAID 6’ya mutlaka bir hot spare ekleyin. Arıza anında otomatik rebuild başlar.
- UPS olmadan RAID controller kullanmak: Yazma sırasında kesilen güç, write hole sorununa yol açar. Battery Backup Unit (BBU) olan controller kullanın veya yazma cache’ini devre dışı bırakın.
- RAID’i yedeklilik zannetmek: Bunu yeterince vurgulayamıyorum. Düzenli snapshot ve yedek alın.
- Rebuild sırasında test yapmamak: Her kurulum sonrası bir disk fail edin ve rebuild sürecini gözlemleyin.
# Hot spare ekleme
mdadm /dev/md5 --add /dev/sdf
# Bu disk otomatik olarak spare olarak atanır
# Dizinin tüm konfigürasyonunu yedekle
mdadm --detail --scan > /root/mdadm-backup-$(date +%Y%m%d).conf
# Veri bütünlüğünü periyodik kontrol et (cron ile aylık çalıştırılabilir)
echo "check" > /sys/block/md5/md/sync_action
cat /sys/block/md5/md/sync_action
Seçim Kriterleri: Hangi Senaryoda Ne Kullanmalı?
Bir sonraki RAID kararınızı verirken şu soruları kendinize sorun:
Bütçe ve kapasite öncelikli mi?
- Az diskle çok kapasite istiyorsanız: RAID 5
- Kapasite çok kritik değilse: RAID 10
İş yükü türü ne?
- Ağırlıklı olarak okuma (web sunucusu, CDN origin): RAID 5 veya RAID 1 yeterli
- Yoğun random write (OLTP veritabanı): RAID 10 neredeyse zorunlu
- Sequential write (video, log sunucu): RAID 5 veya RAID 6
Kaç disk var?
- 2 disk: RAID 1
- 3 disk: RAID 5
- 4 disk: RAID 10 veya RAID 5+spare
- 6+ disk: RAID 6 veya RAID 10
Disk boyutu ne?
- 4TB ve altı: RAID 5 hala makul
- 8TB ve üzeri: RAID 6 veya RAID 10’a geçin
Sonuç
RAID seçimi, “en iyi RAID hangisidir?” sorusunun tek bir cevabı olmayan, bağlama göre şekillenen bir karar sürecidir. RAID 0 ham performans için, RAID 1 basit ve güvenilir yedeklilik için, RAID 5 kapasite verimliliği ile yedeklilik dengesi için, RAID 10 ise performans ve yedeklilik birlikte gerektiğinde en güçlü seçenektir.
Pratikte en çok gördüğüm başarılı yapılandırma şu: OS ve kritik servisler için RAID 1, veri depolama için iş yüküne göre RAID 5 ya da RAID 10, ve bunların tamamının üstünde düzenli yedekleme. RAID olmasa bile yedekleme şart; RAID olsa bile yedekleme şart. Bu ikisi birbirini ikame etmez, tamamlar.
Son bir not: Yazılımsal RAID (mdadm) yeterince güvenilir ve özellikle Linux ortamlarında donanımsal RAID controller’lara iyi bir alternatif. Controller arızasında bağımlılık yaşamaması, taşınabilirliği ve maliyet avantajı nedeniyle pek çok ortamda mdadm’i tercih ediyorum. Donanımsal RAID’de ise kesinlikle aynı modelden yedek controller bulundurun; aksi halde controller arızasında sürücüleri okuyamama riskiyle karşılaşırsınız.
