# RAID
Redundant Array of Inexpensive Disks (Türkçe: "Ucuz Disklerin Artıklıklı Dizisi") ve Redundant Array of Independent Disks kısaca RAID (Türkçe: "Bağımsız Disklerin Artıklıklı Dizisi"), diskler arasında veri kopyalama veya paylaşımı için birden fazla sabit diski kullanarak yapılan veri depolama tasarısıdır. Tek diske göre, RAID'in yararı, veri bütünlüğünü, hata toleransını, iş çıkarma yeteneğini ve toplam disk kapasitesini artırmasıdır. Özgün uygulamalarda, anahtar avantajı disk kapasiteyi artırmakla beraber disk performansını da yükseltmesi ve verileri eşzamanlı olarak yedeklemeyi sağlamasıdır.
RAID, tek bir mantıksal birime çoklu diskleri birleştirir. Böylece işletim sistemi birçok farklı sabit disk görmek yerine sadece bir tane görür. RAID sunucu tabanlı bilgisayarlarda tipik olarak kullanılır ve genellikle aynen boyutu ayarlanmış disk sürücüyle tamamlanır.
RAID şartnamesi birtakım prototipleri “RAID düzeyleri” veya disk bileşimlerini önermekteydi. Her birinin teorik avantajları ve dezavantajları vardı. Yıllar içinde, RAID kavramının farklı yürütmeleri ortaya çıktı. Çoğu orijinal hallerinden farklılaştı ama numaralandırılmış adlar kaldı.
RAID'in birçok tanımı yıllar içinde tartışılmıştır. Temel RAID kavramlarını kullanan herhangi bir sistem güvenilirlik, kapasite veya performans için fiziksel disk uzayını birleştiriyorsa buna RAID Sistem denir.


## Tarihçe.
Norman Ken Ouchi “Başarısız bellek ünitesinde saklanan bilgiyi kurtarmak için hazırlanan sistem” konusunun patentini (U.S Patent 4,092,732) 1978 yılında aldı. RAID teknolojisi ilk olarak 1987 yılında Kaliforniya Üniversitesi'nde bir grup bilim insanı tarafından tanımlanmıştır. 1987 yılında, RAID seviyeleri (1'den 5'e kadar) David A. Patterson, Garth A. Gibson ve Randy H. Kartz tarafından tanımlandı.


## RAID uygulamaları.
Çoklu sayıdaki diskler üzerine veri dağıtılması işi bu iş için tasarlanmış Donanım veya yazılım ile gerçekleştirilir. Bunlara ilaveten kısmen donanım kısmen de yazılım tabanına sahip çözümler olan hibrid RAID'ler de mevcuttur.
İşletim sistemi yazılım uygulaması dizilimdeki diskleri normal sürücü denetim birimi (IDE/ATA, SCSI, Fibre Channel, vs.) ile yönetir. Mevcut merkezi işlem birimi (MİB) hızları göz önüne alındığında, yazılım RAID'lerinin donanım RAID'lerinden daha hızlı olabildiği görülür, buna karşılık başka işlerde kullanılabilecek olan işlem gücü bu işe harcanmaktadır. Bu duruma gösterilebilecek önemli bir istisna, bir OLTP sürücüsünde olduğu gibi, RAID donanımın uygulamayı hızlandırabilecek olan batarya destekli bir yazma önbelleği ile birlikte kullanılmasıdır. Bu durumda RAID uygulaması herhangi bir sistem çökmesi durumuna karşı yazma önbelleğinden destek almaktadır. Sistem çöktüğü takdirde bilinen daha önceki bir noktaya dönebilmektedir. Donanım çözümü; RAM hızları ile kısıtlı bir şekilde disk sürücüye erişmeye çalışmaktan, önbelleğin bir başka kontrol birimine ikizlenebilme hızından ve önbellek miktarı ile önbelleğin diske yapabileceği aktarımın hızından daha yüksektir. Bu nedenle yüksek işlem hızına sahip sunucularda genellikle batarya destekli önbellek disk kontrol birimleri kullanılması önerilir. Aynı şartlar altında yazılım çözümü kullanılması ise, sürücülerin yapacakları dönüşler sırasında diske aktarabilecekleri bilgi miktarı veya arama ile sınırlı olacaktır. Salt yazılımdan oluşan bir RAID'in bir başka dezavantajı ise, aksayan diske veya kullanılan ön yükleme düzenlemelerine bağlı olarak, dizin yeniden kurulana kadar bilgisayarın yeniden ön yüklemesi yapılamayabilir.
RAID'in donanım uygulaması en azından özel amaçlı üretilmiş bir RAID denetim birimine ihtiyaç duyar. Masa üstü sistemlerde ise bu işlevi PCI genişleme kartı yerine getirebilir veya bu yetenek anakart içerisine yerleştirilebilir. Daha büyük çaplı RAID'lerde kontrol birimi ve diskler genellikle çoklu yuvaya sahip harici koruncaklarda saklanırlar. Kullanılan diskler IDE, ATA, SCSI, Fibre Channel veya bunların herhangi bir kombinasyonu olabilir. Kontrol birimi ana bilgisayara (ana bilgisayarlara) yüksek hızlı SCSI, PCIe, Fiber kablo veya iSCSI bağlantıları ile doğrudan veya bir başka yapı üzerinden bağlanır veya ağa bağlı depolama olarak erişilir. Bu kontrol birimi disklerin yönetimini ve (çok sayıda RAID düzeyi tarafından gereksinim duyulan) eşlik hesaplamalarını gerçekleştirir. Bu seçenek performansın yükselmesine katkıda bulunur ve işletim sistemi desteğini daha kolay hale getirir. Donanım uygulamaları aynı zamanda tipik olarak çalışırken yer değiştirmeyi de destekler, bu sayede arıza yapan sürücüleri sistem çalışırken değiştirmek mümkün olur. Bazı nadir durumlarda donanım kontrol birimleri arıza yapabilir, bu durumlarda veri kaybı kaçınılmazdır. Ucuz RAID kontrol birimi donanımları piyasaya çıkmaya başladıktan sonra Hibrid RAID'ler çok popüler bir hale geldi. Burada kullanılan donanım RAID özellikleri olmayan normal bir disk kontrol birimidir, fakat bu kontrol birimi sistemi başlatma anında devreye girerek kullanıcının BIOS tarafından kontrol edilen RAID'leri kurmasına olanak tanır. Herhangi bir modern işletim sistemi kullanıldığında, dizilimi tek bir blok cihazmış gibi gösterecek özel geliştirilmiş RAID sürücülerine ihtiyaç duyacaktır. Bu kontrol birimleri tüm hesaplamaları gerçekte donanım değil, yazılım içerisinde gerçekleştirdiklerinden genellikle sahte RAID olarak adlandırılırlar. Yazılım RAID'lerinin aksine bu sahte RAID'ler genellikle çoklu denetim birimlerine yayılamazlar.
Hem yazılım hem de donanım sürümleri hazır yedek kullanımını desteklerler. Hazır yedek, arıza yapan bir sürücüyü anında (ve hemen her zaman otomatik olarak) değiştiren sisteme önceden yüklenmiş bir sürücüdür. Bu durum onarım için gerekli ortalama zamanı azaltır, aynı RAID yedeklerinde bir arıza daha meydana gelmesi veri kaybıyla sonuçlanabilir.
Bazı yazılım RAID sistemleri kullanıcıların diskin tamamı yerine bölümlerinden dizilimler meydana getirmelerine olanak tanır. Matris RAID ’in aksine bunlar sadece RAID 0 ve RAID 1 ile sınırlı kalmazlar ve bölümlerin tamamının RAID olması gerekmez.


## Kullanım alanları.
Bu kılavuz başarım arttırımı veya yedekleme amacıyla RAID’in seçilmesi konularına açıklık getirmek üzere olumlu ve olumsuz yanlarını incelendiği RAID ile ilgili bir forumdaki bir izlekten alınmıştır. Forumda kullanıcıların kendi RAID tecrübelerini anlattıkları diğer izleklere bağlantılar bulunmaktadır.


### Yapabilecekleri.
RAID çalışabilirlik süresini muhafaza edebilir. RAID seviyeleri 1, 0+1/10, 5 ve 6 (ve bunların 50 ve 51 gibi varyantları) kullanıcıların erişebileceği veriyi dizilim üzerinde tutmaya çalışırken mekanik hard disklerin arıza yapmasına meydan verebilir. Bu durumda RAID veriyi bant, DVD veya bir başka yavaş çalışan yedekleme ortamından geri almak yerine dizilimin bir başka üyesi olan yedekleme diski üzerine yükler, bu üyeler dizilimde öncelik sırasına göre kullanıcının hizmetinde bulunmaktadır. Gerektiğinde veri bu üyelerden süratle geri yüklenebilir. Bu durum büyük şirketler için son derece önemlidir, çünkü sistemin çalışmadığı süre kazançtan kayıp anlamına gelir. Evlerde kullanılan bilgisayarlarda ise düzinelerle DVD kullanılarak yeniden yüklenen ve bu nedenle büyük zaman kaybına neden olan büyük ölçekli ortam depolama dizilimlerinin kaybına veya yedekleme ile koruma sağlanmamış olması nedeniyle disk arızalarının getireceği olumsuzluklara karşı kullanıcıları korur.
RAID belirli uygulamalarda performansı artırabilir. RAID seviyeleri 0 ve 5 - 6 “disklere bölüştürme” üzerine varyasyonlar kullanır, bu da lineer transfer gerçekleştirirken desteklenmiş transfer hızlarını artırmak için çoklu mil kullanımına olanak tanır. Görüntü ve video düzenleme uygulamaları gibi büyük ölçekli dosyalarla çalışan iş istasyonu uygulamaları disk bölüştürme işleminden büyük yarar sağlar. Disklere bölüştürme işlemi diskten diske yedekleme uygulamalarında fazladan iş çıkartılmasında yararlı olur. Aynı zamanda, eğer RAID 1 veya yeterince büyük bloğa ve bölüştürme özelliğine sahip bir RAID kullanılırsa çoklu eşzamanlı rastgele erişim (örneğin çok kullanıcılı veritabanları) gibi erişim düzeneklerinin performanslarında artış elde edilir.


### Yapamayacakları.
RAID, dizilim üzerindeki veriyi koruyamaz. Bir RAID diziliminin tek dosyalama sistemi vardır. Bu da tek bir arıza noktası oluşturur. RAID diziliminin dosyalama sistemi disk arızalarının dışında daha birçok etmenden zarar görebilir, yani RAID bu tür veri kayıplarına karşı herhangi bir koruma sağlamaz. RAID virüslerin veriye zarar vermesini önleyemez. RAID sistemin çökmesine engel olamaz. RAID verinin kullanıcı tarafından yanlışlıkla değiştirilmesi veya silinmesine engel olamaz. RAID verinin disk veya başka bir donanım parçasında meydana gelen arıza nedeniyle zarar görmesini engelleyemez. RAID veriyi yangın gibi insan hataları nedeniyle meydana gelen olumsuz durumlara veya sel gibi tabii afetlere karşı koruyamaz. Verinin korunması için mutlaka DVD, bant veya harici hard disk gibi çıkartılabilir bir ortamda yedeklenmesi ve farklı bir lokasyonda saklanması gerekir. RAID meydana gelen olumsuz bir olayın veri kaybına neden olmasını tek başına önleyemez. Yıkım kaçınılmazdır, fakat yedekleme sayesinde yıkım geldiğinde veri kaybını önlemek mümkün olabilir.
RAID yıkımdan kurtulmayı kolaylaştırmaz. Tek bir diskle çalışılıyorsa, bu diske erişim birçok işletim sisteminde gömülü halde bulunan jenerik ATA veya SCSI sürücüsü ile gerçekleştiriliyordur. Yine de RAID kontrol birimleri çoğunlukla özel sürücülere gereksinim duyar. Tek bir disk üzerinde jenerik kontrol birimleri ile çalışan kurtarma araçları RAID dizilimlerindeki veriye erişebilmek için özel sürücülere gereksinim duyarlar. Eğer bu kurtarma araçları yeterince iyi kodlanmamışsa ve ilave sürücülerin kullanımına olanak tanımıyorsa, o zaman RAID dizilimi kullanılan o kurtarma araçlarına erişim izni vermeyecektir.
RAID her türlü uygulamada büyük performans artışları sağlamaz. Bu ifade özellikle tipik masa üstü ve oyun uygulamaları için geçerlidir. Masa üstü uygulamalarının ve oyunların çoğunluğu tampon bellek stratejisine ağırlık verir ve performansı diskten (veya disklerden) bekler. Sürdürülebilir ham transfer hızının artırılması masa üstü kullanıcılara ve oyun amaçlı kullananlara oldukça küçük kazanç sağlar, çünkü zaten çalışırken erişim sağladıkları dosyaların çoğunluğu küçük dosyalardır. RAID 0 kullanarak disk bölüştürmek tampon bellek ve arama performansını değil lineer transfer performansını artırır. Sonuç olarak, RAID 0 kullanılarak gerçekleştirilen disk bölüştürme, arada sırada istisnaları görülse de pek çok masa üstü uygulaması ve oyunda hemen hemen hiçbir performans artışı getirmez. Yüksek performans amaçlayan masa üstü uygulayıcıların ve oyuncuların RAID 0 ile çalışan iki tane daha yavaş / küçük disk yerine bir tane daha büyük ve daha hızlı aynı zamanda pahalı disk edinmeleri doğru olur. En büyük, en yeni ve en kapasiteli diskler bile RAID 0'da çalıştırıldığında genel performans %10'dan daha fazla artmaz, hatta bazı durumlarda özellikle oyunlarda performansta düşüş bile gözlenebilir.
RAID yeni bir sisteme geçmiş değildir. Eğer tek bir disk kullanılıyorsa, diski yeni bir sisteme geçirmek nispeten basit bir işlemdir. Yapılacak iş diski aynı arayüze sahip olan yeni sisteme bağlamaktır. Fakat RAID dizilimi kullanılıyorsa bu işlem o kadar da kolay değildir. Dizilimi başarıyla kurarak işletim sisteminin erişimine sunabilmek için RAID BIOS, dizilim üyelerinden yardımcı verileri okuyabiliyor olmalıdır. RAID kontrol birimlerinin üreticileri yardımcı verileri için değişik formatlar (aynı üreticinin değişik kontrol birimi ailelerine ait ürünleri bile zaman zaman kendi aralarında uyumsuzluk gösterebiliyor) kullandıklarından, bir RAID dizilimini bir başka kontrol birimine aktarmak hemen hemen imkânsızdır. RAID dizilimini bir başka sisteme geçirilirken kontrol biriminin de beraber geçirilmesi için plan yapılmalıdır. Ana karta gömülü RAID kontrol birimlerin popülaritesi arttıkça bu işlemin yapılması gittikçe daha zor bir hale gelmektedir. Genellikle RAID dizilim üyelerini ve kontrol birimlerini birlikte taşımak mümkün olmakatadır ve Linux ile Windows Sunucu Ürünlerindeki yazılım RAID'i bu kısıtlamadan etkilenmiyor, fakat yazılım RAID'inin de başka kısıtları (çoğunlukla performans ile ilgili) var.


## Güvenilirliği.
### Bozulma yüzdesi.
Belirli bir RAID'in ilk aksamaya değin geçen ortalama süresi (MTTF) veya aksamalar arasında geçen ortalama süresi (MTBF) kullanılan RAID tipine bağlı olarak, kendisini oluşturan hard disklerinkinden daha az veya daha çok olabilir.


### Veri kaybına değin geçen ortalama süre (MTTDL).
Bu kapsamda, belirli bir dizilimde veri kaybı görülene kadar geçen ortalama zaman hesaba katılır.


### Toparlanana değin geçen ortalama süre (MTTR).
Güvenilirlik için yedekleme ile çalışan sistemlerde, bir sistem hatasından sonra dizilimin tekrar hatalara karşı toleranslı çalışma moduna gelene kadar geçen zaman anlamına gelmektedir. Bu kavramın içerisinde arızalı bir disk mekanizmasının değiştirilmesi kadar bozulan bir dizilimi tekrar oluşturmak için gereken zaman da bulunmaktadır (örneğin yedekleme için verinin çoğaltılması gibi).


### Kurtarılamayan bit hata oranı (UBE).
Bu, çevrimsel artıklık kodlaması (CRC) uygulaması ve çok kere yapılan denemelerden sonra disk sürücünün kendini toparlayamaması oranı anlamına gelmektedir. Bu hata kendini bir sektör okuma hatası olarak gösterecektir. Bazı RAID uygulamaları bozuk kesimi “bad sector” tekrar eşleyerek bu hataya karşı koruma sağlayabilir. Bunu gerçekleştirmek için yedek veriyi kullanarak verinin sağlam bir kopyasını elde eder ve bu veriyi eskisinin yerini alan ve yeniden eşlemesi yapılan sektöre yazar. UBE oranı kurumsal disk sürücü sınıfında (IDE, ATA, ) tipik olarak 1015'te 1 ve masa üstü sınıfı disk sürücüleri sınıfında (IDE, ATA, ) 1014'te 1 seviyesindedir. Geriye kalan disklerde düzeltilemeyen sektörler bulunduğundan artan disk yetenekleri ve büyük RAID 5 yedekleme gruplarında herhangi bir disk hatasından sonra tekrar başarılı bir RAID grubu oluşturmak gittikçe daha zor hale gelmektedir. RAID 6 gibi ikili koruma düzenekleri bu sorunu çözmeyi hedeflemekle birlikte yüksek yazma cezası ile karşı karşıya kalmaktadırlar.


### Atomik yazma hatası.
Yırtık yazma, yırtık sayfalar, tamamlanmamış yazma, kesintiye uğramış yazma, gibi muhtelif isimler ile de anılır. Sözü edilen şey, yedekli depolama sistemlerinin oldukça az anlaşılan ve aynı zamanda nadiren sözü edilen bir hata modudur. Veritabanı araştırmacısı Jim Gray ilişkisel veritabanıının ilk kullanıma başlandığı tarihlerde şöyle yazmaktadır "Yerinde yapılan bir güncelleme zehirli bir elmadır”. Yine de buuyarıya pek fazla kulak asan olmadı ve daha sonra RAID'in gelmesi ile de bir kenara kaldırıldı. Birçok yazılım mühendisi RAID'i tüm veri depolama bütünlüğü ve güvenilirlik sorunlarına çözüm olarak kabul etmeye başladı. Çoğu yazılım programı depolama objelerini “yerinde” güncelliyor; diğer bir deyişle objenin yeni versiyonunu disk üzerinde eski versiyonun bulunduğu aynı adrese yazıyor. Yazılımlar bazı delta bilgiyi diskte başka lokasyonlara da yazabiliyor ve bunu yaparken depolamanın “atomik yazma semantiği” kullandığını var sayıyor. Bunun anlamı; verinin yazılması ya bütünüyle gerçekleşmiştir ya da hiç gerçekleşmemiştir. Fakat aslında çok az sayıdaki depolama sistemi atomik yazmaya destek sağlayabilmektedir ve bunların içerisinde daha da azı bu semantiği sağlarken hata oranlarını belirtebilmektedir. Şunu dikkate almalısınız ki bir obje yazılırken RAID depolama cihazı genellikle o objenin yedeklerini paralel olarak bir yerlere yazmaktadır. Bu nedenle yazma işlemi sırasında meydana gelebilecek bir arıza durumunda söz konusu yedeklerin yazılması değişik hallerde kesintiye uğrayabilir, dahası bu kopyaların yeni hali mi yoksa eski hali mi yansıttığı da kesin olarak bilinemez. Az bilinen hata modu, delta günlüğü orijinal verinin eski veya yeni halinin geçerli olduğunu bilmesi üzerine kurulur, böylece yapılan değişikliği mantıksal olarak geri çevirebilir. Şimdilik sadece az sayıda depolama sistemi RAID diskler üzerinde atomik yazma semantiği sağlayabilmektedir.


## Standart Düzeyler.
"Düzey" diye adlandırılan birçok standart şemalar geliştirilmiştir. Baştan sadece 5 adet RAID düzeyi tasarlanmış, fakat sonradan birçok farklı çeşidi geliştirilmiştir. Bunların arasında bazı nested levels(bağlantılı düzeyler) ve birçok non-standard levels(standart olmayan düzey) dikkat çekmektedir (mostly proprietary).
Aşağıda en sık kullanılan RAID düzeylerinin kısa bir özeti bulunmaktadır. Hacim verimi, n disklik bir dizide var olan kullanılabilir depolama hacmi ve bir diksin kapasitesinin katları olarak verilmiştir. Örneğin, eğer bir dizide 250GB'lık n=5 disk bulunuyorsa ve verim n-1 ise, kullanılabilir hacim 250GBnin 4 katı yani yaklaşık 1TB'tır.