mdadm ile RAID5 Dizi Yönetimi: Yapılandırma ve Kritik Disk Kurtarma

 · 

mdadm ile RAID5 Dizi Yönetimi: Yapılandırma ve Kritik Disk Kurtarma

mdadm ile RAID5 Dizi Yönetimi: Yapılandırma ve Kritik Disk Kurtarma

Üretim ortamlarında veri bütünlüğü ve erişilebilirliği, sistem yöneticilerinin öncelikli konularındandır. Donanımsal RAID kontrolcülerinin getirdiği maliyet ve esneklik kısıtlamaları karşısında, yazılımsal RAID çözümleri önemli bir alternatif sunar. Linux çekirdeğinin Native Multi-Disk (MD) arayüzü ve mdadm aracı, özellikle düşük maliyetli sunucular için güçlü ve esnek bir RAID çözümü sağlar. Bu rehberde, mdadm kullanarak bir RAID5 dizisi oluşturmayı ve olası disk arızalarında veri kaybı yaşamadan kurtarma işlemlerini nasıl yapacağınızı detaylıca inceleyeceğiz.

RAID5 Neden ve Ne Zaman Tercih Edilmeli?

RAID5, veriyi diskler arasında blok seviyesinde şeritler halinde dağıtırken, tek bir diskin arızalanmasına karşı tolerans sağlayan bir parite bloğu kullanır. N adet diskten oluşan bir RAID5 dizisi, N-1 disk kapasitesi sunar. Bu yapılandırma, maliyet/performans/güvenilirlik üçgeninde dengeli bir çözüm arayan ve yüksek yazma performansı gerektirmeyen, ancak okuma performansı ve veri güvenliği kritik olan senaryolar için idealdir. Örneğin, bir dosya sunucusu, yedekleme deposu veya düşük-orta yoğunlukta veritabanı sunucusu için uygun olabilir.

mdadm ile RAID5 Dizisi Yapılandırması

Bir RAID5 dizisi oluşturmadan önce, kullanılacak disklerin hazır olduğundan emin olmalıyız. Genellikle, yeni diskler üzerinde herhangi bir bölüm tablosu veya dosya sistemi bulunmamalıdır.

1. Disklerin Hazırlanması

Öncelikle sisteme bağlı diskleri listeleyelim. Burada /dev/sdb, /dev/sdc, /dev/sdd ve /dev/sde disklerini RAID5 dizisi için kullanacağımızı varsayalım.

lsblk -f

Eğer disklerde mevcut bir dosya sistemi veya bölüm tablosu varsa, bunları temizlemek iyi bir uygulamadır. Bu, mdadm'in diskleri daha temiz bir şekilde tanımasını sağlar.

sudo wipefs -a /dev/sdb
sudo wipefs -a /dev/sdc
sudo wipefs -a /dev/sdd
sudo wipefs -a /dev/sde

Diskleri bölümlere ayırmak yerine doğrudan kullanmak (whole disk) mdadm ile daha yaygın bir yaklaşımdır, ancak bölümlere ayırarak da kullanılabilir. Bu örnekte doğrudan diskleri kullanacağız.

2. RAID5 Dizisi Oluşturma

mdadm komutu ile bir RAID5 dizisi oluşturmak için aşağıdaki syntax kullanılır. Burada 4 disk kullanacağız ve 1 tanesi hot-spare olarak dizide bekleyecek. Eğer bir disk arızalanırsa, hot-spare otomatik olarak devreye girecek.

sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
  • --create /dev/md0: Yeni bir RAID dizisi oluşturur ve ona /dev/md0 adını verir.
  • --level=5: RAID seviyesini RAID5 olarak ayarlar.
  • --raid-devices=3: Bu, RAID5 dizisinin çalışması için gereken minimum aktif disk sayısını belirtir. RAID5, N adet diskten oluştuğunda N-1 disk veri için, 1 disk ise parite için kullanılır. Yani, 3 diskle bir RAID5 oluşturulduğunda, 2 disk veri, 1 disk parite için ayrılır.
  • --spare-devices=1: Bir hot-spare diski tanımlar. Bu disk, aktif disklerden biri arızalandığında otomatik olarak devreye girer.
  • /dev/sdb /dev/sdc /dev/sdd /dev/sde: Diziye dahil edilecek fiziksel disklerdir.

Komut çalıştıktan sonra, RAID dizisi arka planda senkronizasyon işlemine başlayacaktır. Bu işlem, disklerin boyutuna ve sistem yüküne bağlı olarak zaman alabilir.

3. Dizi Durumunu Kontrol Etme

RAID dizisinin senkronizasyon durumunu ve genel sağlık durumunu aşağıdaki komutlarla izleyebiliriz:

cat /proc/mdstat

Bu çıktı, dizinin senkronizasyon yüzdesini ve tahmini tamamlanma süresini gösterecektir. Senkronizasyon tamamlandığında, [UUUU] gibi bir çıktı göreceksiniz (eğer 4 disk kullanılıyorsa ve 1 hot-spare varsa, 3 aktif diskin durumu [UUU_] veya [UUUU] şeklinde görünür, hot-spare ayrı listelenir). Dizi detaylarını görüntülemek için:

sudo mdadm -D /dev/md0

4. Dosya Sistemi Oluşturma ve Bağlama

RAID dizisi hazır olduğunda, üzerine standart bir dosya sistemi (örneğin ext4) oluşturabilir ve bağlayabiliriz:

sudo mkfs.ext4 -F /dev/md0
sudo mkdir /mnt/raid5data
sudo mount /dev/md0 /mnt/raid5data

Sistemin yeniden başlatılmasında RAID dizisinin otomatik olarak bağlanması için /etc/fstab dosyasına bir giriş eklemeliyiz. Bunun için dizinin UUID'sini alalım:

sudo blkid /dev/md0

Çıkan UUID'yi kullanarak /etc/fstab'a aşağıdaki gibi bir satır ekleyin:

UUID="<md0_UUID>" /mnt/raid5data ext4 defaults,nofail 0 2

nofail seçeneği, dizinin bir sebepten dolayı bağlanamaması durumunda sistemin boot etmeye devam etmesini sağlar.

5. mdadm Yapılandırma Dosyasının Kalıcılığı

mdadm, varsayılan olarak sistemdeki RAID dizilerini otomatik olarak tarar ve tanır. Ancak, özellikle kompleks veya özel durumlar için, mdadm'in yapılandırmasını /etc/mdadm/mdadm.conf dosyasına kaydetmek iyi bir uygulamadır. Bu, sistem başlatılırken dizinin doğru şekilde assemble edilmesini garantiler.

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Bu komut, mevcut RAID dizilerini tarar ve yapılandırmalarını mdadm.conf dosyasına ekler. Ardından, initramfs'yi güncellemeliyiz ki sistem başlangıcında RAID dizisi tanınabilsin:

sudo update-initramfs -u

Gerçek Dünya Senaryosu: Üretim Ortamında Disk Arızası ve Kurtarma

Bir veri merkezinde kritik bir dosya sunucusu üzerinde çalışan RAID5 dizisinde bir disk arızalandığında nasıl bir yol izleyeceğimizi ele alalım. Dizimiz mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd komutu ile oluşturulmuş olsun (bu sefer hot-spare olmadan, manuel müdahale gerektiren bir senaryo).

1. Arızalı Diski Tespit Etme

Sistem izleme araçlarınızdan (Zabbix, Nagios vb.) veya doğrudan loglardan bir disk arızası uyarısı aldınız. İlk adım, hangi diskin arızalı olduğunu belirlemektir.

cat /proc/mdstat

Çıktıda genellikle arızalı disk [U_U] veya [UU_U] gibi bir formatla ve (F) (Failed) işaretiyle belirtilir. Örneğin, /dev/sdb arızalı ise:

md0 : active raid5 sdd[2] sdc[1] sdb[0](F)
      25164800 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/2] [UU_]
      bitmap: 0/1 pages [0KB], 65536KB chunk

Burada /dev/sdb diskinin arızalı olduğu ve diziden düşürüldüğü görülüyor. Diskin fiziksel sağlığını kontrol etmek için smartctl kullanabiliriz (disk adını uygun şekilde değiştirin):

sudo smartctl -a /dev/sdb

Bu, diskin SMART (Self-Monitoring, Analysis and Reporting Technology) verilerini gösterir ve arızanın fiziksel mi yoksa geçici mi olduğuna dair ipuçları verir.

2. Arızalı Diski Diziden Çıkarma

Arızalı diski fiziksel olarak değiştirmeden önce, mdadm'in bu diski diziden tamamen ayırmasını sağlamak önemlidir. Eğer disk zaten (F) durumu ile işaretlenmişse, bu adım bazen atlanabilir, ancak manuel olarak kaldırmak daha güvenlidir.

sudo mdadm --fail /dev/md0 /dev/sdb
sudo mdadm --remove /dev/md0 /dev/sdb

--fail komutu diski kasıtlı olarak arızalı olarak işaretler. --remove komutu ise diski diziden tamamen çıkarır. Bu işlemlerden sonra cat /proc/mdstat çıktısında dizinin degrade (düşürülmüş) durumda olduğunu göreceksiniz ([UU_] gibi).

3. Yeni Diski Ekleme

Fiziksel olarak arızalı diski sunucudan çıkarın ve yerine yeni, sağlıklı bir disk takın. Yeni diskin /dev/sdX adını doğrulayın (örneğin /dev/sbf olduğunu varsayalım). Yeni diski mdadm'e tanıtmadan önce, eski diske yapılan temizleme işlemlerini uygulayın:

sudo wipefs -a /dev/sbf

Şimdi yeni diski RAID dizisine ekleyelim:

sudo mdadm --add /dev/md0 /dev/sbf

Bu komutla birlikte, mdadm dizinin yeniden oluşturma (rebuild) sürecini başlatacaktır. Bu süreçte, parite verileri kullanılarak yeni diske kayıp veriler yazılır. Bu işlem, dizinin boyutu, disk hızı ve sistem yüküne bağlı olarak saatler sürebilir.

4. Kurtarma Sürecini İzleme

Kurtarma işleminin ilerleyişini yine cat /proc/mdstat komutu ile izleyebilirsiniz:

cat /proc/mdstat

Çıktıda yeni diskin durumu [U_U] yerine [UUU] olana ve senkronizasyon yüzdesi %100'e ulaşana kadar beklemelisiniz. Senkronizasyon tamamlandığında, diziniz tekrar tam yedekli duruma gelecektir.

Önemli Notlar ve İpuçları

  • İzleme: mdadm --monitor komutu veya sistem izleme araçları ile RAID dizilerini sürekli izlemek, olası sorunları proaktif olarak tespit etmek için kritik öneme sahiptir.
  • Yedekleme: RAID, bir yedekleme çözümü DEĞİLDİR. Sadece tek disk arızasına karşı koruma sağlar. Verilerinizin düzenli olarak başka bir konuma yedeklendiğinden emin olun.
  • Disk Kapasitesi: RAID dizisine eklenen tüm disklerin aynı veya benzer kapasitede olması önerilir. mdadm, en küçük diskin kapasitesini baz alarak diziyi oluşturur.
  • Test Etme: RAID dizisi kurulumundan sonra, bir disk arızasını simüle ederek kurtarma sürecini test etmek, acil durumlara hazırlıklı olmanızı sağlar.

mdadm ile yazılımsal RAID5 yapılandırması ve disk kurtarma süreçleri, Linux tabanlı sunucularda veri güvenliği ve erişilebilirliğini sağlamak için temel becerilerdir. Doğru yapılandırma ve proaktif izleme ile, kritik verilerinizi olası donanım arızalarına karşı koruyabilirsiniz.

← Blog Listesine Dön