Tarkvaralise RAID massiivi kasutamine Linuxiga

Allikas: Kuutõrvaja
Redaktsioon seisuga 24. aprill 2010, kell 20:02 kasutajalt Imre (arutelu | kaastöö)

Sissejuhatus

Üldiselt tähistatakse järgnevusega RAID (Redundant Arrays of Inexpensive Disks) mitmetest iseseisvatest füüsilistest plokkseadmetest (praktiliselt kas kõvaketastest või kõvaketta partitsioonidest) moodustatud loogilist plokkseadet. RAID lahendusel on üksiku füüsilise seadme kasutamise ees sellised eelised

  • saab moodustada kasutada olevatest üksikutest füüsilistest kõvaketastest suurema mahuga loogilise plokkseadme
  • sõltuvalt RAID skeemi valikust saab korraldada, kas suuremat kiirust ja/või paremat redundantsust võrreldes üksiku kõvakettaga

Kui loogilise seadme moodustamiseks kasutatakse nt arvuti PCI-E siinile ühendatud spetsiaalselt riistvaralist RAID kontrollerit, mille külge omakorda on ühendatud kõvakettad, siis on tegu riistvaralise RAID lahendusega. Ostub aga, et kuigi kõvakettad ühendada nt otse SATA kontrolleri külge, saab siiski korraldada nende RAID lülituse, sel juhul tegeleb RAID lülituse pidamiseks vajalike tegevustega operatsioonisüsteemi tuum. Sellisel moel korraldatud RAID lülitust nimetatakse tarkvaraliseks RAID'iks ning tal on riistvaralise ees järgmised eelised

  • RAID skeemi kuuluvaid kettaid saab hõlpsasti liigutada arvutite vahel muretsemata, kas arvutites on sama tootja kontrolleri sama mudel
  • RAID skeemi tööks kasutada olevat arvutusjõudlust saab muuta arvuti protsessori ja mälu skaleerimise teel

Kuigi tihtipeale kõneldakse ja kasutatakse RAID ja LVM (Logical Volume Management) tehnikat koos ja teatud lahendusi saab moodustada praktiliselt mõlemiga, on sisuliselt tegu kahe erineva küsimusega:

  • RAID tegeleb peaasjalikult füüsilistest plokk-seadmetest loogiliste plokk-seadmete moodustamisega ja selle tulemusena moodustunud süsteemi haldamisega, nt asendab automaatselt riknenud kõvaketta hot-spare'ga.
  • LVM tegeleb peaasjalikult plokk-seadmele köidete (ingl. k. volume) (millele tavaliselt moodustatakse, kas failisüsteem või swap) moodustamise ja haldamisega, nt võimaldab köitei suurust muuta ning teha snapshot'te.

Seega loogilises mõttes asub RAID LVM'ist kiht allpool, materjali esituse selguse mõttes esitatakse nad Kuutõrvajas erinevates punktides. Käesolev pala kõneleb tarkvaralise RAIDi kasutmisest Linuxiga, aga ka nt Solarisega ning *BSD operatsioonisüsteemidega on tarkvaralise RAIDi kasutamine populaarne.

RAID skeemid

RAID skeemiks nimetatakse seda, kuidas komponendid (nt füüsilised kõvakettad, üldisemalt plokk-seadmed) on kokku ühendatud, kõige levinumad on sellised skeemid

  • RAID1 (peegel, ingl. k. mirror) - skeemis saab osaleda n > 1 komponenti, kõigile kirjutatakse samad andmed. Maksimiseeritud on redundantsus, kirjutamine on võrreldav üksikule kõvakettale kirjutamisega, lugemine on n korda kiirem. Skeem on veel kasutatav kui on riknenud kõik peale ühe komponendi. Tavaliselt ühendatakse peeglisse kaks komponenti.
  • RAID0 (vööditud, ingl. k. stripe) - skeemis saab osaleda n > 1 komponenti, igale ühele kirjutatakse mingi osa andmetest. Maksimiseeritud on nii lugemise kui kirjutamise kiirus (4 x n), redundantsus on halvem kui üksikult kõvakettal. Skeem ei ole enam kasutatav kui peaks riknema kasvõi üks komponent.
  • RAID5 - skeemis saab osaleda n > 2 komponenti.
  • RAID10 - peegleid on kokku strip'etud, n > 3
  • RAID01 - stripe'd on ühendatud peeglisse, n > 3

Ettevalmistused

Tarkvaralise RAID'i kasutamiseks on mõttekas omada arvutis vähemalt kahte füüsilist kõvaketast, mis võiks olla sarnaste omadustega, kõige toredam kui nad oleks mahu ja nö tehnoloogilise põlvkonna mõttes sarnased, aga mitte sama tootaja omad. Sel põhjusel, et kui on muretsetud sama seeria kettad, siis on tõenäosus suhteliselt suur, et neil esinevad samad probleemid ja redundantsus ei ole nii hästi tagatud kui kahe erineva tootja puhul see olla võiks.

Tänapäevased Linuxi distributsioonid sisaldavad vaikimisi tarkvaralise RAID kasutamise jaoks sobivat tuuma ning haldusutiliiti mdadm, http://cgi.cse.unsw.edu.au/~neilb/SoftRaid, mis on reeglina pakendatud kujul kättesaadav, näiteks Debiani puhul tuleb öelda

# apt-get install mdadm

Põhiliselt on tegu ühe programmiga mdadm ning ühe seadistusfailiga /etc/mdadm/mdadm.conf, mille olemasolu ei ole tingimata vajalik. Arvutis, kus töötab RAID lahendus ei tööta otseselt sellega seotud deemonit kuigi sõltuvalt kasutusel olevatest skeemidest esinevad vastavad protsessid, nn tuuma lõimed, mille eest hoolitseb tuum.

Lisaks, RAIDi haldamist lihtsustab, kui kasutada udev tarkvara seadmetega tegelemiseks.

Kui on vajadus ise tuuma kompileerida, siis RAID jaoks vajalik osa asub 2.6 tuuma puhul sektsioonis

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

Lisaks on oluline, et tuumas sisalduksid nende kõvaketta kontrollerite draiverid, mille külge füüsilised kettad on ühendatud.

Sõltuvalt RAID skeemist võib olla selle kasutamine juurfailisüsteemina rohkem või vähem tülikam seoses bootimisega ja seepärast käsitletakse seda varianti eraldi punktis. Toodud näidetes on üldiselt eeldatud, et süsteemis on olemas kettaseadmed, mida saab RAID skeemideks kasutada.

Harjutamise eesmärgil saab hästi hakkama ka ühe füüsilise kettaga, lihtsalt tuleb moodustada losetup programmiga failidele vastavad seadmed ning kasutada neid

# dd if=/dev/zero of=/data/disk-1.img bs=1024x1024 count=128
# losetup -f /data/disk-1.img
# fdisk /dev/loop0
Disk /dev/loop0: 134 MB, 134217728 bytes
255 heads, 63 sectors/track, 16 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/loop0 doesn't contain a valid partition table

Nii moodustatud seadme eemaldamine toimub öeldes

# losetup -d /dev/loop0

RAID1 skeemi moodustamine

Tarkvaralisi RAID lülitusi on kahte tüüpi

  • superblokke kasutavate komponentidega lülitused
  • ilma superblokkideta nn legacy lülitused

Üldiselt soovitatakse kasutada superblokkidega lülitusi, legacy lülitused on olemas peamiselt sel põhjusel, et mdadm tarkvara oleks tagasiühinduv oma eelkäijatega. Superbloki kasutamine tähendab seda, et iga lülituses sisalduva komponendi enda sees on spetsiaalselt selleks tarbeks reserveeritud kohas kirjas selle komponendi omadused sh millissesse lülitusse ta kuulub. Nende andmete alusel on tuumal võimalik vajadusel iseseisvalt komponendid ühendada kokku skeemideks.

Samasugustele füüsilistele kõvaketastele vastavatest blokk-seadmetest /dev/sda ja /dev/sdb RAID1 skeemi moodustamiseks tuleb öelda

 bash# mdadm --create /dev/md0 -l raid1 -n 2 /dev/sda /dev/sdb

ning vaadates tulemust

 bash# mdadm -Q /dev/md0
 /dev/md0: 511.94MiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.

ning detailsemalt

 mpath:~# mdadm -D /dev/md0
 /dev/md0:
         Version : 00.90.03
   Creation Time : Tue Jan 29 21:30:56 2008
      Raid Level : raid1
      Array Size : 524224 (512.02 MiB 536.81 MB)
     Device Size : 524224 (512.02 MiB 536.81 MB)
    Raid Devices : 2
   Total Devices : 2
 Preferred Minor : 0
     Persistence : Superblock is persistent
 
     Update Time : Tue Jan 29 21:30:56 2008
           State : clean, resyncing
  Active Devices : 2
 Working Devices : 2
  Failed Devices : 0
   Spare Devices : 0
 
 Rebuild Status : 14% complete
 
          UUID : 314b8be6:785cf466:7616d059:8f0dcbd5 (local to host mpath.auul)
        Events : 0.1
 
   Number   Major   Minor   RaidDevice State
      0       8        0        0      active sync   /dev/sda
      1       8       16        1      active sync   /dev/sdb

Kusjuures on näha, et toimub peegli ühe poole teise vastu sünkroniseerimine, millest on valmis 14%.

Komponentide omadusi saab küsida võtmega -E, näiteks selliselt

 bash# mdadm -E /dev/sda
 /dev/sda:
           Magic : a92b4efc
         Version : 00.90.00
            UUID : 314b8be6:785cf466:7616d059:8f0dcbd5 (local to host mpath.auul)
   Creation Time : Tue Jan 29 21:30:56 2008
      Raid Level : raid1
     Device Size : 524224 (512.02 MiB 536.81 MB)
      Array Size : 524224 (512.02 MiB 536.81 MB)
    Raid Devices : 2
   Total Devices : 2
 Preferred Minor : 0
 
     Update Time : Tue Jan 29 21:31:12 2008
           State : clean
  Active Devices : 2
 Working Devices : 2
  Failed Devices : 0
   Spare Devices : 0
        Checksum : e73fa20c - correct
          Events : 0.2
 
 
     Number   Major   Minor   RaidDevice State
 this     0       8        0        0      active sync   /dev/sda
 
    0     0       8        0        0      active sync   /dev/sda
    1     1       8       16        1      active sync   /dev/sdb

Siinjuures on näha kuidas saab UUID numbri 314b8be6:785cf466:7616d059:8f0dcbd5 järgi teada, et komponent /dev/sda kuulub skeemi /dev/md0.

Peale skeemi moodustamist saab skeemi kohe kasutama asuda.

Skeemi käivitamine ja seiskamine

Peale skeemi moodustamist on skeem kasutamiseks valmis, öeldakse, et töötavas olekus. Skeemi saab viia mitte-töötavasse olekusse käsuga

 bash# mdadm -S /dev/md0
 mdadm: stopped /dev/md0

Olemasoleva ehk seadistatud ja mitte-töötavas olekus skeemi töötavasse olekusse viimiseks tuleb öelda

 bash# mdadm -A /dev/md0 /dev/sda /dev/sdb
 mdadm: /dev/md0 has been started with 2 drives.

Skeemi saab käivitada ka näidates ära RAID seadme UUID väärtuse

 bash# mdadm -A /dev/md0 --uuid 314b8be6:785cf466:7616d059:8f0dcbd5
 mdadm: /dev/md0 has been started with 2 drives.

Kui seadistusfaili lisada read

 DEVICE /dev/sda /dev/sdb
 ARRAY /dev/md0 level=raid0 num-devices=2 UUID=314b8be6:785cf466:7616d059:8f0dcbd5

kusjuures teise rea esitab käsk

 bash# mdadm --detail --scan
 ARRAY /dev/md0 level=raid0 num-devices=2 UUID=314b8be6:785cf466:7616d059:8f0dcbd5

siis piidab skeemi käivitamiseks öelda

 bash# mdadm -A /dev/md0

Skeemi kustutamine ja seadmete vabastamine

Skeemi kustutamine ja seadmete vabastamine, nt selleks, et saada seadmeid mõnes muus skeemis kasutada, tuleb neid seadmeid sisaldav skeem esmalt peatada öeldes

 bash# mdadm -S /dev/md0
 mdadm: stopped /dev/md0

ning kustutada komponentidel superblokid

 bash# mdadm --zero-superblock /dev/sda
 bash# mdadm --zero-superblock /dev/sdb

Seejärel saab neid seadmeid kasutada mujal, arusaadavalt kaasneb sellega vastaval skeemil olnud andmete hävinemine.

Kui töötavas skeemis kasutuses olevaid seadmeid püüda kasutada mõnes muus skeemis, annab arvuti sellise veateate

 bash# mdadm --create -l raid0 -n 2 /dev/md0 /dev/sda /dev/sdb
 mdadm: Cannot open /dev/sda: Device or resource busy
 mdadm: Cannot open /dev/sdb: Device or resource busy
 mdadm: create aborted

Kui aga mitte-töötavas skeemis olevaid seadmeid püüda kasutada mõnes muus skeemis, annab arvuti hoiatuse, aga lubab tegevusega edasi minna

 bash# mdadm --create -l raid0 -n 2 /dev/md0 /dev/sda /dev/sdb
 mdadm: /dev/sda appears to be part of a raid array:
     level=raid1 devices=2 ctime=Tue Jan 29 22:21:12 2008
 mdadm: /dev/sdb appears to be part of a raid array:
     level=raid1 devices=2 ctime=Tue Jan 29 22:21:12 2008
 Continue creating array? 

Kui eelnevalt oleks vastavate komponentide superblokid kustutatud, siis ei oleks selliseid hoiatusi esitatud.

Skeemi kasutamine

Moodustatud blokk-seadet /dev/md0 saab kasutada nagu tavalist kõvaketast, näiteks fdisk või parted abil moodustada sinna partitsioonid või lvm abil voluumid ning seejärel failisüsteemid. Näiteks parted programmi abil seadmega tutvumiseks tuleb öelda

bash# parted /dev/md0 p

Disk /dev/md0: 512MB 
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End  Size  Type  File system  Flags

Information: Don't forget to update /etc/fstab, if necessary.

Kusjuures, partitsioonide nimed esineksid näite puhul kujul /dev/md0p1, /dev/md0p2 jne.

RAID0 skeemi moodustamine

RAID0 skeemi moodustamine toimub käsuga

 bash# mdadm --create /dev/md1 -l raid0 -n 2 /dev/sdc /dev/sdd --auto=yes

Võtme --auto=yes kasutamisel moodustatakse vajadusel skeemi tekitamisel /dev/md1 seade.

RAID10 skeemi moodustamine

RAID10 skeem koosneb kahest peeglist, mis on omavahel stripe'i lülitatud, moodustamine toimub kahe sammuna, esmalt moodustatakse peeglid

 bash# mdadm --create /dev/md0 -l raid1 -n 2 /dev/sda /dev/sdb --auto=yes
 bash# mdadm --create /dev/md1 -l raid1 -n 2 /dev/sdc /dev/sdd --auto=yes

ja seejärel ühendatakse peeglid stripe'i

 bash# mdadm --create /dev/md2 -l raid0 -n 2 /dev/md0 /dev/md1 --auto=yes

RAID5 skeemi moodustamine

RAID5 skeem koosneb kolmest või enamast plokkseadmest, nt neljast

 # mdadm --create /dev/md0 -l raid5 -n 4 /dev/sdb /dev/sdc /dev/sdd /dev/sde 
 mdadm: array /dev/md0 started.

Hot spare kasutamine

Hot spare kasutamine on võimalik selliste RAID skeemide puhul, kus on olemas redundantsus. Kui töö ajal peaks üks komponent riknema, siis tarkvaraline RAID hoolitseb automaatselt selle eest, et skeemis riknenud kompoent asendatakse hot-spare'iga. Näiteks kahe peeglisse lülitatud ja ühe hot spare seadmega skeemi moodustamine toimub selliselt

 bash# mdadm --create /dev/md1 -l raid1 -n 2 -x 1 /dev/sda /dev/sdb /dev/sdc

Olemasolevale skeemile saab lisada hot spare selliselt

 bash# mdadm -a /dev/md0 /dev/sdd 
 mdadm: added /dev/sdd

ning eemaldada

 bash#  mdadm -r /dev/md0 /dev/sdc
 mdadm: hot removed /dev/sdc

kusjuures lisamine ja eemaldamine võib toimuda ka skeemi töötamise ajal. Arusaadavalt ei saa skeemist eemaldada rohkem seadmeid kui skeemi töötamiseks on minimaalselt tarvis.

Mitte-redundantses olekus redundantse skeemi moodustamine

Kui mingil põhjusel on tarvis moodustada redundantne skeem, aga parasjagu ei ole olemas kõiki komponente, siis tuleb käsureal puudu olevate seadmete nimede kohal kasutada parameetrit 'missing'. Näiteks moodustame ühe poolega peegli

 bash# mdadm --create -l raid1 -n 2 /dev/md0 /dev/sda missing

Kui sellisesse skeemi lisada võtmega -a seade juurde, siis toimub automaatselt andmete sünkroniseerimine.

Seadme riknenud olekusse märkimine

Näiteks haldusprotseduuride kontrollimise eesmärgil võib olla kasulik läbi proovida, kuidas süsteem reageerib RAID skeemi komponendi riknemisele. Ilma midagi füüsiliselt rikkumata saab loogiliselt märkida võtmega -f seadme riknenuks

 bash# mdadm /dev/md0 -f /dev/sda
 mdadm: set /dev/sda faulty in /dev/md0

Kui tegu on redundantse skeemiga, siis selliseks märgitud komponendi skeemi tagasi ühendamiseks tuleb ta järgnevalt eemaldada ning siis lisada, seejärel toimub andmete sünkroniseerimine ja taastub esialgne olukord

 bash# mdadm /dev/md0 -r /dev/sda
 mdadm: hot removed /dev/sda
 bash# mdadm /dev/md0 -a /dev/sda
 mdadm: re-added /dev/sda

Viimase tegevusega kaasnevad dmesg'is sellised teated, kust on muu seas näha, et andmete sünkroniseerimine toimub maksimaalselt kiirusega 200 000 KB/sec

 md: bind<sdb>
 RAID1 conf printout:
 --- wd:1 rd:2
 disk 0, wo:0, o:1, dev:sda
 disk 1, wo:1, o:1, dev:sdb
 md: recovery of RAID array md1
 md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
 md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
 md: using 128k window, over a total of 966751424 blocks.
 ...
 md: md1: recovery done.
 RAID1 conf printout:
 --- wd:2 rd:2
 disk 0, wo:0, o:1, dev:sda
 disk 1, wo:0, o:1, dev:sdb

RAID1 parandamine

Kui RAID1 lülituses on komponent riknenud, siis reeglina on süsteem kasutatav, kuid riknenud komponent tuleks asendada töötavaga, et taastada süsteemi andmekandja redundatsus. Peale sobiva suurusega füüsilise seadme asendamist tuleb süsteemis öelda nt

# mdadm /dev/md1 -a /dev/sdc2

Seejärel ehitatakse peegel üles

# mdadm -D /dev/md1
/dev/md1:
        Version : 00.90
  Creation Time : Sun Dec 21 12:38:49 2008
     Raid Level : raid1
     Array Size : 966751424 (921.97 GiB 989.95 GB)
  Used Dev Size : 966751424 (921.97 GiB 989.95 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Thu Apr 22 00:32:46 2010
          State : clean, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 1% complete

           UUID : 8d2e9ec5:29cadfbb:42a83fca:1e6f8c97
         Events : 0.3626790

    Number   Major   Minor   RaidDevice State
       0       8       18        0      active sync   /dev/sdb2
       2       8       34        1      spare rebuilding   /dev/sdc2

Lisaks on näha progressi öeldes

# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active raid1 sdc2[2] sdb2[0]
      966751424 blocks [2/1] [U_]
      [>....................]  recovery =  1.7% (17303488/966751424) finish=220.9min speed=71624K/sec
      
unused devices: <none>

Arvuti käivitamine ja seiskamine

TODO

Operatsioonisüsteemi alglaadimine RAID1 skeemilt

Füüsilisi kõvakettaid /dev/sda ja /dev/sdb kasutav RAID1 skeemilt töötavate /boot ja / failisüsteemidega arvuti näeb välja nt selline

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md2              2.9G  908M  1.8G  34% /
tmpfs                 503M     0  503M   0% /lib/init/rw
udev                   10M  600K  9.5M   6% /dev
tmpfs                 503M  4.0K  503M   1% /dev/shm
/dev/md0              122M   24M   92M  21% /boot

kus

  • /boot - /dev/md0 seade koosneb fdisk partitsioonidest /dev/sda1 ja /dev/sdb1
  • swap - /dev/md1 seade koosneb fdisk partitsioonidest /dev/sda2 ja /dev/sdb2
  • / - /dev/md2 seade koosneb fdisk partitsioonidest /dev/sda3 ja /dev/sdb3

GRUB alglaadijaga saab RAID1 skeemilt töötavat süsteemi käivitada.

Sellist süsteemi saab tekitada kahel viisil

  • operatsiooni paigaldamise käigus eeldusel, et installer seda võimaldab
  • nö tavaliselt töötava süsteemi migreerides

Töötava süsteemi migreerimine RAID1 skeeme kasutavatele failisüsteemidele

Olgu lähtepunktiks arvuti, millel on selline kõvakettakasutus

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              2.9G  908M  1.8G  34% /
tmpfs                 503M     0  503M   0% /lib/init/rw
udev                   10M  600K  9.5M   6% /dev
tmpfs                 503M  4.0K  503M   1% /dev/shm
/dev/sda1              122M   24M   92M  21% /boot

kusjuures

  • /dev/sda1 - /boot failisüsteem
  • /dev/sda2 - saaleala
  • /dev/sda3 - juurfailisüsteem
  • /dev/sdb - lisaks on süsteemis teine füüsiline seade, mis on samasugune kui /dev/sda

RAID1 kasutamiseks peab olema süsteemi paigaldatud mdadm tarkvara, kusjuures initramfs ei vaja eraldi seadistamist Debian Lenny puhul.

/dev/sdb seadme ettevalmistamine

/dev/sdb seadme partisioneeritakse täpsel selliselt nagu seade /dev/sda, kusjuures failisüsteemide tüübiks määratakse fd nt programmiga fdisk, sfdisk või parted, tulemus on selline

# fdisk /dev/sdb -l
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            1          24      192748+  fd  Linux raid autodetect
/dev/sdb2           25          86      498015   fd  Linux raid autodetect
/dev/sdb3           87         522     3502170   fd  Linux raid autodetect

mdadm seadmete ettevalmistamiseks tuleb öelda, esialgu koosnevad RAID skeemid ainult ühes komponendist

# mdadm --create -l raid1 -n 2 /dev/md0 missing /dev/sdb1
# mdadm --create -l raid1 -n 2 /dev/md1 missing /dev/sdb2
# mdadm --create -l raid1 -n 2 /dev/md2 missing /dev/sdb3

Tulemus on selline

# cat /proc/mdstat 
Personalities : [raid1] 
md2 : active raid1 sdb3[1]
      3502080 blocks [2/1] [_U]
      
md1 : active raid1 sdb2[1]
      497920 blocks [2/1] [_U]
      
md0 : active raid1 sdb1[1]
      192640 blocks [2/1] [_U]
      
unused devices: <none>

Seejärel tuleb moodustada RAID seadmetele failisüsteemid ja saaleala

# mke2fs -j /dev/md0
# mkswap /dev/md1
# mke2fs -j /dev/md2

Failisüsteemide kopeerimine

Ühendada failisüsteemid külge, nt

Filesystem            Size  Used Avail Use% Mounted on
...
/dev/md2              3.3G   70M  3.1G   3% /tmp/md2
/dev/md0              183M  5.6M  168M   4% /tmp/md2/boot

ning kopeerida andmed

# cat /tmp/ef
/dev
/proc
/sys
/tmp
# rsync -avH --numeric-ids --exclude-from=/tmp/ef / /tmp/md2/

ning moodustada puuduvad kataloogid

# cd /tmp/md2
# mkdir dev proc sys tmp
# chmod 1777 tmp

Süsteemi alglaadimine RAID skeemidelt

Selleks, et süsteemi saaks alglaadida RAID seadmetelt tuleb

  • kohendada RAID seadmel asuvat /etc/fstab faili, see peab sisaldama
/dev/md2       /               ext3    errors=remount-ro 0       1 
/dev/md0       /boot           ext3    defaults        0       2 
/dev/md1       none            swap    sw              0       0 
  • kohendada /dev/sda1 failisüsteemis alglaaduri seadistusfaili /boot/grub/menu.list, mis peab sisaldama sektsiooni
title           md2
root            (hd1,0)
kernel          /vmlinuz-2.6.26-2-amd64 root=/dev/md2 ro        
initrd          /initrd.img-2.6.26-2-amd64

Seejärel saab süsteemi alglaadida RAID skeemidel asuvate failisüsteemidega, tulemuseks on

# df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/md2              3.3G  558M  2.6G  18% /
/dev/md0              183M   22M  152M  13% /boot

RAID skeemidesse puuduvate komponentide lisamine

Kui süsteem töötab /dev/sdb kettal olevatelt RAID komponentidelt tuleb

  • muuta /dev/sda partitsioonide tüübiks fd
  • arvuti vajadusel rebootida ja käivitada uuesti RAID skeemidelt, et eelmises punktis tehtud muudatus kehtestada
  • lisada RAID skeemidesse ka vastavad /dev/sda ketta partitsioonid
# mdadm --add /dev/md0 /dev/sda1
# mdadm --add /dev/md1 /dev/sda2
# mdadm --add /dev/md2 /dev/sda3

Alglaaduri paigaldamine

Lõpuks tuleks paigaldada /dev/sda ja /dev/sdb kettale uuesti GRUB

# grub
grub> root (hd0,0)
root (hd0,0)
 Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0)
setup (hd0)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/e2fs_stage1_5" exists... yes
 Running "embed /grub/e2fs_stage1_5 (hd0)"...  17 sectors are embedded. succeeded
 Running "install /grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/grub/stage2 /grub/menu.lst"... succeeded
 Done.
grub> quit
# grub
grub> root (hd1,0)
root (hd1,0)
 Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd1)
setup (hd1) 
grub> quit

Alglaaduri seadistusfail /boot/grub/menu.lst peab sisaldama

default         0
fallback        1
...

title           md2 sda
root            (hd0,0)
kernel          /vmlinuz-2.6.26-2-amd64 root=/dev/md2 ro
initrd          /initrd.img-2.6.26-2-amd64

title           md2 sdb
root            (hd1,0)
kernel          /vmlinuz-2.6.26-2-amd64 root=/dev/md2 ro
initrd          /initrd.img-2.6.26-2-amd64

kus

  • fallback 1 - kui default 0 valikuga ei õnnestu süsteemi alglaadida, proovitakse kasutada järgmist valikut

Testimine

TODO

Märkused

  • RAID skeemidel ei pruugi kasutada otseselt failisüsteeme, vaid nt LVM'i

Kasulikud lisamaterjalid

Üks teine suhteliselt eksootiline võimalus bootida arvutit, mille juurfailisüsteem asub RAID skeemil on bootida arvuti võrgust. St bootloader, tuum ja vajadusel ramdisk võetakse võrgust.

Monitooring

mdadm programmi abil saab jälgida RAID skeemi tööd ning vajadusel korraldada näiteks e-posti aadressile või syslogi teadete saatmist.

Vaikimisi käivitatakse Debiani puhul iga kuu esimesel pühapäeval checkarray utiliit

 # grep -v ^# /etc/cron.d/mdadm 
 57 0 * * 0 root [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ] && \
   /usr/share/mdadm/checkarray --cron --all --quiet

millega kaasneb logis teade

 md: data-check of RAID array md1
 md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
 md: using maximum available idle IO bandwidth \
  (but not more than 200000 KB/sec)for data-check.
 md: using 128k window, over a total of 966751424 blocks.
 md: md1: data-check done.
 RAID1 conf printout:
  --- wd:2 rd:2
  disk 0, wo:0, o:1, dev:sdc2
  disk 1, wo:0, o:1, dev:sdb2

Täiendavat infot selle kohta on kirjas failis /usr/share/doc/mdadm/README.checkarray

Märkused

  • RAID skeemidega tegelemisel on abiks jälgida programmiga iostat moodustatud seadmete ja nende koosseisu kuuluvate komponentide tegevust. Näiteks jälgida, mis toimub peegli ühe poole teise vastu sünkroniseerimise ajal.
  • Informatiivne on jälgida kuidas RAIDi skeemi oleku muutumisel, nt hot spare lisamisel, see kajastub käsu mdadm -D /dev/seadmenimi väljundis.
  • RAID skeemi kasutusele võtmisel võiks programmidega top ja vmstat hinnata kui palju süsteemi ressurssi kulub RAID'iga tegelemisele.
  • Lisaks RAID'ile kasutatakse vahel järgnevust RAED - Redundant Array of Expensive Disks.
  • RAID skeeme sisaldava RAID skeemi puhul tuleb lisada /etc/mdadm/mdadm.conf failis DEVICE reale samuti komponentidele vastavad RAID seadmed, nt /dev/md1, /dev/md2
  • Kui arvutis on mitu kõvakettakontrollerit, siis vahel võib see asjaolu põhjustada segadust, millised seadmenimed kõvakettad igal boodil omandavad. Üks võimalik viis olukorda kontrollida on eemaldada ramdiskist kõik draiverid pealt ühe kontrolleri oma. Muude draiverid loetakse sisse juba arvuti bootimise käigus lokaalsest failisüsteemist. Draiveri eemaldamine ramdiskist võiks toimuda liigutades draiveri /lib/modules kataloogist ajutiselt ära, moodustades mkinitramfs abil ramdiski ning seejärel liigutades tagasi.
  • Üks võimalik mdadm kasutusjuht võiks olla ka failisüsteemi, õigemine vastava plokkseadme kloonimine. Seda saab korraldada redundantsesse RAID skeemi komponentide juurde ja lahti ühendades.
  • Kui RAID komponendina kasutada füüsilise kõvaketta partitsiooni, nt /dev/sdc2, siis on sobiv valida partitsiooni tüübiks fd (Linux raid autodetect)
  • RAID ja multipath ei leia selles mõttes otseselt koos kasutamist, kuna RAID kasutab mitmeid erinevaid füüsilisi seadmeid, aga multipath teeb operatsioonisüsteemile kättesaadavaks erinevate nimedega sama füüsilise seadme
  • Kui RAID skeemi komponendi lülitamisel öeldakse
mdadm: Cannot open /dev/sdc2: Device or resource busy

tasub kontrollida, et nt mingil põhjusel ei ole multpath võtnud seadet kasutusele

# multipath -ll
mpath7 (SATA_ST31000340NS_9QJ04S8Y) dm-14 ATA     ,ST31000340NS  
[size=932G][features=0][hwhandler=0]
\_ round-robin 0 [prio=1][active]
 \_ 2:0:0:0 sdc 8:32  [active][ready]


Kasulikud lisamaterjalid