mdadm ile RAID5 Yapılandırması ve Kritik Disk Kurtarma Stratejileri

 · 

mdadm ile RAID5 Yapılandırması ve Kritik Disk Kurtarma Stratejileri

mdadm ile RAID5 Yapılandırması ve Kritik Disk Kurtarma Stratejileri

Veri bütünlüğü ve erişilebilirliği, modern IT altyapılarının temel taşlarından biridir. RAID (Redundant Array of Independent Disks) teknolojileri, bu hedeflere ulaşmada kritik rol oynar. Özellikle RAID5, maliyet etkinliği ve tek disk arızasına karşı sağladığı koruma ile yaygın bir tercihtir. Linux sistemlerinde yazılımsal RAID yönetiminin amiral gemisi olan mdadm aracı, RAID5 dizilerini oluşturmak, yönetmek ve en önemlisi arızalı durumlarda disk kurtarma operasyonlarını gerçekleştirmek için vazgeçilmez bir araçtır.

RAID5 Dizisi Oluşturma: Adım Adım Yapılandırma

Bir RAID5 dizisi oluşturmak, disklerin fiziksel hazırlığından dosya sistemi oluşturmaya kadar belirli adımları içerir. Bu örnekte, /dev/sdb, /dev/sdc ve /dev/sdd disklerini kullanarak bir RAID5 dizisi yapılandıracağız. Üç diskten ikisi veri için, biri ise parite için kullanılacak.

1. Disk Bölümlerini Hazırlama

Öncelikle, RAID dizisine katılacak her diski uygun şekilde bölümlendirmek gerekir. Genellikle, tüm diski tek bir RAID bölümü olarak kullanmak en pratik yaklaşımdır. Bölüm tipini `Linux raid autodetect` (hex kodu `fd`) olarak ayarlamak, sistemin bu bölümleri RAID bileşeni olarak tanımasını sağlar.

sudo fdisk /dev/sdb
d # Mevcut bölümleri sil
n # Yeni bölüm oluştur
p # Birincil bölüm
1 # Birinci bölüm numarası
   # Varsayılan başlangıç sektörünü kabul et
   # Varsayılan bitiş sektörünü kabul et (tüm disk)
t # Bölüm tipini değiştir
fd # Linux raid autodetect
w # Değişiklikleri yaz ve çık

# Aynı işlemi /dev/sdc ve /dev/sdd için tekrarla.
# Bu işlem sonunda /dev/sdb1, /dev/sdc1, /dev/sdd1 bölümleri hazır olacaktır.

2. RAID Dizisini Oluşturma

Disk bölümleri hazırlandıktan sonra, mdadm komutu ile RAID5 dizisini oluşturabiliriz. Bu komut, belirtilen diskleri bir araya getirerek mantıksal bir RAID aygıtı (örneğin /dev/md0) oluşturur.

sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --chunk=256K
  • --create /dev/md0: Yeni bir RAID dizisi oluşturur ve aygıt adını /dev/md0 olarak belirler.
  • --level=5: RAID seviyesini RAID5 olarak ayarlar.
  • --raid-devices=3: Dizide kullanılacak toplam fiziksel disk sayısını belirtir.
  • /dev/sdb1 /dev/sdc1 /dev/sdd1: Dizinin bileşeni olacak disk bölümlerini listeler.
  • --chunk=256K: Veri şeritleme boyutunu (chunk size) belirler. Uygulamanın I/O profiline göre ayarlanmalıdır; varsayılan genellikle 64K'dır, ancak büyük dosyalarla çalışırken 256K veya 512K daha iyi performans sunabilir.

Dizi oluşturma süreci arka planda senkronizasyon ile başlar. Bu süreci cat /proc/mdstat komutu ile izleyebilirsiniz:

cat /proc/mdstat

Çıktı, senkronizasyonun ilerlemesini ve RAID dizisinin durumunu gösterecektir.

3. 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/raid5
sudo mount /dev/md0 /mnt/raid5

4. RAID Dizisini Kalıcı Hale Getirme

Sistem yeniden başlatıldığında RAID dizisinin otomatik olarak tanınması ve bağlanması için mdadm.conf dosyasını güncellemek ve /etc/fstab'a girdi eklemek önemlidir.

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u # Bazı dağıtımlar için gerekli

# /etc/fstab dosyasına aşağıdaki satırı ekleyin:
# UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/raid5 ext4 defaults 0 0
# UUID'yi almak için: sudo blkid /dev/md0

Gerçek Senaryo: Yüksek Performanslı Log Sunucusu

Bir finansal teknoloji şirketinde, saniyede binlerce işlem loglayan bir log toplama sunucusunun depolama ihtiyacı ortaya çıktı. Hem yüksek yazma performansı hem de tek disk arızasına dayanıklılık gerekiyordu. Donanımsal RAID kartları bütçe dışı kaldığı için, Linux tabanlı bir sunucuda mdadm ile yapılandırılmış RAID5 dizisi tercih edildi. Dört adet 2TB NVMe SSD kullanılarak (bir disk hot-spare olarak) bir RAID5 dizisi oluşturuldu. Chunk size, log dosyalarının genellikle küçük boyutta olması ancak çok sık yazılması nedeniyle 128K olarak optimize edildi. Bu kurulum, hem disk maliyetlerini düşürdü hem de log yazma performansını RAID10'a yakın bir seviyeye taşıyarak operasyonel sürekliliği sağladı.

RAID5 Disk Kurtarma: Arızalı Diski Değiştirme

RAID5'in temel avantajı, tek bir disk arızasında bile veri kaybı yaşanmamasıdır. Ancak, arızalı diskin tespit edilip hızlıca değiştirilmesi, ikinci bir arızayı önlemek için hayati öneme sahiptir.

1. Arızalı Diski Tespit Etme

Disk arızası durumunda, /proc/mdstat çıktısı dizideki durumu gösterecektir. Genellikle bir disk `[F]` (Faulty) veya `[U]` (Unavailable) olarak işaretlenir.

cat /proc/mdstat

Daha detaylı bilgi için:

sudo mdadm --detail /dev/md0

Burada, hangi diskin durumunun `faulty` veya `removed` olduğunu görebilirsiniz.

2. Arızalı Diski Çıkarma

Arızalı fiziksel diski sistemden sökmeden önce, mdadm'e bu diski diziden çıkarması gerektiğini bildirmek iyi bir uygulamadır. Bu, dizinin arızalı üyeyi resmi olarak 'removed' durumuna geçirmesini sağlar.

# Örnek olarak /dev/sdb1 arızalı ise
sudo mdadm /dev/md0 --fail /dev/sdb1
sudo mdadm /dev/md0 --remove /dev/sdb1

Bu adımlardan sonra, fiziksel olarak arızalı diski sistemden çıkarabilirsiniz.

3. Yeni Diski Ekleme ve Yeniden Yapılanma

Yeni bir disk (örneğin /dev/sde) taktıktan sonra, onu RAID bölümü olarak hazırlamanız ve ardından dizinize eklemeniz gerekir.

# Yeni diski bölümlendir (fdisk veya parted ile)
sudo fdisk /dev/sde
d # (varsa bölümleri sil)
n # Yeni bölüm oluştur
p # Birincil
1 # Birinci bölüm
   # Varsayılan başlangıç/bitiş
t # Bölüm tipini değiştir
fd # Linux raid autodetect
w # Yaz ve çık

# Yeni diski RAID dizisine ekle
sudo mdadm /dev/md0 --add /dev/sde1

Disk eklendiğinde, mdadm otomatik olarak yeniden yapılanma (rebuild) sürecini başlatır. Bu süreç, yeni diski parite verilerini kullanarak senkronize eder. Yeniden yapılanma süreci, disk boyutlarına ve sistem yüküne bağlı olarak saatler sürebilir. İlerlemeyi yine cat /proc/mdstat komutu ile takip edebilirsiniz.

Gerçek Senaryo: Felaket Kurtarma Simülasyonu ve Hızlandırma

Büyük bir e-ticaret platformunda, canlı veri tabanının yedekleme sunucularındaki RAID5 dizilerinde periyodik felaket kurtarma simülasyonları yapılıyordu. Bir simülasyonda, 8 TB'lık bir RAID5 dizisindeki (4+1 konfigürasyon) bir diskin arızalandığı simüle edildi. Disk değişimi ve yeniden yapılanma sürecinin beklenenden daha uzun sürdüğü gözlemlendi. Bu durum, canlı ortamda ciddi bir RTO (Recovery Time Objective) ihlaline yol açabilirdi.

Analiz sonucunda, yeniden yapılanma sürecinin I/O önceliğinin düşük olduğu ve diğer sistem görevlerinin rebuilding'i yavaşlattığı anlaşıldı. Bu sorunu çözmek için, mdadm'in yeniden yapılanma hız limitleri ayarlandı:

# Yeniden yapılanma okuma hız limitini artır (KB/sn)
sudo sysctl -w dev.raid.speed_limit_min=100000

# Yeniden yapılanma yazma hız limitini artır (KB/sn)
sudo sysctl -w dev.raid.speed_limit_max=200000

Bu ayarlamalar, rebuilding sırasında sistem performansının bir miktar etkilenmesine rağmen, kurtarma süresini önemli ölçüde kısalttı. Ayrıca, mdadm'in e-posta bildirim özelliğini (/etc/mdadm/mdadm.conf içinde `MAILADDR` ayarı) etkinleştirerek, disk arızalarında anında uyarı alınması sağlandı. Bu proaktif yaklaşım, olası bir ikinci disk arızası senaryosunda veri kaybı riskini minimize etti.

Sonuç

mdadm ile RAID5 yapılandırması, maliyet etkin ve güvenilir bir depolama çözümü sunar. Ancak, sadece kurulumla bitmez. Düzenli izleme, disk arızalarına hızlı yanıt verme ve doğru kurtarma stratejilerini uygulama, veri sürekliliğini sağlamak için hayati öneme sahiptir. Özellikle üretim ortamlarında, yeniden yapılanma süreçlerinin yönetimi ve olası performans etkileri göz önünde bulundurulmalı, önleyici adımlar ve otomasyonlar devreye sokulmalıdır. Bu, yalnızca veriyi korumakla kalmaz, aynı zamanda operasyonel esnekliği ve iş sürekliliğini de garanti altına alır.

← Blog Listesine Dön