HomeMapIndexSearchNewsArchivesLinksAbout LF
[Top Bar]
[Bottom Bar]
[Photo of the Author]
Antonio Castro

TEŞEKKÜRLER
Yazıların görünüşünü düzeltmek için gözonünde bulunmayan bir konumdan işbirliğinde bulunan tım LinuxFocus grubundan çevirmenlere kadar herkese her zaman minnettar kalacağım. Bu durumda bir kişiden de özellikle söz etmem gerekiyor. Bu yazı, benimle e-gönderiler yoluyla RAID sistemler hakkındaki bilgisini paylaşan Luis Colorado'nun yardımları olmadan oluşamazdı. Teşekkürler Luis.

İçerik:
Giriş
RAID İçin Teker Seçimi
SCSI Sisteminin Karakteristik Özellikleri
RAID'in Türleri
RAID0 Nasıl Kurulur

Bir RAID Sistemin Kurulumu ve Biçimlendirimi

Çeviri: Ayşen Büyükakın

[Ilustration]

Özet:

RAID (Ucuz Aşırıyinelemeli Tekerler Dizisi, İngilizcesi: Redundant Array of Inexpensive Disks), birçok sürücünün, çeşitli sürücülerin paralel çalışmasıyla, tek bir sanal sürücü gibi algılanmasını sağlayan sistemler bütününü içerir. Böylece elde olmayan göçmelerde depolanan bilgilerin bellekte korumaya alınma başarım (performance) düzeyini arttırmak mümkün olur.


Giriş

Pazarda çok pahalı ve genelde belirli kontrol kartları kullanımına dayandırılmış birçok donanım çözümleri bulunmaktadır.

Ayrıca RAID araçları arasında kullanıcıya aynı türde birçok teker sürücüsünü RAID gibi kullanma izini veren kartlara dayanan araçlar da bulunmaktadır. Basit Z80 yongasına (chip) ve gelecek kartüstü yazılımlara teşekkürler. Bu özellikleri düşünüldüğünde bu çözümün Linux tabanlı çözümlerden daha verimli olacağını öne sürmek mümkün değildir.

Kontrol kartlarını kullanan araçlar çok pahalıdırlar ve kullanıcıyı aynı türde teker sürücülerini satın almaya zorlamaktadırlar. Öte yandan Linux'a uygun aygıt sürücüleri verildiğinde bu kartların bazıları kullanılabilir; ancak bu ilginç bir çözüm değildir; çünkü Linux, pahalı diğer katı teker seçeneklerine gerek kalmadan aynı verimde parasız yazılım çözümü sunmaktadır.
 
... Linux pahalı katı teker seçeneklerine gerek duymayan aynı verimde parasız yazılım çözümleri sağlamaktadır.
Üzerinde konuşacağımız Linux için RAID sistem çekirdek düzeyinde geliştirilmiştir ve bize farklı türlerde teker kullanma hakkı sağlamaktadır. Sürücüler IDE ve SCSI sürücülerinin karışımı olabilirler. Büyüklükleri farklı olan sürücüler de kullanılabilir; ancak bu durumda her tekerle aynı büyüklükteki bölünümleri (partition) birleştirmek gereklidir. Çok yaygın olan çözüm ise aynı büyüklükteki birçok tekeri kullanmaktır; fakat yine de Linux'un daha fazla esneklik sağladığını belirtmek gerekir. Örneğin tekerin bir parçası RAID için kullanılabilirken diğer parçası ise bağımsız bir bölünüm olarak kullanılabilir; ancak bu iyi bir düşünce değildir; çünkü RAID sistemine girişi yavaşlatabilir. Diğer bir değişle Linux her çeşit teker aracının kullanılmasına olanak verse de mümkünse aynı sığada ve karakterde tekerleri kullanmak daha iyidir. Söz edilmesi gereken diğer bir nokta da SCSI teknolojisinin bus'a bağlıi çeşitli teker araçlarına eş zamanlı giriş izini vermesidir.

Bütün bunlara karşın aynı IDE kontrol kartında bulunan çoklu teker araçlarını kullanmanın anlamı bütün bu aygıtlara hiçbir zaman eş zamanlıi giriş sağlanılamayacağıdır. Ne yazık ki SCSI tekerleri hâlâ IDE benzerlerinden daha pahalıdırlar. Linux RAID sistemi için hazırlanan yazılım çözümü (en azından) özel kartlara dayanan çözümler kadar etkilidir ve kuşkusuz daha ucuzdur ve de teker araçlarına tanınan izinler düşünüldüğünde daha esnektir.

SCSI bus'ta bir araç veriyi bus'a iletirken diğeri de aynı zamanda, bu bilgiyi toparlayarak alır. Oysa IDE arayüzünde önce bir tekere onun arkasından diğerlerine giriş yapılır.

RAID İçin Disk Seçimi

RAID'i etkin kılmak için çok hızlı teker aygıtlarının kullanılması pek salık verilemez. Bunlar çok daha pahalıdır. Disklerin hızlı olmasının nedeni kafalarının daha etkin olması ve kendilerini uygun bir bölge içine çok çabuk bir şekilde yerleştirebilmeleridir. Bölgeler arasında atlama, bir katı tekerde en çok zaman tüketen işlemdir; ancak, MSDOS'a zıt olarak Linux altında örneğin, bu işlem bilginin istenen sırayla girilmesi yerine istenileni belleğine alan ve bilgileri en verimli sıraya sokma eğiliminde olan akıllı bir asansör düzeyine yükseltilmiştir. Ayrıca başarımı yükseltmenin ve bellek cache'de olduğu gibi teker girişlerinin sayısını azaltmanın değişik yolları da vardır. Tekerlerin dönme hızları arasında pek bir fark yoktur. Yoğunlukları ve kafa sayıları farklı olan tekerlerin bilgi aktarım oranları da farklı olur. Bu parametre gözönüne alınmalıdır. Özetleyecek olursak, benzer karakterde ve çok pahalı olmayan SCSI araçlarını kullanmanızı salık vermekteyiz. RAID sistemin hız oranı kendi hızlarını kullanmak yerine eşzamanlı kullanımla saglanacaktir.

Şunu da unutmamak gerekir: Linux sistemi, kök bölünümünün (root partition) olabildiğince serbest kalması için RAID türü olmayan bir teker aygıtından başlatılmalıdır.

SCSI Sisteminin Karakteristik Özellikleri

Katı tekerlerin satın alınmaya başlamasıyla birlikte birçok kuşku da su yüzüne çıkmıştır. Bu yüzden aranan başlıca karakteristik özellikler hakkında biraz daha konuşmakta yarar bulunmaktadır.
 

Ad BitSayısı AygıtSayısı MB/s Baglayıcı En Büyük Kablo Uzunluğu
SCSI-1 8 7 5 50 iğne AlçakYoğunluk 6 m
SCSI-2 
(alias) Fast scsi, o Narrow scsi
8 7 10 50 iğne YüksekYoğunluk 3 m
SCSI-3 
(alias) Ultra, o Fast20
8 7 20 50 iğne
YüksekYoğunluk
3 m
Ultra Wide 
(alias) Fast scsi-3
16 15 40 68 iğne YüksekYoğunluk 1.5 m
Ultra2 16 15 80 68 iğne
YüksekYoğunluk
12 m
Bir RAID birçok teker bölünümünden oluşturulabilir ama sonuç tek tekerli tek bir mantıksal bölünümdür ve biz buna hiçbir yeni bölünüm ekleyemeyiz. Bu mantıksal aracın adı metatekerdir.

IDE aygıtlar Linux altında /dev/hd..., adlı dosya araçları bulundurmaktadır. Bunlar SCSI aygıtlar için /dev/sd... , şeklinde, metatekerlerinde ise çekirdeği daha sonra açıklanacak seçme haklarıyla derledikten sonra, /dev/md.. biçiminde olacaktır. Bunlar gibi dört aygıt bulunmalıdır:

brw-rw----   1 kok      teker       9,   0 mayis 28  1997 md0
brw-rw----   1 kok      teker       9,   1 mayis 28  1997 md1
brw-rw----   1 kok      teker       9,   2 mayis 28  1997 md2
brw-rw----   1 kok      teker       9,   3 mayis 28  1997 md3
İlk ereüimiz, değişim giriş süresini olabilecek en az şekilde yapmaya çalışmak olmalıdır; bu amaç için en iyisi RAID'de küçük bir metateker kullanmak veya bütün fiziksel tekerler arasında, geleneksel biçimde değişikliği yapmaktır. Eğer birçok değiştokuş (swap) bölünümü, her biri ayrıi bir fiziksel tekerde olmak üzere kullanılmışsa, o zaman Linux'taki değiştokuş altsistemi aralarındaki yükü yönetimiyle ilgilenir, bu nedenle RAID bu olayda hiçbir rol oynamaz.

RAID TÜRLERİ

RAID0 (Soyma kipi)
Bu kipte, (stripping mode) bütün teker aygıtları, blokların bütün tekerlerden eşit olarak, daha yüksek verime ulaşmak için seçilerek alınacağı biçimde düzenlenmişlerdir. Bir dosya bloğunu bulma olasılığı bütün tekerlerde aynı olduğundan, aynı anda çalışmak için zorlayan ve böylece metatekerin başarımını tek bir tekerin neredeyse N katı yapan kuvvetler bulunur.
RAID1
Bu kipte (mode), erek, verinin en yüksek güvenliğine ulaşmaktır. Veri blokları bütün fiziksel tekerler içinde iki katına çıkmıştır (her fiziksel tekerde, `sanal' tekerin her bloğunun bir kopyası vardır). Bu olay tek bir tekerin okuma başarımının N katını sağlar; ama yazı işlemlerini alçaltır. Okuma işlemleri N bloğu aynı anda, her biri bir aygıttan olmak koşuluyla, okumak üzere düzenlenebilir. Benzer bir şekilde 1 blok yazılırken, her biri bir fiziksel aygıt için N defa kopyalanır. Bu olayda depolama sığası açısından hiçbir yararlanım (advantage) bulunmaz.
RAID4
(Not: RAID2 ve RAID3 türleri artık kullanımamaktadır).

 
Bu kipte sonuç erek RAID0 ve RAID1 tiplerinin yararlanımlarını dengelemektir. Veri iki yolun karışımından oluşturulur. 1'den N-1'e fiziksel olanlar soyma kipinde (RAID0) düzenlenir ve N'inci, 1 ve N-1 bloklarına uyan bireysel bitlerin paritesini depolar. Eger herhangi bir teker bozulursa, N'inci katı tekerdeki parite bilgisini kullanarak bunun üstesinden gelinilebilir. Okuma işlemleri sırasındaki verimlilik N-1; yazı işlemlerindeki ise 1/2'dir (çünkü şimdi bir veri parçasına yazmak parite tekerine yazmayı da kapsar). Bozulmuş bir katı tekeri yeniden depolamak için yalnızca bilgi yeniden okunmalı ve yeniden yazılmalıdır (bilgi parite tekerden okunur; ama yeni yüklenen katı tekere yazılır).
RAID5
Bu tür RAID4'e benzer, ancak artık parite tekerin bilgisi bütün katı tekerlere yayılmıştır (parite teker yoktur). Bu, parite teker üzerindeki iş yükünü azaltmaya yarar; oysa RAID4'te her yazı işleminde bunun girilmesi gerekir (artık bir izin parite bilgisinin saklandığı teker, her iz için değişmektedir).
... Aşırıyineleme eksikliğine rağmen en verimli olan RAID0 üzerinde odaklanacağız.
RAID1'e bağlı karışık RAID türleri ve başka çeşit RAID'ler de vardır. Fiziksel katı tekerlerdeki teker sıkıştırmayı kullanılır hale getirmek için girişimler de tartışmasız olmamasına rağmen vardır, çünkü sıkıştırmanın avantajının ne olacağı açık değildir. Neredeyse kesinlikle, daha fazla öneri yakın gelecekte gelişecektir. Şu anda RAID0 üzerinde duracağız çünkü kullanıcıyı teker hatalarından koruyan aşırıyineleme eksikliğine rağmen bu en verimlisidir. RAID birkaç tekerden (3 ya da 4) oluştuğu zaman aşırı yineleme fazladan maliyete neden olur (sığasının üçte veya dörtte birini kaybeder). RAID'deki aşırı yineleme verilerimizi teker hatalarından korur; ancak kazara silinen bilgilerimizi korumaz. Bu yüzden aşırıyinelenmiş RAID bizi kopyalamaylasaklama (backup) alma işleminden kurtarmaz. Öte yandan, eğer fazla teker kullanılıyorsa (5 ya da daha fazla), teker sığası daha az boşa harcanır ve aşırıyineleme aza mal olur. Bazı 16-bit SCSI kartlar 15 aygıta kadar izin verirler. Bu durumda RAID5 önemle salık verilecektir.

Eğer okuyucu özdeş tekerleri kullanamıyorsa, RAID sistemlerinin her zaman özdeş bilgi bloklarıyla çalıştığı hesaba katılmalıdır.Yavaş katı tekerlerin daha fazla çalışmaya zorlanması olasıdır; ama her durumda, RAID hâlâ daha iyi bir başarım verir. RAID sisteminin başarımındaki bir artış gayet gösterişlidir. Başarımın RAID'deki katı tekerlerin sayısıyla doğrusal olarak arttığını söylemek neredeyse doğrudur.

RAID0 Nasıl Kurulur

Şimdi RAID0'nun nasıl kurulacağını konuşacağız. Eğer okuyucu RAID'i 2.00.xx çekirdeği üzerindekinden farklı bir şekilde oluıturmak isterse başka bir yama (patch) kullanması gerekir.

RAID0 aşırıyinelemeye sahip değildir. Şunu unutmayalım ki teker sığasını boşa harcamamak için çok sayıda teker kullanılmasının önerildiği durumlarda aşırıyinelemeye sahip olunur. Sadece üç tekerimiz varken birini harcamak boş yere yapılmıştır. Öte yandan bu bütün olası bilgi kayıplarını kapsamaz; nadir rastlanan bir olay olan katı tekerin fiziksel yozlaşmasına (deterioration) bağlı olanları kapsar. Eger 10 tane katı teker kullanılıyor olsaydı, o zaman bir parite kontrolu kullanmak boş yere harcamak sayılmazdı. Bir RAID0'da tekerlerin herhangi birinde bir hataya sahip olmak, bütün fiziksel tekerlerde saklanan bilgiyi kaybetmek anlamına gelmektedir ve biz hemen uygun bir kopyalamaylasaklama öneririz.

İlk adım çekirdeğe uygun sürücülerin eklenmesidir. Linux 2.0.xx RAID için seçenekler şunlardır:

   Multiple devices driver support (CONFIG_BLK_DEV_MD) [Y/n/?] Y
      Linear (append) mode (CONFIG_MD_LINEAR) [Y/m/n/?] Y
      RAID-0 (striping) mode (CONFIG_MD_STRIPED) [Y/m/n/?] Y
Sistemi yeni çekirdek ile başlattıktan sonra /proc dosyasi; md0, md1, md2 ve md3 olarak yeni yaratılan 4 (bu ana değerdir) aygıttaki durumu içeren mdstat girişine sahip olur. Hiçbiri başlatılmadığı için hepsinin çalısmayan durumda görünmesi ve henüz kullanılabilir halde olmaması gerekir.
Yeni dört aygıt aşağıdaki 'mdutil'ler kullanılarak düzenlenmiştir;
        -mdadd
        -mdrun
        -mdstop
        -mdop
Bu sweet-smoke.ufr-info-p7.ibp.fr /pub/Linux adresinden yöreyeçekilebilir; ama bunlar çoğunlukla dağılımların parçalarıdır.

2.1.62 çekirdekler ve daha yüksekleri için RAID0, RAID4, RAID5 kullanımına izin veren 'RAIDtools' adında farklı bir paket bulunur.

Aşağıdaki örnekte iki katı tekeri özel olarak /dev/sdb1 ve /dev/sdc1, kullanan bir RAID0 metatekerini tanımlamayı gösteriyoruz.
 
meta-aygıtı RAID Kipi Disk Bölünümü 1 Disk Bölünümü 1 
/dev/md0 doğrusal /dev/sdb1 /dev/sdc1 
Başka bölünümler de eklenebilirdi.

Metateker biçimlendirildikten sonra hiçbir şekilde değiştirilmemelidir yoksa içindeki tüm bilgiler kaybedilir.
mdadd -a
mdrun -a

Bu anda, md0 başlatılmış olarak gözükmelidir.Onu biçimlendirmek için:

mke2fs /dev/md0
Ve mount etmek için
mkdir /mount/md0
mount /dev/md0 /mount/md0
Şu ana kadar her şey çalıştıysa, okuyucu şimdi başlatım yazımındaki (booting script) bu buyrukları içermeye ilerleyebilir; böylece bir dahaki sefere sistem RAID0 metatekerini yeniden başlattığında onu otomatik olarak mount edilmiş biçimde alır. Otomatik olarak RAID0 sistemini yükseltmek için ilk olarak /etc/fstab dosyasına bir giriş eklenmelidir, ayrıca mount etmeden önce calıştırılmış yazım dosyasından 'mdadd -a' ve 'mdrun -a' buyrukları çalıştırılır. Bir Debian dağılımında bu buyruklar için kök dosyasistemini oku/yaz kipinden yeniden mount etmeden önce, "mount -n -o remount,rw /" satırında iyi bir yer /etc/init.d/checkroot.sh yazım dosyasıdır.

Örneğin:

Bu şu anda kullandığım biçimlendirmedir. Bir 6.3 Gb IDE teker, 4.2 Gb SCSI ve 2Gb'lik bir diğerine sahibim.
HD 6.3Gb IDE
/ /bigTemp + /incoming  swap 2Gb(RAID) hda4 
HD 4.2Gb SCSI
C: D:  swap 2Gb(RAID) sda4 
HD 2Gb SCSI
swap 2Gb(RAID) sdb2 
#######</etc/fstab>################################################
# <file system> <mount point>  <type>  <options>     <dump>  <pass>
/dev/hda1       /               ext2    defaults       0       1
/dev/hda2       /mnt/hda2       ext2    defaults       0       2
/dev/md0        /mnt/md0        ext2    defaults       0       2
proc            /proc           proc    defaults       0       2
/dev/hda3        none           swap    sw,pri=10 
/dev/sdb1        none           swap    sw,pri=10 
/dev/sda3        none           swap    sw,pri=10
#########</etc/mdtab>####################################### 
# <meta-device> <RAID-mode> <DskPart1> <DskPart1> <DskPart1> 
/dev/md0         RAID0,8k    /dev/hda4  /dev/sda4 /dev/sdb2
Kök bölünümü 6Gb teker üzerinde hda1 olarak bulunmakta, büyük bir bölünüm de internetten indirilenler için kullanılmakta, CD resimleri deposu vs. Bu bölünüm çok yük kapsamıyor; çünkü çok fazla kullanılmıyor. 4 Gb teker RAID'in verimliliğini azaltan bölünümlere sahip değil; çünkü bunlar Linux da çok nadir kullanılan MSDOS bölünümlerdir. 2Gb teker neredeyse tamamiyle RAID sistemine ayrılmıştır. Her tekerde değiştirme boşluğu olarak küçük bir alan ayrılmıstır.

RAID'deki bütün tekerleri (bölünümleri) yaklaşık olarak aynı boyutta yapmaya calısmalıyız; çünkü büyük farklar RAID'in başarımını azaltacaktır. Küçük farklar önemli değildir. Kullanılabilecek bütün boşlukları kullanarak tekerlerdeki karıştırılabilen bütün veriler birleştirilebilir ve geri kalan veriler özgür kalır.

Birçok IDE tekerini tek bir RAID'de mount etmek çok yararlı degildir; ama IDE'yi birçok SCSI'da mount etmek iyi sonuç verir. IDE tekerleri eş zamanlı girişlere izin vermez ama SCSI tekerleri verir.

Daha fazla bilgi için:


Yazının dergiye gönderilen aslı İspanyolca'dır
Javier Molero tarafından yeniden gözden geçirilmiştir.
Miguel A Sepulveda ve Jose Quesada tarafından İngilizce'ye çevirilmiştir.
Bu görsel sanalyörenin bakımını Miguel Angel Sepulveda yapmaktadır.

© Antonio Castro 1999
LinuxFocus 1999