# [HOW-TO] - Programowy RAID 0

## 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  :Smile: .

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:

```

   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:

```

     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

```

modprobe md

```

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

```

touch /etc/raidtab

```

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

```

# 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

```

raiddev                 /dev/md*

```

oznacza nazwę urządzenia w systemie po połączeniu 2 partycji na osobnych dyskach.

```

persistent-superblock   1

device                  /dev/sda*

raid-disk               0

device                  /dev/sdb*

```

oznacza partycje które bedą łączone w macierz. Prawda że proste  :Smile: 

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

```

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  :Smile:  )

```

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

```

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

```

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.*

```

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...

```

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

```

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

```

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ą  :Smile: 

dla przykladu:

```

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.Last edited by arsen on Fri Oct 01, 2004 9:38 pm; edited 2 times in total

----------

## 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

----------

## arsen

w tym że zależy to od instalatora. Gentoo go nie ma i jest lepiej  :Smile: 

----------

## adam1957

Dzięki za info !

Chyba póki co nie spróbuję.

Adam

----------

## Bonk_pb

Wiecie moze jak wyglada sprawa sprzetowego RAID 0 i bootowania z lilo lub gruba?

----------

## 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.

----------

## Bonk_pb

Super dzieki, co prawda ja nie bede uzywac niestety hdd scsi, ale znajac zycie to nie ma wplywu... dzieki kupuje drugi hdd  :Very Happy: 

----------

## 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

----------

## 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

----------

## yemu

na 80gb jednak troche mi zalezy  :Wink:  wiec raczej opchne tego seagate'a i kupie drugiego hitachi  :Smile: 

<spam>

ktos chce moze kupic?

</spam>

----------

## nelchael

A ile za niego chcesz?

----------

## 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?

----------

## 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.

----------

## Bonk_pb

PROMISE PDC20265R i z tego co widze to jest support  :Smile: 

Update: literowka byla  :Smile: 

----------

## 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

----------

## Woocash

 *adam1957 wrote:*   

> 
> 
> Zwykły proces chroot-owania nie działa.
> 
> Co robić?
> ...

 

Jak to nie działa ?   :Shocked: 

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

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

```
lilo
```

  :Wink: 

----------

## 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

----------

## Woocash

Nie, musisz tylko poszukać livecd który obsługuje raida. @arsen^ chyba tworzył takie livecd, zobacz na jego stronke

----------

## 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

----------

