Disk hızını maksimuma çıkarmak istiyorsun, veri güvenliğini bir kenara bırakmaya hazırsın ve elinde birden fazla disk var. İşte tam bu noktada RAID 0 devreye giriyor. Linux dünyasında yazılımsal RAID yönetiminin vazgeçilmez aracı olan mdadm ile RAID 0 kurulumu, yönetimi ve performans optimizasyonu konusunu bugün en ince ayrıntısına kadar ele alacağız.
RAID 0 Nedir ve Ne Zaman Kullanılır?
RAID 0, “striping” yani şerit mantığıyla çalışır. Veriler birden fazla diske eşit parçalar halinde dağıtılır. Disk 1’e bir şerit, disk 2’ye bir şerit, disk 3’e bir şerit… Bu sayede okuma ve yazma işlemleri paralel yürütülür ve teorik olarak disk sayısıyla orantılı bir hız artışı elde edersin.
Ancak burada çok kritik bir noktanın altını çizmek gerekiyor: RAID 0’da hiçbir veri yedekliliği yoktur. Dizideki herhangi bir disk bozulursa, tüm veriyi kaybedersin. Bu yüzden RAID 0’ı şu senaryolar için düşün:
- Geçici işlem verileri veya cache dizinleri
- Video prodüksiyon çalışmaları (ham footage scratch alanı)
- Bilimsel simülasyon verileri (tekrar üretilebilir veriler)
- Yüksek performanslı veritabanı geçici tabloları
- Oyun sunucularında harita ve asset yükleme alanları
- CI/CD pipeline’larında build artifact depolama
Kısacası: Kaybedersen canın yanmayacak ama hızlı olmasını istediğin veriler için RAID 0 idealdir.
mdadm Kurulumu ve Hazırlık
Önce sisteminizin mdadm paketine sahip olduğundan emin olalım.
# Debian/Ubuntu tabanlı sistemler için
sudo apt update && sudo apt install mdadm -y
# RHEL/CentOS/Rocky Linux için
sudo dnf install mdadm -y
# Arch Linux için
sudo pacman -S mdadm
Kurulum tamamlandıktan sonra mevcut disk durumunu kontrol edelim. Hangi disklerin mevcut olduğunu, hangilerinin kullanımda olduğunu görmemiz gerekiyor.
# Tüm blok cihazları listele
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE
# Disk detaylarını görüntüle
sudo fdisk -l
# Mevcut RAID dizilerini kontrol et
cat /proc/mdstat
Bu örnekte /dev/sdb ve /dev/sdc disklerini kullanacağız. Her biri 500 GB kapasitesinde iki disk ile 1 TB’lık bir RAID 0 dizisi oluşturacağız.
Diskleri Hazırlamak
Diskleri kullanmadan önce üzerlerinde varsa mevcut partition tablosunu ve RAID metadata’sını temizlemeliyiz. Bu adım gerçek bir ortamda son derece kritik.
# Disk üzerinde varsa eski RAID superblock'u temizle
sudo mdadm --zero-superblock /dev/sdb
sudo mdadm --zero-superblock /dev/sdc
# Disk başlangıcını ve sonunu sıfırla (eski partition table kalıntıları için)
sudo wipefs -a /dev/sdb
sudo wipefs -a /dev/sdc
# İşlemin başarılı olduğunu doğrula
sudo hexdump -C /dev/sdb | head -5
Şimdi disklerde partition oluşturacağız. Doğrudan disk üzerinde de RAID kurabilirsin ama partition üzerinde kurmak daha iyi bir pratiktir. Özellikle gelecekte disk değiştirme senaryolarında işini kolaylaştırır.
# GPT partition table oluştur ve RAID partition yap
sudo sgdisk -n 0:0:0 -t 0:fd00 /dev/sdb
sudo sgdisk -n 0:0:0 -t 0:fd00 /dev/sdc
# Partition'ların oluştuğunu doğrula
lsblk /dev/sdb /dev/sdc
fd00 tipi Linux RAID partition type’ıdır. Bunu kullanmak sistemin bu partition’ı RAID için hazır olduğunu anlamasını sağlar.
RAID 0 Dizisi Oluşturma
Artık asıl işleme geliyoruz. mdadm komutuyla RAID 0 dizimizi oluşturacağız.
sudo mdadm --create /dev/md0
--level=0
--raid-devices=2
--chunk=512
/dev/sdb1 /dev/sdc1
Bu komuttaki parametreleri açıklayalım:
- –create /dev/md0: Yeni RAID cihazı oluştur ve
/dev/md0olarak adlandır - –level=0: RAID seviyesi 0 (striping)
- –raid-devices=2: Kaç disk kullanılacağı
- –chunk=512: Şerit boyutu (KB cinsinden, burada 512 KB)
- /dev/sdb1 /dev/sdc1: RAID’e dahil edilecek partition’lar
Chunk Size Seçimi
Chunk size (şerit boyutu) performans açısından kritik bir parametre. Yanlış seçim, beklediğin performansı vermeyebilir.
- Küçük dosyalarla çalışıyorsan (4K-64K): Daha küçük chunk size (64K veya 128K) dene
- Büyük dosyalar ve sequential okuma/yazma (video, bilimsel veri): Büyük chunk size (512K veya 1M) tercih et
- Genel kullanım: 256K veya 512K genellikle iyi bir başlangıç noktası
RAID oluşturulduktan hemen sonra durumunu kontrol et:
# RAID durumunu kontrol et
cat /proc/mdstat
# Detaylı bilgi için
sudo mdadm --detail /dev/md0
Çıktı şuna benzer bir şey gösterecek:
/dev/md0:
Version : 1.2
Creation Time : Mon Jan 15 14:32:11 2024
Raid Level : raid0
Array Size : 976630784 (931.39 GiB 999.81 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon Jan 15 14:32:11 2024
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Dosya Sistemi Oluşturma ve Bağlama
RAID dizisi hazır. Şimdi üzerine dosya sistemi oluşturuyoruz.
# ext4 dosya sistemi oluştur
sudo mkfs.ext4 -F -L "raid0-data" /dev/md0
# Ya da XFS tercih ediyorsan (büyük dosyalar için daha iyi performans verebilir)
sudo mkfs.xfs -L "raid0-data" /dev/md0
Mount noktası oluştur ve dizini bağla:
# Mount noktası oluştur
sudo mkdir -p /mnt/raid0
# Manuel olarak bağla
sudo mount /dev/md0 /mnt/raid0
# Bağlandığını doğrula
df -h /mnt/raid0
Kalıcı Yapılandırma: fstab ve mdadm.conf
Sistem yeniden başladığında RAID dizisinin otomatik olarak başlatılması ve bağlanması için yapılandırma dosyalarını güncellememiz gerekiyor.
# mdadm yapılandırma dosyasını güncelle
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
# Dosyayı kontrol et
cat /etc/mdadm/mdadm.conf
# initramfs'i güncelle (Debian/Ubuntu)
sudo update-initramfs -u
# RHEL/CentOS için
sudo dracut --force
Şimdi /etc/fstab dosyasına mount girişi ekleyelim. UUID kullanmak daha güvenli bir pratik.
# UUID'yi öğren
sudo blkid /dev/md0
# fstab'a ekle (UUID'yi kendinizinkiyle değiştirin)
echo "UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/raid0 ext4 defaults,nofail 0 0" | sudo tee -a /etc/fstab
# fstab'ı test et (sistem yeniden başlatmadan)
sudo mount -a
# Başarılı olduğunu doğrula
df -h | grep raid0
nofail seçeneği önemli: RAID dizisi başlatılamazsa sistem açılmaya devam eder. Production ortamlarda bu hayat kurtarıcı olabilir.
Performans Testi
RAID 0 kurduğumuz için en önemli şeylerden biri performansı ölçmek. Teorik hız artışını pratikte doğrulayalım.
dd ile Temel Test
# Yazma hızı testi (1 GB veri)
sudo dd if=/dev/zero of=/mnt/raid0/test.img bs=1M count=1024 conv=fdatasync status=progress
# Okuma hızı testi
sudo dd if=/mnt/raid0/test.img of=/dev/null bs=1M status=progress
# Test dosyasını temizle
sudo rm /mnt/raid0/test.img
fio ile Daha Kapsamlı Test
fio çok daha detaylı benchmark imkanı sunar. Production’a almadan önce kesinlikle fio testleri yapmanı tavsiye ederim.
# fio kurulumu
sudo apt install fio -y # Debian/Ubuntu
sudo dnf install fio -y # RHEL/CentOS
# Sequential write testi
sudo fio --name=seq-write
--directory=/mnt/raid0
--rw=write
--bs=1M
--size=2G
--numjobs=1
--runtime=60
--group_reporting
--iodepth=32
# Sequential read testi
sudo fio --name=seq-read
--directory=/mnt/raid0
--rw=read
--bs=1M
--size=2G
--numjobs=1
--runtime=60
--group_reporting
--iodepth=32
# Random read/write karışık (4K blok boyutu)
sudo fio --name=random-rw
--directory=/mnt/raid0
--rw=randrw
--rwmixread=70
--bs=4K
--size=2G
--numjobs=4
--runtime=60
--group_reporting
--iodepth=64
Gerçek bir test ortamında iki 7200 RPM SATA disk ile tipik olarak şu sonuçları görebilirsin:
- Tek disk sequential write: ~150 MB/s
- RAID 0 (2 disk) sequential write: ~280-300 MB/s
- Tek disk sequential read: ~160 MB/s
- RAID 0 (2 disk) sequential read: ~300-320 MB/s
İzleme ve Bakım
RAID 0 kullanırken disk sağlığını düzenli izlemek zorundasın. Bir disk bozulduğunda tüm verinizi kaybedebileceğini unutma.
Disk Sağlığı İzleme
# SMART verilerini kontrol et (smartmontools kurulu olmalı)
sudo apt install smartmontools -y
# Disk sağlık özeti
sudo smartctl -H /dev/sdb
sudo smartctl -H /dev/sdc
# Detaylı SMART bilgisi
sudo smartctl -a /dev/sdb | grep -E "Reallocated|Pending|Uncorrectable|Temperature"
# Kısa self-test başlat
sudo smartctl -t short /dev/sdb
mdadm İzleme Servisi
mdadm’in kendi izleme özelliğini aktif et. Bir sorun olduğunda e-posta gönderebilir.
# /etc/mdadm/mdadm.conf dosyasını düzenle
sudo nano /etc/mdadm/mdadm.conf
# Şu satırı ekle veya düzenle (e-posta adresini değiştir)
# MAILADDR [email protected]
# mdadm monitor servisini başlat
sudo systemctl enable mdmonitor
sudo systemctl start mdmonitor
# Servis durumunu kontrol et
sudo systemctl status mdmonitor
Periyodik Durum Kontrolü için Script
Aşağıdaki script’i crontab’a ekleyerek düzenli RAID sağlık kontrolü yapabilirsin.
#!/bin/bash
# /usr/local/bin/raid-health-check.sh
RAID_DEVICE="/dev/md0"
LOG_FILE="/var/log/raid-health.log"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
# RAID durumunu kontrol et
RAID_STATE=$(sudo mdadm --detail $RAID_DEVICE | grep "State :" | awk '{print $3}')
DISK_COUNT=$(sudo mdadm --detail $RAID_DEVICE | grep "Active Devices" | awk '{print $4}')
FAILED_DISKS=$(sudo mdadm --detail $RAID_DEVICE | grep "Failed Devices" | awk '{print $4}')
echo "[$TIMESTAMP] RAID Durumu: $RAID_STATE | Aktif Disk: $DISK_COUNT | Hatalı Disk: $FAILED_DISKS" >> $LOG_FILE
if [ "$FAILED_DISKS" -gt 0 ] || [ "$RAID_STATE" != "clean" ]; then
echo "[$TIMESTAMP] UYARI: RAID problemi tespit edildi!" >> $LOG_FILE
# Buraya e-posta veya Slack bildirimi ekleyebilirsin
mail -s "RAID 0 Uyarisi: $HOSTNAME" [email protected] < $LOG_FILE
fi
# Script'i çalıştırılabilir yap
chmod +x /usr/local/bin/raid-health-check.sh
# Crontab'a ekle (her saat başı çalışsın)
echo "0 * * * * root /usr/local/bin/raid-health-check.sh" | sudo tee -a /etc/cron.d/raid-monitor
Gerçek Dünya Senaryosu: Video Prodüksiyon İş İstasyonu
Bir video prodüksiyon stüdyosunda editörler 4K ham footage ile çalışıyor. Her proje ortalama 200-500 GB veri üretiyor. Projeyi teslim edip render aldıktan sonra ham footage NAS’a arşivleniyor. İş istasyonundaki scratch disk alanı hız gereksinimi karşılamıyor.
Çözüm: 3 adet 1TB NVMe SSD ile RAID 0 kurulumu. 3 TB kullanılabilir alan ve teorik olarak 3x okuma/yazma hızı.
# 3 diskli RAID 0 kurulumu
sudo mdadm --create /dev/md0
--level=0
--raid-devices=3
--chunk=1024
/dev/nvme0n1p1 /dev/nvme1n1p1 /dev/nvme2n1p1
# XFS dosya sistemi (büyük dosyalar için tercih edilir)
sudo mkfs.xfs -L "scratch" -d su=1024k,sw=3 /dev/md0
-d su=1024k,sw=3 parametresi XFS’e stripe unit ve stripe width bilgisi verir. Bu, XFS’in I/O’yu RAID chunk size’a uygun şekilde hizalamasını sağlar ve ciddi performans artışı getirir.
RAID 0 Dizisini Durdurmak ve Sökmek
Bazen RAID dizisini kaldırman gerekebilir. Doğru sırayla yapmak önemli.
# Önce dizini unmount et
sudo umount /mnt/raid0
# RAID dizisini durdur
sudo mdadm --stop /dev/md0
# Superblock'ları temizle
sudo mdadm --zero-superblock /dev/sdb1
sudo mdadm --zero-superblock /dev/sdc1
# mdadm.conf'dan girişi kaldır
sudo nano /etc/mdadm/mdadm.conf
# fstab'dan girişi kaldır
sudo nano /etc/fstab
# initramfs güncelle
sudo update-initramfs -u
Sık Karşılaşılan Sorunlar ve Çözümler
Sorun: Sistem açılışta RAID dizisi bulunamıyor
Bu genellikle mdadm.conf’un doğru güncellenmemesinden veya initramfs’in yenilenmemesinden kaynaklanır.
# Mevcut dizileri tara ve conf'u güncelle
sudo mdadm --examine --scan | sudo tee /etc/mdadm/mdadm.conf
sudo update-initramfs -u
Sorun: Degraded state uyarısı
RAID 0’da bir disk kaybolduğunda dizi çalışmaz ama bu mesajı farklı nedenlerle görebilirsin.
# Detaylı durum kontrolü
sudo mdadm --detail /dev/md0
sudo dmesg | grep -i md | tail -20
Sorun: Performans beklentilerin altında
I/O scheduler’ı kontrol et. SSD kullanıyorsan none veya mq-deadline daha iyi sonuç verebilir.
# Mevcut scheduler'ı görüntüle
cat /sys/block/sdb/queue/scheduler
# Scheduler'ı değiştir (SSD için)
echo mq-deadline | sudo tee /sys/block/sdb/queue/scheduler
echo mq-deadline | sudo tee /sys/block/sdc/queue/scheduler
Sonuç
mdadm ile RAID 0 kurmak göründüğü kadar karmaşık değil. Birkaç komutla yüksek performanslı bir depolama alanı elde edebiliyorsun. Ancak her güçlü araç gibi RAID 0 da doğru senaryoda kullanıldığında değer katar.
En kritik nokta şu: RAID 0 bir yedekleme çözümü değildir, yedeklemenin yerini tutmaz. Kaybetmeye hazır olmadığın hiçbir veriyi RAID 0’da tutma. Yüksek hız istiyorsun ve verinin yedekleri zaten başka yerde güvenle duruyorsa, RAID 0 tam istediğin çözüm.
Disklerin sağlığını düzenli izle, SMART testlerini ihmal etme, mdmonitor servisini mutlaka aktif et. Bir disk arıza sinyali vermeye başlarsa hemen harekete geç. Bu basit önlemlerle RAID 0’ı güvenli bir şekilde günlük iş akışına dahil edebilirsin.