[Nasıl] Linux Yazılımsal RAID

Başlatan Ertan ERBEK, 21 Haziran 2009 - 17:28:11

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Ertan ERBEK

Linux Raid nasıl ?

Disk kapasitelerinin sürekli olarak artması, buna karşın hızlarının bu artışa bir türlü ayak uyduramaması nedeni ile RAID veri depolamada zamanla vaz geçilmez bir hal almış durumda. Linux sistemlerinde yazılımsal raid işlemleri oldukca kolay ve hızlı yapılandırılabiliyor.

Örnek olarak altta sistemin yüklü olduğu 200GB ve (10*2)GB kapasitesine sahip bir sistemin fdisk -l çıktısı bulunmakta.

Burda istenilen bazı yüksek disk hızına ihtiyaç duyan uygulamalar için bir süper blok dizini oluşturmak. Buna göre kullanılacak iki disk /dev/sda ve /dev/sdb diskleri.


Örnek Disk yapısı

/dev
-------->/dev/hda
------> hda1 /

-------->/dev/md0 /20GB

------> /dev/sda
------> sda1
------> /dev/sdb
------> sdb1


 
---------------------------------------------------------------------------------
DebianMasterCopy:/# fdisk -l

Disk /dev/hda: 214.7 GB, 214748364800 bayt
255 heads, 63 sectors/track, 26108 cylinders
Units = silindir of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0003c12d

   Aygıt Açılış    Başlangıç     Bitiş  BlokSayısı Kml Sistem
/dev/hda1               1       26108   209712478+  83  Linux

Disk /dev/sda: 10.7 GB, 10737418240 bayt
255 heads, 63 sectors/track, 1305 cylinders
Units = silindir of 16065 * 512 = 8225280 bytes
Disk identifier: 0xf7eca786

   Aygıt Açılış    Başlangıç     Bitiş  BlokSayısı Kml Sistem

Disk /dev/sdb: 10.7 GB, 10737418240 bayt
255 heads, 63 sectors/track, 1305 cylinders
Units = silindir of 16065 * 512 = 8225280 bytes
Disk identifier: 0x87b25fce

   Aygıt Açılış    Başlangıç     Bitiş  BlokSayısı Kml Sistem
---------------------------------------------------------------------------------


fdisk çıktısından görüldüğü gibi disklerimize herhangi bir bölüm bilgisi girilmiş durumda değil, biz bir süper blok dizi oluşturmak istiyorsak öncelikli olarak disklerimize bölüm bilgilerini girmeliyiz bunun için yine fdisk komutunu kullanacağız.


DebianMasterCopy:/# fdisk /dev/sda

Bu disk için silindir sayısı 1305 olarak belirlendi.
Yanlış bir şey yok fakat 1024 silindirden büyük değerlerle
bazı yazılımlar sorun çıkabilir:
1) önyükleme sırasında çalışan yazılımlar (örn. LILO'nun eski sürümleri)
2) diğer işletim sistemlerinin önyükleme ve disk bölümleme yazılımları
   (örn. DOS FDISK, OS/2 FDISK)

Komut (yardım için m): m
Komut  yaptığı iş
   a   açılış flamasını indirir/kaldırır
   b   bsd disk etiketini düzenler
   c   dos uyumluluk flamasını indirir/kaldırır
   d   bir disk bölümünü siler
   l   bilinen disk bölümü türlerini listeler
   m   bu menüyü gösterir
   n   yeni bir disk bölümü ekler
   o   yeni bir DOS disk bölümü oluşturur
   p   disk bölümleme tablosunu gösterir
   q   değişiklikleri kaydetmeden çıkar
   s   yeni bir Sun disk etiketi oluşturur
   t   disk bölümünün sistem kimliğini değiştirir
   u   gösterme/girdi birimini değiştirir
   v   disk bölümleme tablosunu doğrular
   w   tabloyu diskteki yerine yazar ve çıkar
   x   fazladan işlevsellik (uzmanlar için)

Komut (yardım için m): n
Komut yaptığı iş
   e   ek
   p   birincil disk bölümü (1-4)
p
Disk bölümü numarası (1-4): 1
İlk silindir (1-1305, öntanımlı 1):
Öntanımlı değer 1 kullanılıyor
Son silindir, +size, +sizeM veya +sizeK (1-1305, öntanımlı 1305):
Öntanımlı değer 1305 kullanılıyor

Komut (yardım için m): t
Seçilen disk bölümü 1
Onaltılık kod (kod listesi için L tuşlayın):fd
1 disk bölümünün sistem türü fd (Linux raid otosaptama) olarak değiştirildi

Komut (yardım için m): w


DebianMasterCopy:/#fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bayt
255 heads, 63 sectors/track, 1305 cylinders
Units = silindir of 16065 * 512 = 8225280 bytes
Disk identifier: 0xf7eca786

   Aygıt Açılış    Başlangıç     Bitiş  BlokSayısı Kml Sistem
/dev/sda1               1        1305    10482381   fd  Linux raid otosaptama


artık "Linux raid otosaptama" olarak oluşturulmuş bir dik bölümümüz var, RAID sistemine eklenecek tüm sistemlere aynı işlemi tekrarlıyoruz. Bu komutlardan " t   disk bölümünün sistem kimliğini değiştirir " ile ilgili daha fazla bilgi almak için fdsik menüsünde "l" komutunu uygulayın. Daha fazla bilgi için "man fdisk"

Tüm disklerimizi aynı şekilde hazırladığımıza göre artık RAID süper blok aygıtımızı oluşturabiliriz.


DebianMasterCopy:/#aptitude install mdadm # RAID setlerini oluşturmak tamir etmek izlemek için gerekli program

DebianMasterCopy:/# mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2  /dev/sda1 /dev/sdb1
mdadm: chunk size defaults to 64K
mdadm: /dev/sda1 appears to contain an ext2fs file system
    size=20964608K  mtime=Sun Jun 21 16:51:23 2009
Continue creating array? y
mdadm: array /dev/md0 started.



Yukarıda verilen komut ile /dev/md0 olarak RAID 0 ( --level=0 ) yapısında  iki diskten oluşan ve bunlar /dev/sda1 /dev/sdb1 disk bölümleri olan 20Gb kapasiteli raid dizinimiz oluştu.


DebianMasterCopy:/# mkfs.ext3 /dev/md0
mke2fs 1.41.3 (12-Oct-2008)
Dosya sistemi ismi =
İşl. Sist. türü: Linux
Blok boyu = 4096 (günlük kaydı = 2)
Adımlama boyu = 4096 (günlük kaydı = 2)
1310720 düğüm, 5241152 blok
262057 blok (%5.00) süper kullanıcı için ayrıldı
İlk veri bloğu = 0
Azami dosyasistemi bloğu sayısı = 0
160 blok grubu
Grup başına 32768 blok ve 32768 sekme
grup başına 8192 düğüm
Süperblokların bulunduğu bloklar:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Düğüm tabloları yazılıyor: bitti
Creating journal (32768 blocks): tamam
Süperblokların ve dosya sisteminin hesap bilgileri yazılıyor: bitti

Bu dosya sistemi her 36 bağlamada bir ya da 180 günde bir, hangisi önce
gerçekleşirse, otomatik olarak denetlenecektir. Bu değerleri değiştirmek
için tune2fs'yi -c veya -i seçeneği ile çalıştırınız.


Diskimizi ext3 olarak biçimledik. Yapmamız gereken artık bunu bir dizine bağlamak, açılışta bağlanması için /etc/fstab kullanılabilir örnek fstab satırı


dev/md0        /20GB          ext3    defaults        0       2


Ben bu cihazı / ana dizininde /20GB adlı alt dizine bağladım.

Daha ayrıntılı bilgi için man mdadm.

--------------------------------------------------------------------------------------

Oluşturulmuş olan örnek süper block dizinin kaldırılması için


DebianMasterCopy:/#umount /dev/md0
DebianMasterCopy:/#mdadm -S /dev/md0
DebianMasterCopy:/#mdadm --zero-superblock /dev/sda1 /dev/sdb1
DebianMasterCopy:/#rm /dev/md0


--------------------------------------------------------------------------------------
Konuyla ilgili ayrıntılı bilgi için

man fdisk
man mkfs
man mkfs.ext3
man mdadm

www.google.com " linux soft raid "  raid aray set "
--------------------------------------------------------------------------------------

Örnekte verilen komutlar ve sonuçları tarafımdan uygulanmış ve sürekli kullanılmaktadır. Örnekte verilen Süper bulok oluşumu RAID 0 dır ve hız için oluşturulmuştur kesinlikle yedekleme yapmaz oluşacak fiziksel hasarlarda tüm veriler kaybolacaktır.
Elbet bir gün bende Linux cuyum diyeceğim.

Başkalarının bilmediği bilgi, bilgi değildir. Bilgini paylaşmak için SUDO ya katkılarını bekliyoruz.

heartsmagic

Bu güzel anlatım için teşekkürler @Ertan ERBEK. Başlığı sabitleyelim.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

mylmazer

#2
http://www.sandisk.com/products/usb/drives/cruzer-blade/
Bağlantıda yer alan 4 adet 16Gb'lık sandisk ile yukarıda anlatılan yöntemi denedim. Diskleri ext4 olarak formatladım. Usb disklerin yazma hızı net olmamakla birlikte 5-7mb arası olduğunu düşünüyorum.

1,4 GB boyutunda datayı hem bu oluşturduğum diske hem de normal bir diske yazma sürelerini tuttum.

yazma süresi
raid usb   20:22:24 - 20:23:51 toplam süre 87 saniye
hard disk 20:23:51 - 20:24:25 toplam süre 34 saniye

okuyarak başka bir diske yazma süresi
raid usb   20:27:35 - 20:28:08 toplam süre 33 saniye
hard disk 20:28:08 - 20:28:39 toplam süre 31 saniye

Yazma süresi usb diskler için baya yavaş çıktı aslında yakın bekliyordum. Her dosyayı yazıp diğerine geçerken bekleme yapıyor, yaklaşık 10 saniye arası. Hemen diğer dosyayı yazmaya başlayamıyor

Daha iyi bir süreler elde etmem için yorumlarınız var mıdır?
Neden dosyalar arası bekleme yapıyor olabilir? Sürekli yazamıyor.





Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 18 Şubat 2013 - 01:12:37

Bu bilgileri de ekleyeyim

1.6gb için dosya sistemlerinde yazma hızları.  jfs ile ext4 yazma konusunda biraz hızlı. Tabi birçok farklı test yapmak mümkün.

ext2
Pzt Şub 18 00:40:35 EET 2013
Pzt Şub 18 00:41:55 EET 2013

ext3
Pzt Şub 18 00:58:02 EET 2013
Pzt Şub 18 00:59:22 EET 2013

ext4
Pzt Şub 18 01:01:30 EET 2013
Pzt Şub 18 01:02:39 EET 2013

jfs
Pzt Şub 18 01:07:04 EET 2013
Pzt Şub 18 01:08:10 EET 2013

okuyup başka bir diske yazma

jfs
Pzt Şub 18 01:24:46 EET 2013
Pzt Şub 18 01:25:08 EET 2013

jfs okumada hızlı görünüyor. ext4 ile 1.4gb datayı 33 saniyede okuyup başka bir diske yazabilmişti.

Uruloki

Peki var olan raid i nasıl kaldırabiliriz(raid 1)?

cool23

Alıntı YapPeki var olan raid i nasıl kaldırabiliriz(raid 1)?


Alıntı YapOluşturulmuş olan örnek süper block dizinin kaldırılması için

Kod: [Seç]
DebianMasterCopy:/#umount /dev/md0
DebianMasterCopy:/#mdadm -S /dev/md0
DebianMasterCopy:/#mdadm --zero-superblock /dev/sda1 /dev/sdb1
DebianMasterCopy:/#rm /dev/md0
İnsanlık için Linux...