Page 1 of 1

[HOW-TO] - Programowy RAID 0

Posted: Sat Jul 24, 2004 8:56 pm
by arsen
PROGRAMOWY RAID 0

Wstęp

Jeśli posiadamy 2 dyski o zbliżonych parametrach, to możemy się pokusić o stworzenie RAID-a 0 (identyczne parametry nie są konieczne, po prostu RAID sam spowolni szybki dysk, by dopasował się do dysku wolniejszego).
Przez takie rozwiązanie uzyskujemy zwiększenie przepustowości danych a wielkości obu dysków są sumowane.
Jak wiadomo jest to łakomy kąsek, więc czemu nie zyskac podwojenia transferów dysków :).
Są też jednak zagrożenia, jeżeli jeden z dysków zostanie uszkodzony to tracimy dane z obu.
Po tym krótkim wstępie zapraszam do właściwego HOWTO:


1.Odpalamy sobie livecd i przechodzimy do partycjonowania dysków.
(programowy RAID 0 polega na lączeniu partycji obu dysków w jedną macierz).
Gentoowski livecd zawiera pakiet o nazwie raidtools, który jest niezbędny do utworzenia macierzy RAID.
Jeśli korzystacie z innych livecd, to należy sie upewnić że owe livecd ten pakiet zawiera.
Akurat posiadam 2 identyczne dyski SATA i dlatego podzieliłem je też identycznie (co nie jest konieczne).
Do partycjonowania polecam cfdisk, oto moje partycje na dysku sda:

Code: Select all

   Name           Flags         Part Type    FS Type              [Label]            Size (MB)
 --------------------------------------------------------------------------------------------------
     sda1                          Primary     Linux XFS                                   98,71    
     sda5                          Logical     Linux raid autodetect                    10001,95
     sda6                          Logical     Linux swap                                  98,71
     sda7                          Logical     Linux raid autodetect                    10001,95
     sda8                          Logical     Linux raid autodetect                    10001,95
     sda9                          Logical     Linux raid autodetect                    39999,54
     sda3           Boot           Primary     W95 FAT32 (LBA)                          11753,93
a to partycje na sdb:

Code: Select all


     Name           Flags         Part Type    FS Type              [Label]            Size (MB)
 --------------------------------------------------------------------------------------------------
     sdb1           Boot           Primary     Linux                                       98,71    
     sdb5                          Logical     Linux raid autodetect                    10001,95
     sdb6                          Logical     Linux swap                                  98,71
     sdb7                          Logical     Linux raid autodetect                    10001,95
     sdb8                          Logical     Linux raid autodetect                    10001,95
     sdb9                          Logical     Linux raid autodetect                    39999,54
     sdb10                         Logical     W95 FAT32                                11753,93
Jak widać partycje swap, windowsowe i sda1/sdb1 (sda1 przeznaczona na /boot, gdyż mialem kłopoty z grubem który RAIDA w ogóle nie widział i przez to nie chciał się zainstalować) nie będą pracować w RAID, będą to zwykłe partycje.
Ważne jest by partycje, które będą łączone w RAID 0 miały oznaczony za pomocą cfdisk-a typ FD Linux raid autodetect.
W przeciwnym wypadku gotowy system po zbotowaniu nie zamontuje głównego systemu plików "/".
2.Nasŧępnie musimy załadować moduł raida

Code: Select all

modprobe md
3.Po czym przechodzimy do ważnej rzeczy, tworzymy plik raidtab na podstawie którego RAID połączy sobie partycje w macierze.

Code: Select all


touch /etc/raidtab

4.moja kofiguracja dopasowana do nazw urządzeń w moim systemie

Code: Select all

# cat /etc/raidtab
# /
raiddev                 /dev/md0
raid-level              0
nr-raid-disks           2
chunk-size              32
persistent-superblock   1
device                  /dev/sda5
raid-disk               0
device                  /dev/sdb5
raid-disk               1

# /home 
raiddev                 /dev/md1
raid-level              0
nr-raid-disks           2
chunk-size              32
persistent-superblock   1
device                  /dev/sda7
raid-disk               0
device                  /dev/sdb7
raid-disk               1

# /portage
raiddev                 /dev/md2
raid-level              0
nr-raid-disks           2
chunk-size              32
persistent-superblock   1
device                  /dev/sda8
raid-disk               0
device                  /dev/sdb8
raid-disk               1

# /ftp
raiddev                 /dev/md3
raid-level              0
nr-raid-disks           2
chunk-size              32
persistent-superblock   1
device                  /dev/sda9
raid-disk               0
device                  /dev/sdb9
raid-disk               1
teraz pokrótce wyjaśnię o co chodzi...
opcja

Code: Select all

raiddev                 /dev/md*
oznacza nazwę urządzenia w systemie po połączeniu 2 partycji na osobnych dyskach.

Code: Select all

persistent-superblock   1
device                  /dev/sda*
raid-disk               0
device                  /dev/sdb*
oznacza partycje które bedą łączone w macierz. Prawda że proste :)

5. po poprawnej edycji /etc/raidtab przechodzimy do stworzenia rzeczywistego RAID-a 0.

Code: Select all

mkraid /dev/md0
mkraid /dev/md1 
....itd w zależności ile zrobiliśmy urządzeń w /etc/raidtab
6.Jeżeli już mamy nowe urządzenia tworzymy na nich system-y plików (np. mój ulubiony xfs :) )

Code: Select all

mkfs.xfs /dev/md* 
gdzie "*" to numer naszego urządzenia, oczywiście możemy utworzyć dowolny system plików w zależności od upodobań

7.Gdy już mamy urządzenia możemy spokojnie instalować system jak zwykle czyli zacząć od podmontowania dysków, w tym przypadku macierzy RAID

Code: Select all

mont /dev/md* /mnt/gentoo
w razie własnych potrzeb można podmontować inne macierze. Po rozpakowaniu stage'a, należy nie zapomnieć o przekopiowaniu raidtaba

Code: Select all

cp /etc/raidtab /mnt/gentoo/etc/raidtab
8. Gdy nastąpi etap konfiguracji kernela musimy w nim parę rzeczy zaznaczyć.
Opisze to na przykladzie kernela 2.6.*

Code: Select all

Device Drivers  --->
Multi-device support (RAID and LVM)  --->pport (RAID and LVM)  --->

gdzie zaznaczamy koniecznie na stałe:

[*] Multiple devices driver support (RAID and LVM)                        
                     <*>   RAID support                                                        
                     < >     Linear (append) mode                                              
                     <*>     RAID-0 (striping) mode                                            
                     < >     RAID-1 (mirroring) mode                                           
                     < >     RAID-4/RAID-5 mode                                                
                     < >     RAID-6 mode (EXPERIMENTAL)                                        
                     < >     Multipath I/O support                                             
                     < >   Device mapper support
Po tym zabiegu możemy być spokojni, że RAID 0 będzie miał właściwy suport od strony kernela, nie należy zapomnieć o pakiecie raidtools, a zatem...

Code: Select all

emerge sys-fs/raidtools
No to teraz przyszedł czas na /etc/fstab, który też sie bedzie rożnił od zwykłego nazwami urządzeń oczywiście zgodnymi z macierzami RAID.
o to mój /etc/fstab

Code: Select all

cat /etc/fstab

/dev/md0                /               xfs             noatime                 0 1
/dev/sda1               /boot           xfs             noatime                 0 2
/dev/sda6               none            swap            sw                      0 2
/dev/sdb6               none            swap            sw                      0 2
/dev/md1                /home           xfs             noatime                 0 2
/dev/md2                /portage        xfs             noatime                 0 2
/dev/md3                /ftp            xfs             noatime                 0 2
9.Następnie tak jak zwykle konfigurujemy grub-a (lub lilo), mój grub.conf

Code: Select all

cat /boot/grub/grub.conf

default 0
timeout 10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title=Gentoo Linux (RAID)
root (hd0,0)
kernel /boot/bzImage root=/dev/md0  vga=791
Po tych zabiegach można się cieszyć elegancką wydajnością :)
dla przykladu:

Code: Select all

hdparm -t /dev/md0
/dev/md0:
Timing buffered disk reads:  242 MB in  3.02 seconds =  80.14 MB/sec
dla nie zamontowanego md* wynosi to ponad 105 MB/sec, nie od dzisiaj wiadomo że hdparm słabo sie nadaje jako benchmark, czasem ma dziwne przekłamania, jak porobie testy za pomocą bonnie++ to się podziele wrażeniami.
Na zakończenie jeszcze jedna ważna sprawa, jeżeli sprawdzamy system plikow za pomocą fsck czy innych narzędzi zawsze sie odwołujmy do całej macierzy jeżeli odwołamy sie do pojedynczej partycji na dysku to na pewno stracimy dane z całej macierzy RAID.
No i było by to na tyle, dziękuje za uwage.

Posted: Fri Oct 01, 2004 4:39 pm
by adam1957
Cześć!
Mam pytanie do Autora:
Czy można przygotować podobny programowy RAID dla innej dystrybucji linuksa? Jeżeli tak, to w czym różnice?
Adam

Posted: Fri Oct 01, 2004 5:08 pm
by arsen
w tym że zależy to od instalatora. Gentoo go nie ma i jest lepiej :)

Posted: Fri Oct 01, 2004 8:50 pm
by adam1957
Dzięki za info !
Chyba póki co nie spróbuję.
Adam

Sprzetowy RAID

Posted: Wed Oct 06, 2004 9:38 am
by Bonk_pb
Wiecie moze jak wyglada sprawa sprzetowego RAID 0 i bootowania z lilo lub gruba?

Posted: Wed Oct 06, 2004 10:33 am
by zytek
Na serwerze mam sprzętowy m.in. RAID 0. Na początku sam się zastanawiałem jak to będzie "cykać" ale sprawa okazała się banalna.

Mając dwa dyski SCSI połączone w RAID 0 system widzi go po prostu jako jeden dysk - /dev/sda (z jedną partycją /dev/sda1 i taka też jest podawana w lilo jako root, mbr w /dev/sda)
Następne trzy dyski w RAID5 są widoczne jako /dev/sdb itd.

Posted: Wed Oct 06, 2004 7:21 pm
by Bonk_pb
Super dzieki, co prawda ja nie bede uzywac niestety hdd scsi, ale znajac zycie to nie ma wplywu... dzieki kupuje drugi hdd :D

Posted: Thu Oct 07, 2004 10:01 am
by yemu
czy sa jakies wymagania odnosnie wielkosci dyskow albo partycji laczonych w raid? mam dwa dyski, jeden wiekszy (160) i drugi mniejszy (80) i chcialbym sobie zarzucic raida. czy wystarczy, ze zrobie sobie partycje o mniej wiecej takiej samej wielkosci na obu dyskach i polacze je w raida? dodam ze jeden dysk jest szybki (nowe hitachi) drugi wolniejszy (seagate 5400rpm), jaki to bedzie mialo wplyw na wydajnosc raida?
pozdrawiam
y

Posted: Thu Oct 07, 2004 11:14 am
by zytek
Darowałbym sobie raida 0 na takiej konfiguracji, bo żeby to połączyć w "jeden szybki dysk" to stracisz 80Gb z hitachi oraz całość będzie wolna, ze względu na starego seagate.

Jeśli Ci nie zależy na tych 80Gb to możesz od biedy sprawdzić wyniki hdparm -tT dla seagate, pomnożyc razy dwa i sprawdzić, czy jest to większe od wyników hdparm -tT dla hitachi ;DD

Posted: Thu Oct 07, 2004 3:32 pm
by yemu
na 80gb jednak troche mi zalezy ;-) wiec raczej opchne tego seagate'a i kupie drugiego hitachi :-)
<spam>
ktos chce moze kupic?
</spam>

Posted: Thu Oct 07, 2004 3:33 pm
by nelchael
A ile za niego chcesz?

Posted: Fri Oct 08, 2004 7:01 pm
by Bonk_pb
Sorka ze sie podczepiam pod temat...

Jak mam sprzetowy RAID to musze miec cos w jajku wkampilowane specjalinie czy linux wogole nie wie ze te dyski pracuja w RAID bo wszystko jest zalatwiane sprzetowo?

Posted: Fri Oct 08, 2004 8:40 pm
by arsen
Musisz mieć wkompilowaną obsługe kontrolera swojego RAIDA, ale jeśli masz jedną z płyt głownych z "pseudo" kontrolerem raida, to możesz mieć problemy.

Posted: Fri Oct 08, 2004 10:21 pm
by Bonk_pb
PROMISE PDC20265R i z tego co widze to jest support :)

Update: literowka byla :)

Posted: Mon Nov 08, 2004 6:02 am
by adam1957
Cześć !
Postanowiłem skorzystać z pomysłu Arsena i zainstalować Gentoo na w/w soft-RAID. Starałem się postępować zgodnie ze wskazówkami:
1. przygotowałem dwie identyczne partycje /dev/hda2 i /dev/hdc1 na /dev/md0
2. /dev/hda1 to malutka na /boot
3. proces tworzenia, montowania, instalacji i konfiguracji systemu oraz kernela i lilo wydawał się prawidłowy
4. LILO ładowane z /dev/hda1, którą uczyniłem aktywną.
Niestety coś musiałem skopsać, bo LILO się nie ładuje.
I tu moje pytanie:
Jak się dostać do tak przygotowanego środowiska,
aby coś naprawić, np LILO ?
Zwykły proces chroot-owania nie działa.
Co robić?
Adam

Posted: Mon Nov 08, 2004 9:10 am
by Woocash
adam1957 wrote: Zwykły proces chroot-owania nie działa.
Co robić?
Adam
Jak to nie działa ? 8O

Wywala jakieś błędy, jeżeli tak to napisz je tu

btw. co do ładowanie lilo do mbr'a wystarczy wpisać w konsoli

Code: Select all

lilo
;)

Posted: Mon Nov 08, 2004 11:50 am
by adam1957
To muszę szerzej!!
Mam trzy dyski: dwa IDE (hda i hdc) i trzeci dysk SATA. Na IDE chciałem założyć soft-RAID, na trzecim mam XP. W BIOS-ie mam start z SATA. Po wykonaniu czynnoœci przewidzianych przez Arsena ustawiłem /dev/hda1 jako /boot i LILO zaistalowałem na tej partycji. Ustawiłem jš jako aktywnš i REBOOT... i nic ! Nie ma dysku i.t.p. Po przestawienie aktywnej na SATA XP elegancko startuje. Podejrzewam, że coœ schrzaniłem przy lilo. Ale aby naprawić trzeba się do instalacji chroot-ować. Jak to zrobić jeżeli instalka była na /dev/md0, której nie ma, bez startu odpowiedniego kernela, modułu md i.t.d. Jak wystartuję z dowolnej "live" np: Gentoo, lub Rescue to widzi dwa oddzielne dyski, a nie macierz RAID-0. A musiałbym się chroot-ować do macierzy(/dev/md0). Czy problem jest rozwišzywalny, czy też jedynie pozostało kompletne powtórzenie całego procesu tworzenia soft-RAIDA + instalka GENTOO + konfiguracja kernela + LILO(, lub GRUB).
Liczę na pomoc!
Adam

Posted: Mon Nov 08, 2004 5:19 pm
by Woocash
Nie, musisz tylko poszukać livecd który obsługuje raida. @arsen^ chyba tworzył takie livecd, zobacz na jego stronke

Posted: Fri Nov 18, 2005 12:46 pm
by coyote01
adam1957 wrote:Ale aby naprawić trzeba się do instalacji chroot-ować. Jak to zrobić jeżeli instalka była na /dev/md0, której nie ma, bez startu odpowiedniego kernela, modułu md i.t.d. Jak wystartuję z dowolnej "live" np: Gentoo, lub Rescue to widzi dwa oddzielne dyski, a nie macierz RAID-0. A musiałbym się chroot-ować do macierzy(/dev/md0). Czy problem jest rozwišzywalny, czy też jedynie pozostało kompletne powtórzenie całego procesu tworzenia soft-RAIDA + instalka GENTOO + konfiguracja kernela + LILO(, lub GRUB).
aby sie dostac z LiveCD do raida musisz zrobic tak:
- startujesz z LiveCD
- po zaladowniu wpisujesz:
# modprobe md
- pozniej albo kopiujesz plik raidtab (jesli masz na jakiejs partycji / nosniku do ktorego masz dostep. ja kopie tego plik trzymam na partycji boot) do /etc lub jesli go nie masz to wklepujesz parametry RAIDa recznie do /etc/raidtab
- startujesz raid:
# raidstart /dev/mdX
(jesli wystapi blad zwiazany z brakiem urzadzen w /dev ["cannot determine md version: no MD device file in /dev"] to musisz je utworzyc: # cd /dev; MAKEDEV md)
- jesli raid wystartowal to jzu mozesz zamontowac partycje z raidem i chrootowac sie do systemu