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