Giriş: RAID Nedir ve Neden Gerekli?
RAID (Redundant Array of Independent Disks), birden fazla fiziksel diski mantıksal olarak birleştirerek veri güvenliği, performans artışı veya her ikisini birden sağlayan bir disk yapılandırma teknolojisidir. Sunucu ortamlarında veri kaybını önlemek ve kesintisiz hizmet sunmak için RAID kullanımı neredeyse zorunludur.
RAID iki temel yaklaşımla uygulanabilir:
- Donanımsal RAID: Özel bir RAID controller kartı ile yönetilir. İşlemci üzerinde yük oluşturmaz ancak donanım maliyeti yüksektir. Controller arızasında aynı model gerekir.
- Yazılımsal RAID: İşletim sistemi seviyesinde yönetilir. Linux'ta
mdadmaracı ile oluşturulur. Donanım bağımsızdır, esnektir ve ücretsizdir.
Bu rehberde, Linux ortamında mdadm aracını kullanarak yazılımsal RAID oluşturma, yönetme ve sorun giderme süreçlerini adım adım inceleyeceğiz.
RAID Seviyeleri
Farklı RAID seviyeleri, farklı performans ve güvenlik dengeleri sunar. En yaygın kullanılan RAID seviyelerini inceleyelim:
RAID 0 - Striping (Şeritleme)
Veri bloklarını diskler arasında dağıtır. Okuma/yazma performansı artar ancak herhangi bir disk arızalandığında tüm veriler kaybedilir. Yedeklilik yoktur. Minimum 2 disk gerekir. Toplam kapasite = tüm disklerin toplamı.
RAID 1 - Mirroring (Aynalama)
Aynı veriyi tüm disklere yazar. Bir disk arızalansa bile diğerinden veri okunabilir. Okuma performansı artar, yazma performansı tek disk kadardır. Minimum 2 disk gerekir. Kullanılabilir kapasite = tek diskin kapasitesi.
RAID 5 - Striping + Dağıtık Parity
Veriyi ve parity bilgisini diskler arasında dağıtır. 1 disk arızasına dayanıklıdır. İyi okuma performansı sunar. Minimum 3 disk gerekir. Kullanılabilir kapasite = (N-1) x disk boyutu.
RAID 6 - Çift Parity
RAID 5'e benzer ancak çift parity kullanır. Aynı anda 2 disk arızasına dayanıklıdır. Minimum 4 disk gerekir. Kullanılabilir kapasite = (N-2) x disk boyutu.
RAID 10 - Mirror + Stripe
RAID 1 ve RAID 0'ın kombinasyonu. Önce diskler ikişerli mirror yapılır, sonra mirror çiftleri üzerinde striping uygulanır. Hem yüksek performans hem yedeklilik sağlar. Minimum 4 disk gerekir. Kullanılabilir kapasite = toplam kapasitenin yarısı.
mdadm Kurulumu
Çoğu Linux dağıtımında mdadm varsayılan olarak yüklü gelir. Yüklü değilse aşağıdaki komutlarla kurabilirsiniz:
# Debian/Ubuntu
sudo apt update
sudo apt install mdadm
# RHEL/CentOS/Rocky Linux
sudo dnf install mdadm
# Kurulumu doğrulama
mdadm --version
# Çıktı: mdadm - v4.2 - 2021-12-30
RAID 1 Oluşturma (Adım Adım)
Bu bölümde iki disk kullanarak RAID 1 (mirror) dizisi oluşturacağız. Örneğimizde /dev/sdb ve /dev/sdc disklerini kullanacağız.
1. Diskleri Hazırlama
Önce disklerin mevcut partition tablosunu temizleyip Linux RAID tipi partition oluşturacağız.
# Mevcut disk bilgilerini kontrol etme
lsblk
# Çıktı:
# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
# sda 8:0 0 100G 0 disk
# ├─sda1 8:1 0 99G 0 part /
# └─sda2 8:2 0 1G 0 part [SWAP]
# sdb 8:16 0 500G 0 disk
# sdc 8:32 0 500G 0 disk
# İlk diski partition'lama
sudo fdisk /dev/sdb
# fdisk içinde sırasıyla:
# n -> Yeni partition oluştur
# p -> Primary partition
# 1 -> Partition numarası
# Enter -> Varsayılan ilk sektör
# Enter -> Varsayılan son sektör (tüm diski kullan)
# t -> Partition tipini değiştir
# fd -> Linux RAID autodetect
# w -> Değişiklikleri kaydet ve çık
# Aynı işlemi ikinci disk için tekrarla
sudo fdisk /dev/sdc
# Partition'ları doğrulama
lsblk
# sdb 8:16 0 500G 0 disk
# └─sdb1 8:17 0 500G 0 part
# sdc 8:32 0 500G 0 disk
# └─sdc1 8:33 0 500G 0 part
2. RAID Dizisi Oluşturma
# RAID 1 oluşturma
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
# Onay sorusuna 'y' yazın
# mdadm: Note: this array has metadata at the start and
# may not be suitable as a boot device. If you plan to
# store '/boot' on this device please ensure that
# your boot-loader understands md/v1.x metadata, or use
# --metadata=0.90
# Continue creating array? y
# mdadm: Defaulting to version 1.2 metadata
# mdadm: array /dev/md0 started.
3. Dosya Sistemi Oluşturma ve Bağlama
# ext4 dosya sistemi oluşturma
sudo mkfs.ext4 /dev/md0
# Mount noktası oluşturma
sudo mkdir -p /mnt/raid1
# RAID dizisini bağlama
sudo mount /dev/md0 /mnt/raid1
# Bağlamayı doğrulama
df -h /mnt/raid1
# Çıktı:
# Filesystem Size Used Avail Use% Mounted on
# /dev/md0 492G 73M 467G 1% /mnt/raid1
4. fstab ile Kalıcı Bağlama
# RAID dizisinin UUID'sini bulma
sudo blkid /dev/md0
# Çıktı: /dev/md0: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4"
# fstab'a ekleme
echo 'UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/raid1 ext4 defaults 0 2' | sudo tee -a /etc/fstab
# fstab'ı test etme (unmount edip tekrar bağlama)
sudo umount /mnt/raid1
sudo mount -a
df -h /mnt/raid1
RAID Durumunu İzleme
RAID dizinizin sağlığını düzenli olarak izlemek, olası sorunları erken tespit etmenizi sağlar.
# Hızlı durum kontrolü
cat /proc/mdstat
# Çıktı:
# Personalities : [raid1]
# md0 : active raid1 sdc1[1] sdb1[0]
# 523776 blocks super 1.2 [2/2] [UU]
#
# unused devices:
# [UU] -> Her iki disk de aktif ve sağlıklı
# [U_] -> Bir disk sorunlu veya eksik
# [_U] -> Diğer disk sorunlu veya eksik
# Detaylı bilgi
sudo mdadm --detail /dev/md0
# Çıktı:
# /dev/md0:
# Version : 1.2
# Creation Time : Sun Jul 6 10:30:00 2025
# Raid Level : raid1
# Array Size : 523776 (511.00 MiB 535.82 MB)
# Used Dev Size : 523776 (511.00 MiB 535.82 MB)
# Raid Devices : 2
# Total Devices : 2
# State : clean
# Active Devices : 2
# Working Devices : 2
# Failed Devices : 0
# Spare Devices : 0
# Number Major Minor RaidDevice State
# 0 8 17 0 active sync /dev/sdb1
# 1 8 33 1 active sync /dev/sdc1
# Tüm RAID dizilerini tarama
sudo mdadm --examine --scan
Disk Arızası Simülasyonu
Gerçek bir arıza durumunda nasıl davranacağınızı bilmek için simülasyon yapmak önemlidir.
# Bir diski arızalı olarak işaretleme
sudo mdadm /dev/md0 --fail /dev/sdc1
# mdadm: set /dev/sdc1 faulty in /dev/md0
# Durumu kontrol etme
cat /proc/mdstat
# md0 : active raid1 sdc1[1](F) sdb1[0]
# 523776 blocks super 1.2 [2/1] [U_]
# (F) -> Failed (arızalı) anlamına gelir
# Arızalı diski diziden çıkarma
sudo mdadm /dev/md0 --remove /dev/sdc1
# mdadm: hot removed /dev/sdc1 from /dev/md0
# Detaylı durumu kontrol etme
sudo mdadm --detail /dev/md0
# State : clean, degraded
# Active Devices : 1
# Working Devices : 1
# Failed Devices : 0
Yeni Disk Ekleme ve Rebuild
Arızalı disk değiştirildikten sonra yeni diski RAID dizisine ekleyerek rebuild (yeniden oluşturma) sürecini başlatabilirsiniz.
# Yeni diski partition'lama (aynı fdisk adımları)
sudo fdisk /dev/sdc
# n -> p -> 1 -> Enter -> Enter -> t -> fd -> w
# Yeni diski RAID dizisine ekleme
sudo mdadm /dev/md0 --add /dev/sdc1
# mdadm: added /dev/sdc1
# Rebuild sürecini izleme
cat /proc/mdstat
# md0 : active raid1 sdc1[2] sdb1[0]
# 523776 blocks super 1.2 [2/1] [U_]
# [========>............] recovery = 42.5% (222784/523776) finish=0.1min speed=111392K/sec
# Rebuild tamamlandığında
cat /proc/mdstat
# md0 : active raid1 sdc1[2] sdb1[0]
# 523776 blocks super 1.2 [2/2] [UU]
Not: Rebuild süresi disk boyutuna ve sistem yüküne bağlı olarak birkaç dakikadan saatlere kadar sürebilir. Bu süre zarfında RAID performansı düşebilir ancak veri erişimi kesintisiz devam eder.
RAID Silme ve Durdurma
Bir RAID dizisini tamamen kaldırmak istiyorsanız aşağıdaki adımları izleyin:
# RAID dizisini unmount etme
sudo umount /mnt/raid1
# fstab'dan ilgili satırı kaldırma
sudo nano /etc/fstab
# UUID=... satırını silin veya başına # koyun
# RAID dizisini durdurma
sudo mdadm --stop /dev/md0
# mdadm: stopped /dev/md0
# Disklerdeki RAID superblock bilgisini silme
sudo mdadm --zero-superblock /dev/sdb1
sudo mdadm --zero-superblock /dev/sdc1
# Doğrulama
cat /proc/mdstat
# Personalities : [raid1]
# unused devices:
mdadm.conf Yapılandırması
RAID yapılandırmasının sistem yeniden başlatmalarında otomatik olarak tanınması için mdadm.conf dosyasını güncellemeniz gerekir.
# Mevcut RAID yapılandırmasını tarama
sudo mdadm --detail --scan
# ARRAY /dev/md0 metadata=1.2 name=sunucu1:0 UUID=abcdef12:34567890:abcdef12:34567890
# mdadm.conf dosyasını güncelleme
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
# initramfs güncelleme (Debian/Ubuntu)
sudo update-initramfs -u
# dracut güncelleme (RHEL/CentOS)
sudo dracut --force
İpuçları ve Best Practices
- E-posta bildirimi kurun:
mdadmarıza durumunda otomatik e-posta gönderebilir./etc/mdadm/mdadm.confdosyasınaMAILADDR admin@sirket.comsatırını ekleyin vemdadm --monitorservisinin çalıştığından emin olun. - Yedek disk (spare) bulundurun: RAID dizisine fazladan bir disk ekleyerek, arıza durumunda otomatik rebuild başlatılmasını sağlayabilirsiniz:
mdadm --create /dev/md0 --level=1 --raid-devices=2 --spare-devices=1 /dev/sdb1 /dev/sdc1 /dev/sdd1 - RAID, yedekleme değildir: RAID disk arızalarına karşı koruma sağlar ancak veri silme, bozulma veya ransomware gibi durumlara karşı korumaz. Düzenli yedekleme stratejiniz mutlaka olmalıdır.
- Aynı marka/model disk kullanın: RAID dizisindeki tüm disklerin aynı kapasite, marka ve modelde olması performans ve uyumluluk açısından önerilir.
- SMART verilerini izleyin:
smartctlaracı ile disk sağlığını proaktif olarak takip edin. Arıza belirtilerini önceden tespit edebilirsiniz:sudo smartctl -a /dev/sdb - Periyodik kontrol yapın: Cron job ile düzenli RAID durumu kontrolü yapabilirsiniz.
/etc/cron.d/mdadmdosyasını kontrol edin. - Rebuild sırasında sistemi yeniden başlatmayın: Rebuild süreci kesintiye uğrarsa kaldığı yerden devam eder ancak süreci uzatır.
Sonuç
Linux'ta mdadm ile yazılımsal RAID, sunucu ortamlarında veri güvenliğini sağlamanın uygun maliyetli ve esnek bir yoludur. Bu rehberde RAID oluşturma, yönetme, izleme ve sorun giderme süreçlerini ele aldık. Üretim ortamlarına geçmeden önce test ortamında bu adımları uygulamanızı ve arıza senaryolarını simüle etmenizi tavsiye ederiz.
Sunucu altyapınızda RAID yapılandırması veya veri güvenliği konusunda profesyonel destek almak isterseniz, VekoSis ekibimizle iletişime geçebilirsiniz.