Erinevus lehekülje "Tarkvaralise RAID massiivi kasutamine Linuxiga" redaktsioonide vahel

Allikas: Kuutõrvaja
(Operatsioonisüsteemi alglaadimine RAID1 skeemilt)
 
(ei näidata sama kasutaja 186 vahepealset redaktsiooni)
1. rida: 1. rida:
'''Tarkvaraline RAID'''
+
===Sissejuhatus===
  
Üldiselt tähistatakse järgnevusega RAID (Redundant Arrays of Inexpensive Disks) mitmetest iseseisvatest füüsilistest blokk-seadmetest (kõvaketastest) moodustatuks terviklikku loogilist blokk-seadet. 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 RAIDi 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 (Redundant Arrays of Inexpensive/Independent Disks, ingl. k. redundantne massiiv odavaid/iseseisvaid kõvakettaid) http://en.wikipedia.org/wiki/RAID tehnika abil saab mitmetest iseseisvatest füüsilistest plokkseadmetest moodustada loogilisi plokkseadmeid. Praktiliselt esinevad kasutatavad füüsilised plokkseadmed kõvaketaste või kõvaketta fdisk partitsioonide kujul. RAID lahendusel on üksiku füüsilise seadme kasutamise ees sellised eelised
  
* RAID skeemi kuuluvaid kettaid saab hõlpsasti liigutada arvutite vahel
+
* kasutada olevatest füüsilistest kõvaketastest saab moodustada loogilise plokkseadme, mille maht ületab massiiivi mistahes kompenendi mahu eraldivõetuna
* RAID skeemi tööks kasutada olevat arvutusjõudlust saab muuta arvuti protsessori ja mälu skaleerimise teel
+
* sõltuvalt RAID skeemi valikust saab korraldada suuremat kiirust, paremat redundantsust või mõlemat võrreldes üksiku kõvakettaga
  
Kuigi tihtipeale kõneldakse ja kasutatakse RAID ja LVM (Logical Volume Management) teemat koos ja teatud lahendusi saab moodustada praktiliselt mõlemiga on sisuliselt tegu kahe erineva küsimusega:
+
Juurutamise keerukuse seisukohalt võiks eristada kahte tarkvaralise RAID massiivi kasutamise juhtumit
  
* RAID tegeleb peaasjalikult füüsilistest blokk-seadmetest loogiliste blokk-seadmete moodustamisega ja selle tulemusena moodustunud süsteemi haldamisega
+
* /boot ja / failisüsteemid ei asu tarkvaralise RAID massiivil, vaid nö tavalisel plokkseademel, massiivi kasutatakse nt /srv all olevate andmete jaoks; sellise olukorra käsitletemisest käesolev tekst alustab kuna on lihtsam käivitada
* LVM tegeleb peaasjalikult blokk-seadmele nn voluumide (millele tavaliselt moodustatakse kas failisüsteem või swap) moodustamise ja haldamisega, sh võimaldab nt teha snapshot'te.
+
* /boot ja / failisüsteemid asuvad tarkvaralisel RAID massiivil; sellist olukorda käsitleb tekstis punkt 'Operatsioonisüsteemi alglaadimine RAID1 skeemilt'
  
Seega loogilises mõttes asub RAID LVM'ist kihit allpool, materjali esituse selguse mõttes esitatakse nad Kuutõrvajas erinevates punktides.
+
===Riistvaraline ja tarkvaraline RAID===
  
 +
Kui loogilise seadme moodustamiseks kasutatakse nt arvuti PCI-E siinile ühendatud spetsiaalselt riistvaralist RAID kontrollerit, mille külge on omakorda ühendatud kõvakettad, siis on tegu riistvaralise RAID lahendusega. Operatsioonisüsteem peab sel juhul toetama kasutusel olevat riistavaralise RAID massiivi kontrollerit ja tugi esineb tavaliselt tuuma mooduli kujul. Operatsioonisüsteemi jaoks paistab loogiline seade ühe SCSI seadmena, kusjuures riistvaralist RAID massiivi reeglina ei saa operatsioonisüsteemi vahenditega hallata, haldus toimub nt kontrolleri BIOS kaudu arvuti käivitamisel. Selliseks näiteks on [[:3ware RAID kontrolleri kasutamine]].
  
'''Linuxi tuuma seadistamine'''
+
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 ning tal on riistvaralise ees järgmised eelised
  
Linuxi 2.6 tuuma puhul on oluline lisaks füüsiliste ketaste draiveritele valida
+
* tarkvaralise RAID massiivi kuuluvaid kettaid saab hõlpsasti liigutada arvutite vahel muretsemata, kas arvutites on sama tootja kontrolleri sama mudel
 +
* tarkvaralise RAID massiivi tööks kasutada olevat arvutusjõudlust saab muuta arvuti protsessori ja mälu skaleerimise teel
  
Device Drivers -> Multi-device support (RAID and LVM) -> valida kõik
+
===RAID ja LVM===
  
 +
Kuigi tihtipeale 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'i seadistamine'''
+
* 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 ning sünkroniseerib andmed õiges suunas
 +
* LVM tegeleb peaasjalikult plokk-seadmele köidete (ingl. k. volume), millele tavaliselt moodustatakse, kas failisüsteem või saaleala, moodustamise ja haldamisega, nt võimaldab köitei suurust muuta ning teha snapshot'te
  
Tarkvaralise RAID lahenduse seadistamiseks sobib kasutada tarkvara mdadm http://cgi.cse.unsw.edu.au/~neilb/SoftRaid. Põhiliselt on tegu ühe programmiga mdadm ning ühe seadistusfailiga /etc/mdadm/mdadm.conf, distributsioonides sisaldub see reeglina pakendatud kujul.
+
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.
  
Näite varal on kirjeldatud kuidas moodustada kahest füüsilisest kõvakettast /dev/sda ja /dev/sdb üks RAID0 blokkseade.
+
===RAID skeemid===
  
  aix:~# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb
+
RAID massiiv ehk RAID lahendus märgivad üldiselt asjaolu, et kasutatakse RAID tehnoloogiat.
 +
RAID skeemiks ehk RAID lülituseks 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 vööditud, n > 3
 +
* RAID01 - vööditud on ühendatud peeglisse, n > 3
 +
 
 +
===Ettevalmistused===
 +
 
 +
Tarkvaralise RAID massiivi 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.
 +
 
 +
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
 +
 
 +
Üheks alternatiiviks harjutada on kasutada virtuaaliseerimistarkvara, nt VMware on selleks sobiv.
 +
 
 +
===Tarkvara paigaldamine===
 +
 
 +
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
 +
 
 +
Paigaldamise tulemusena on süsteemi lisatud
 +
 
 +
* /sbin/mdadm - mdadm utiliit
 +
* /etc/default/mdadm - seadistusfail
 +
* /etc/mdamd/mdadm.conf - seadistusfail
 +
* /etc/init.d/mdadm - käivitusskript
 +
* /usr/share/initramfs-tools - initramfs skriptid
 +
* /lib/modules/2.6.26-2-amd64/kernel/drivers/md - tuuma moodulid
 +
 
 +
RAID haldamist lihtsustab, kui kasutada udev tarkvara seadmetega tegelemiseks, nt nii on vaikimisi Debian Lennis.
 +
 
 +
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.
 +
 
 +
===RAID1 skeemi moodustamine===
 +
 
 +
Tarkvaralisi RAID lülitusi on kahte tüüpi
 +
 
 +
* superplokke kasutavate komponentidega lülitused
 +
* ilma superplokkideta nn legacy lülitused
 +
 
 +
Üldiselt soovitatakse kasutada superplokkidega 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 ja seetõttu, et on tingimata RAID massiivi kasutamisel kasutaja seadistusfaili.
 +
 
 +
Samasugustele füüsilistele kõvaketastele vastavatest plokkseadmetest /dev/sda ja /dev/sdb RAID1 skeemi moodustamiseks tuleb öelda
 +
 
 +
# mdadm --create /dev/md0 -l raid1 -n 2 /dev/sda /dev/sdb
  
 
ning vaadates tulemust
 
ning vaadates tulemust
  
  aix:~# mdadm --query /dev/md0
+
  # mdadm -Q /dev/md0
  /dev/md0: 232.89GiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.
+
  /dev/md0: 511.94MiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.
  
ja ka detailsemalt
+
ning detailsemalt
  
  aix:~# mdadm --detail /dev/md0
+
  # mdadm -D /dev/md0
 
  /dev/md0:
 
  /dev/md0:
        Version : 00.90.03
+
        Version : 00.90.03
  Creation Time : Mon Dec 25 19:33:34 2006
+
  Creation Time : Tue Jan 29 21:30:56 2008
    Raid Level : raid1
+
      Raid Level : raid1
    Array Size : 244198464 (232.89 GiB 250.06 GB)
+
      Array Size : 524224 (512.02 MiB 536.81 MB)
    Device Size : 244198464 (232.89 GiB 250.06 GB)
+
    Device Size : 524224 (512.02 MiB 536.81 MB)
  Raid Devices : 2
+
    Raid Devices : 2
  Total Devices : 2
+
  Total Devices : 2
 
  Preferred Minor : 0
 
  Preferred Minor : 0
    Persistence : Superblock is persistent
+
    Persistence : Superblock is persistent
 
   
 
   
    Update Time : Mon Dec 25 19:33:34 2006
+
    Update Time : Tue Jan 29 21:30:56 2008
          State : clean, resyncing  
+
          State : clean, resyncing
 
   Active Devices : 2
 
   Active Devices : 2
 
  Working Devices : 2
 
  Working Devices : 2
55. rida: 123. rida:
 
   Spare Devices : 0
 
   Spare Devices : 0
 
   
 
   
  Rebuild Status : 0% complete
+
  Rebuild Status : 14% complete
 +
 
 +
          UUID : 314b8be6:785cf466:7616d059:8f0dcbd5 (local to host mpath.auul)
 +
        Events : 0.1
 
   
 
   
           UUID : 0f549edf:66839bd6:e2188e78:0f4ec762
+
  Number  Major  Minor  RaidDevice State
        Events : 0.1aix~# mdadm --assemble
+
      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
 +
 
 +
# 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
 
   
 
   
     Number  Major  Minor  RaidDevice State
+
     0    0      8        0        0      active sync  /dev/sda
      0      8        0        0      active sync  /dev/sda
+
    1    1      8      16        1      active sync  /dev/sdb
      1      8      16        1      active sync  /dev/sdb
+
 
 +
kui
 +
 
 +
* 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. 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.
 +
 
 +
Töötava skeemi kohta saab küsida andmeid ka öeldes
 +
 
 +
# cat /proc/mdstat
 +
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
 +
md0 : active raid1 sda1[0] sdb1[1]
 +
      524224 blocks [2/2] [UU]
 +
     
 +
unused devices: <none>
 +
 
 +
Kui massiivi komponentidena kasutada fdisk partitsioone, tuleb tüübina kasutada fd (Linux raid autodetect). RAID kasutamise seisukohast ei ole partitsiooni tüüp oluline, kuid teoreetiliselt peaks tuum automaatselt võtma kasutusele ainult fd tüüpi massiivid, praktiliselt tundub, et massiivid võetakse kasutusele igal juhul.
 +
 
 +
===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
 +
 
 +
# mdadm -S /dev/md0
 +
mdadm: stopped /dev/md0
  
Seadistusfaili /etc/mdadm/mdadm.conf sisu võiks olla selline
+
Olemasoleva ehk seadistatud ja mitte-töötavas olekus skeemi töötavasse olekusse viimiseks tuleb öelda
  
  ARRAY /dev/md0 devices=/dev/sda,/dev/sdb level=raid1 num-devices=2
+
  # mdadm -A /dev/md0 /dev/sda /dev/sdb
 +
mdadm: /dev/md0 has been started with 2 drives.
  
Moodustatud RAID skeemi kasutuselevõtmiseks tuleb üldiselt skeem aktiviseerida, kuid skeemi moodustamisel tehakse see automaatselt
+
Skeemi saab käivitada ka näidates ära RAID seadme UUID väärtuse
  
  aix~# mdadm --assemble /dev/md0
+
  # mdadm -A /dev/md0 --uuid 314b8be6:785cf466:7616d059:8f0dcbd5
 
  mdadm: /dev/md0 has been started with 2 drives.
 
  mdadm: /dev/md0 has been started with 2 drives.
 +
 +
====Seadistusfail mdadm.conf====
 +
 +
mdadm kasutab Debian Lennis seadistusfaili /etc/mdadm/mdadm.conf kuigi see on praktiliselt vajalik ainult keerulisematel juhtumitel, vaikimisi ühendab tuum arvuti käivitamisel kasutada olevad RAID massiivid korrektselt kokku.
 +
 +
Eeltoodud RAID seadistusi sobib ilmutatud kujul seadistusfailis esitada selliselt
 +
 +
DEVICE /dev/sda /dev/sdb
 +
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=314b8be6:785cf466:7616d059:8f0dcbd5
 +
 +
et tuleb muudustada eelnevalt RAID skeemiks konfigureeritud seadmetest /dev/sda ja /dev/sdb näidatud UUID väärtusega massiiv.
 +
 +
Kusjuures teise rea esitab käsk
 +
 +
# mdadm --detail --scan
 +
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=314b8be6:785cf466:7616d059:8f0dcbd5
 +
 +
Seadistufail lihtsustab kirjeldatud massiivi kasutamist, nt siis piisab massiivi käivitamiseks öelda
 +
 +
# 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
 +
 +
# mdadm -S /dev/md0
 +
mdadm: stopped /dev/md0
 +
 +
ning kustutada komponentidel superblokid
 +
 +
# mdadm --zero-superblock /dev/sda
 +
# 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
 +
 +
# 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
 +
 +
# 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 plokkseadet /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
 +
 +
# fdisk /dev/md0 -l
 +
 +
Disk /dev/md0: 512 MB, xxx bytes
 +
2 heads, 4 sectors/track, 1000016 cylinders
 +
Units = cylinders of 8 * 512 = 4096 bytes
 +
Disk identifier: 0x8d6aab13
 
   
 
   
ning edasi võib moodustatud blokkseadet /dev/md0 käsitleda nagu tavalist kõvaketast, näiteks fdisk või parted abil moodustada partitsioonid ning seejärel failisüsteemid. Samuti võib RAID seadet kasutada LVM juures füüsilise seadmena
+
    Device Boot      Start        End      Blocks  Id  System
 +
/dev/md0p1              1      488282    1953126  83  Linux
 +
/dev/md0p2          488283    1000016    2046936  83  Linux
 +
 
 +
kus
 +
 
 +
* partitsioonide nimed esinevad kujul /dev/md0p1 ja /dev/md0p2
 +
 
 +
===RAID0 skeemi moodustamine===
 +
 
 +
RAID0 skeemi moodustamine toimub käsuga
 +
 
 +
# 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.
 +
 
 +
===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.
 +
 
 +
===RAID10 skeemi moodustamine===
 +
 
 +
RAID10 skeem koosneb kahest peeglist, mis on omavahel stripe'i lülitatud, moodustamine toimub kahe sammuna, esmalt moodustatakse peeglid
 +
 
 +
# mdadm --create /dev/md0 -l raid1 -n 2 /dev/sda /dev/sdb --auto=yes
 +
# mdadm --create /dev/md1 -l raid1 -n 2 /dev/sdc /dev/sdd --auto=yes
 +
 
 +
ja seejärel ühendatakse peeglid stripe'i
 +
 
 +
# mdadm --create /dev/md2 -l raid0 -n 2 /dev/md0 /dev/md1 --auto=yes
 +
 
 +
Et sellise skeemi kasutuselevõtmine toimuks automaatselt, sobib kasutada sellise sisuga seadistusfaili
 +
 
 +
DEVICE /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/md0 /dev/md1
 +
ARRAY /dev/md2 level=raid0 num-devices=2 UUID=12348be6:785cf466:7616d059:8f0dcbd5
 +
 
 +
kus
 +
 
 +
* DEVICE - loetleb kõik viisil või teisel kasutuses olevad RAID komponendid
 +
* ARRAY - kirjeldab seadme UUID väärtuse, praktiliselt tundub, et see rida ei ole vajalik
 +
 
 +
Sellise RAID10 skeemi heaks omaduseks on suhteliselt hea kiirus ning kõrge redundantsus, maksimaalselt võib minna katki kuni kaks ketast tingimusel, et nad on erinevatest peeglitest. Samas kasutatav maht on kaks korda väiksem füüsiliste komponentide mahust.
 +
 
 +
===Hot spare kasutamine===
 +
 
 +
Hot spare kasutamine on võimalik selliste RAID skeemide puhul, kus on olemas redundantsus, nt RAID1 või RAID5. 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
 +
 
 +
# mdadm --create /dev/md1 -l raid1 -n 2 -x 1 /dev/sda /dev/sdb /dev/sdc
 +
 
 +
Olemasolevale skeemile saab lisada hot spare selliselt
 +
 
 +
# mdadm -a /dev/md0 /dev/sdd
 +
mdadm: added /dev/sdd
 +
 
 +
ning eemaldada
 +
 
 +
#  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
 +
 
 +
# mdadm --create -l raid1 -n 2 /dev/md0 /dev/sda missing
  
  aix:~# parted /dev/md0 p
+
Kui sellisesse skeemi lisada võtmega -a seade juurde, siis toimub automaatselt andmete sünkroniseerimine.
 +
 
 +
===Komponendi 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
 +
 
 +
  # 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
 +
 
 +
# mdadm /dev/md0 -r /dev/sda
 +
mdadm: hot removed /dev/sda
 +
# 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 redundantsus. 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
 
   
 
   
Disk /dev/md0: 250GB
+
  Rebuild Status : 1% complete
Sector size (logical/physical): 512B/512B
 
Partition Table: msdos
 
 
   
 
   
Number  Start  End  Size  Type  File system  Flags
+
            UUID : 8d2e9ec5:29cadfbb:42a83fca:1e6f8c97
 +
          Events : 0.3626790
 
   
 
   
  Information: Don't forget to update /etc/fstab, if necessary.
+
    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>
 +
 
 +
===Operatsioonisüsteemi alglaadimine RAID1 skeemilt===
 +
 
 +
Eelmistes punktides on keskendutud RAID kasutamisele käsitlemata, kuidas seejuures toimub arvuti alglaadimine, st on eeldatud, et arvuti töötab nö tavalistel seadmetel asuvate /boot ja / failisüsteemidega. Kui arvuti /boot ja / failisüsteemid asuvad samuti RAID1 lülituses, siis tagab see täiendava redundantsuse. Tehniliselt peab ainult /boot failisüsteem olema RAID1 lülituses ja juurfailisüsteem võib olla suvalises RAID lülituses, mida parasjagu kasutatav initramfs toetab.
 +
 
 +
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
  
RAID skeemi deaktiviseerimiseks tuleb öelda
+
# 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
  
  aix:~# mdadm --stop -scan
+
kus
  mdadm: stopped /dev/md0
+
 
 +
* /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====
 +
 
 +
Kui RAID1 skeemilt alglaaditud arvutiga tegeledaks nt ESX virtuaalserveri guestis, siis on sobib ühendada vaheldumisi üks ja teine ketas korraks küljest ära ning veenduda, et arvuti käivitub.
 +
 
 +
====Märkused====
 +
 
 +
* RAID skeemidel ei pruugi kasutada otseselt failisüsteeme, vaid nt LVM'i.
 +
* Osutub, et KMV virtuaalset arvutit ei saa kasutada RAID1 testimiseks kuna grub saab seal kasutada ainult hd0 seadet.
 +
 
 +
====Kasulikud lisamaterjalid====
 +
 
 +
* http://www200.pair.com/mecham/raid/raid1.html
 +
* http://www.howtoforge.com/software-raid1-grub-boot-debian-etch
 +
 
 +
Üks teine suhteliselt eksootiline võimalus bootida arvutit, mille juurfailisüsteem asub RAID skeemil on bootida arvuti võrgust. St bootloader, tuum ja initramfs võetakse võrgust.
 +
 
 +
===Monitooring===
 +
 
 +
mdadm monitooring töötab kahel viisil
 +
 
 +
* nn monitor režiimis töötav mdadm protsess, mis jälgib massiiivi ja saadab teateid
 +
* cron tööta regulaarselt käivitatav /usr/share/mdadm/checkarray skript
 +
 
 +
====Massiivi tõrgete kohta teadete saatmine====
 +
 
 +
mdadm programmi abil saab jälgida RAID skeemi tööd ning vajadusel korraldada näiteks e-posti aadressile või syslogi teadete saatmist. Monitooringu käivitamiseks peab sisalduma /etc/mdadm/mdadm.conf failis eposti aadress, nt
 +
 
 +
  MAILADDR priit@loomaaed.tartu.ee
 +
 
 +
ning /etc/default/mdadm failis rida
 +
 
 +
# START_DAEMON:
 +
#   should mdadm start the MD monitoring daemon during boot?
 +
START_DAEMON=true
 +
 
 +
Tulemusena töötab protsess
 +
 
 +
# ps aux | grep mdadm | grep -v grep
 +
root 2180  0.0  0.1  12364  632 ?  Ss  Apr24  0:00 /sbin/mdadm --monitor \
 +
  --pid-file /var/run/mdadm/monitor.pid --daemonise --scan --syslog
 +
 
 +
ja tõrke puhul saadetakse kasutajale nt sellise sisuga kiri
 +
 
 +
  From: mdadm monitoring <root@loomaaed.tartu.ee>
 +
To: priit@loomaaed.tartu.ee
 +
Subject: Fail event on /dev/md1:loomaaed.tartu.ee
 +
Message-Id: <20100425122119.D955D13D6C@loomaaed.tartu.ee>
 +
Date: Sun, 25 Apr 2010 08:21:19 -0400 (EDT)
 +
 +
This is an automatically generated mail message from mdadm
 +
running on loomaaed.tartu.ee
 +
 +
A Fail event had been detected on md device /dev/md1.
 +
 +
It could be related to component device /dev/sdb2.
 +
 +
Faithfully yours, etc.
 +
 +
P.S. The /proc/mdstat file currently contains the following:
 +
 +
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
 +
md0 : active raid1 sda1[0] sdb1[1]
 +
      192640 blocks [2/2] [UU]
 +
     
 +
md1 : active raid1 sda2[0] sdb2[1](F)
 +
      497920 blocks [2/1] [U_]
 +
     
 +
md2 : active raid1 sda3[0] sdb3[1]
 +
      3502080 blocks [2/2] [UU]
 +
     
 +
unused devices: <none>
  
 +
====Massiivi kontrollimine====
  
'''Arvuti käivitamine ja seiskamine'''
+
Vaikimisi käivitatakse Debiani puhul iga kuu esimesel pühapäeval checkarray utiliit
  
Arvuti käivitamisel tuleb seadistusfailis kirjeldatud kõigi RAID skeemide aktiviseerimiseks öelda
+
# 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
  
aix~# mdadm --assemble --scan
+
millega kaasneb logis teade
  
Arvuti seiskamisel
+
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
  
aix~# mdadm --stop --scan
+
Täiendavat infot selle kohta on kirjas failis /usr/share/doc/mdadm/README.checkarray
  
Need käsud tuleks ära näidata startup ja stop skriptide juures.
+
===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
  
'''RAID skeemi eemaldamine'''
+
mdadm: Cannot open /dev/sdc2: Device or resource busy
  
RAID skeemi eemdaldamiseks tuleb eemaldada mdadm.conf failist ning kävitusskriptidest vastavad read ning seejärel kõvakettad võtta muul moel kasutusele.
+
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]
  
'''Monitooring'''
+
===Kasulikud lisamaterjalid===
  
mdadm programmi abil saab jälgida RAID skeemi tööd ning vajadusel korraldada näiteks e-posti aadressile või syslogi teadete saatmist. Lisaks on taastestsenaariumide läbimängimiseks võimalik loogiliselt märkida RAIDi komponente katkisteks.
+
* [[:Plokkseadme LUKS formaadis krüptimine]]
 +
* [[:LVM]]
 +
* [[:DM-Multipath]]
 +
* [[:GlusterFS kasutamine Debianiga]]
 +
* [[:DRBD kasutamine Debianiga]]
 +
* [[:3ware RAID kontrolleri kasutamine]]

Viimane redaktsioon: 26. aprill 2010, kell 01:32

Sissejuhatus

RAID (Redundant Arrays of Inexpensive/Independent Disks, ingl. k. redundantne massiiv odavaid/iseseisvaid kõvakettaid) http://en.wikipedia.org/wiki/RAID tehnika abil saab mitmetest iseseisvatest füüsilistest plokkseadmetest moodustada loogilisi plokkseadmeid. Praktiliselt esinevad kasutatavad füüsilised plokkseadmed kõvaketaste või kõvaketta fdisk partitsioonide kujul. RAID lahendusel on üksiku füüsilise seadme kasutamise ees sellised eelised

  • kasutada olevatest füüsilistest kõvaketastest saab moodustada loogilise plokkseadme, mille maht ületab massiiivi mistahes kompenendi mahu eraldivõetuna
  • sõltuvalt RAID skeemi valikust saab korraldada suuremat kiirust, paremat redundantsust või mõlemat võrreldes üksiku kõvakettaga

Juurutamise keerukuse seisukohalt võiks eristada kahte tarkvaralise RAID massiivi kasutamise juhtumit

  • /boot ja / failisüsteemid ei asu tarkvaralise RAID massiivil, vaid nö tavalisel plokkseademel, massiivi kasutatakse nt /srv all olevate andmete jaoks; sellise olukorra käsitletemisest käesolev tekst alustab kuna on lihtsam käivitada
  • /boot ja / failisüsteemid asuvad tarkvaralisel RAID massiivil; sellist olukorda käsitleb tekstis punkt 'Operatsioonisüsteemi alglaadimine RAID1 skeemilt'

Riistvaraline ja tarkvaraline RAID

Kui loogilise seadme moodustamiseks kasutatakse nt arvuti PCI-E siinile ühendatud spetsiaalselt riistvaralist RAID kontrollerit, mille külge on omakorda ühendatud kõvakettad, siis on tegu riistvaralise RAID lahendusega. Operatsioonisüsteem peab sel juhul toetama kasutusel olevat riistavaralise RAID massiivi kontrollerit ja tugi esineb tavaliselt tuuma mooduli kujul. Operatsioonisüsteemi jaoks paistab loogiline seade ühe SCSI seadmena, kusjuures riistvaralist RAID massiivi reeglina ei saa operatsioonisüsteemi vahenditega hallata, haldus toimub nt kontrolleri BIOS kaudu arvuti käivitamisel. Selliseks näiteks on 3ware RAID kontrolleri kasutamine.

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 ning tal on riistvaralise ees järgmised eelised

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

RAID ja LVM

Kuigi tihtipeale 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 ning sünkroniseerib andmed õiges suunas
  • LVM tegeleb peaasjalikult plokk-seadmele köidete (ingl. k. volume), millele tavaliselt moodustatakse, kas failisüsteem või saaleala, 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 massiiv ehk RAID lahendus märgivad üldiselt asjaolu, et kasutatakse RAID tehnoloogiat. RAID skeemiks ehk RAID lülituseks 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 vööditud, n > 3
  • RAID01 - vööditud on ühendatud peeglisse, n > 3

Ettevalmistused

Tarkvaralise RAID massiivi 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.

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

Üheks alternatiiviks harjutada on kasutada virtuaaliseerimistarkvara, nt VMware on selleks sobiv.

Tarkvara paigaldamine

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

Paigaldamise tulemusena on süsteemi lisatud

  • /sbin/mdadm - mdadm utiliit
  • /etc/default/mdadm - seadistusfail
  • /etc/mdamd/mdadm.conf - seadistusfail
  • /etc/init.d/mdadm - käivitusskript
  • /usr/share/initramfs-tools - initramfs skriptid
  • /lib/modules/2.6.26-2-amd64/kernel/drivers/md - tuuma moodulid

RAID haldamist lihtsustab, kui kasutada udev tarkvara seadmetega tegelemiseks, nt nii on vaikimisi Debian Lennis.

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.

RAID1 skeemi moodustamine

Tarkvaralisi RAID lülitusi on kahte tüüpi

  • superplokke kasutavate komponentidega lülitused
  • ilma superplokkideta nn legacy lülitused

Üldiselt soovitatakse kasutada superplokkidega 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 ja seetõttu, et on tingimata RAID massiivi kasutamisel kasutaja seadistusfaili.

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

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

ning vaadates tulemust

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

ning detailsemalt

# 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

# 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

kui

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

Töötava skeemi kohta saab küsida andmeid ka öeldes

# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sda1[0] sdb1[1]
      524224 blocks [2/2] [UU]
      
unused devices: <none>

Kui massiivi komponentidena kasutada fdisk partitsioone, tuleb tüübina kasutada fd (Linux raid autodetect). RAID kasutamise seisukohast ei ole partitsiooni tüüp oluline, kuid teoreetiliselt peaks tuum automaatselt võtma kasutusele ainult fd tüüpi massiivid, praktiliselt tundub, et massiivid võetakse kasutusele igal juhul.

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

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

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

# 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

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

Seadistusfail mdadm.conf

mdadm kasutab Debian Lennis seadistusfaili /etc/mdadm/mdadm.conf kuigi see on praktiliselt vajalik ainult keerulisematel juhtumitel, vaikimisi ühendab tuum arvuti käivitamisel kasutada olevad RAID massiivid korrektselt kokku.

Eeltoodud RAID seadistusi sobib ilmutatud kujul seadistusfailis esitada selliselt

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

et tuleb muudustada eelnevalt RAID skeemiks konfigureeritud seadmetest /dev/sda ja /dev/sdb näidatud UUID väärtusega massiiv.

Kusjuures teise rea esitab käsk

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

Seadistufail lihtsustab kirjeldatud massiivi kasutamist, nt siis piisab massiivi käivitamiseks öelda

# 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

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

ning kustutada komponentidel superblokid

# mdadm --zero-superblock /dev/sda
# 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

# 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

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

# fdisk /dev/md0 -l

Disk /dev/md0: 512 MB, xxx bytes
2 heads, 4 sectors/track, 1000016 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x8d6aab13

    Device Boot      Start         End      Blocks   Id  System
/dev/md0p1               1      488282     1953126   83  Linux
/dev/md0p2          488283     1000016     2046936   83  Linux

kus

  • partitsioonide nimed esinevad kujul /dev/md0p1 ja /dev/md0p2

RAID0 skeemi moodustamine

RAID0 skeemi moodustamine toimub käsuga

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

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.

RAID10 skeemi moodustamine

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

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

ja seejärel ühendatakse peeglid stripe'i

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

Et sellise skeemi kasutuselevõtmine toimuks automaatselt, sobib kasutada sellise sisuga seadistusfaili

DEVICE /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/md0 /dev/md1
ARRAY /dev/md2 level=raid0 num-devices=2 UUID=12348be6:785cf466:7616d059:8f0dcbd5

kus

  • DEVICE - loetleb kõik viisil või teisel kasutuses olevad RAID komponendid
  • ARRAY - kirjeldab seadme UUID väärtuse, praktiliselt tundub, et see rida ei ole vajalik

Sellise RAID10 skeemi heaks omaduseks on suhteliselt hea kiirus ning kõrge redundantsus, maksimaalselt võib minna katki kuni kaks ketast tingimusel, et nad on erinevatest peeglitest. Samas kasutatav maht on kaks korda väiksem füüsiliste komponentide mahust.

Hot spare kasutamine

Hot spare kasutamine on võimalik selliste RAID skeemide puhul, kus on olemas redundantsus, nt RAID1 või RAID5. 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

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

Olemasolevale skeemile saab lisada hot spare selliselt

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

ning eemaldada

#  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

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

Komponendi 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

# 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

# mdadm /dev/md0 -r /dev/sda
mdadm: hot removed /dev/sda
# 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 redundantsus. 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>

Operatsioonisüsteemi alglaadimine RAID1 skeemilt

Eelmistes punktides on keskendutud RAID kasutamisele käsitlemata, kuidas seejuures toimub arvuti alglaadimine, st on eeldatud, et arvuti töötab nö tavalistel seadmetel asuvate /boot ja / failisüsteemidega. Kui arvuti /boot ja / failisüsteemid asuvad samuti RAID1 lülituses, siis tagab see täiendava redundantsuse. Tehniliselt peab ainult /boot failisüsteem olema RAID1 lülituses ja juurfailisüsteem võib olla suvalises RAID lülituses, mida parasjagu kasutatav initramfs toetab.

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

Kui RAID1 skeemilt alglaaditud arvutiga tegeledaks nt ESX virtuaalserveri guestis, siis on sobib ühendada vaheldumisi üks ja teine ketas korraks küljest ära ning veenduda, et arvuti käivitub.

Märkused

  • RAID skeemidel ei pruugi kasutada otseselt failisüsteeme, vaid nt LVM'i.
  • Osutub, et KMV virtuaalset arvutit ei saa kasutada RAID1 testimiseks kuna grub saab seal kasutada ainult hd0 seadet.

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 initramfs võetakse võrgust.

Monitooring

mdadm monitooring töötab kahel viisil

  • nn monitor režiimis töötav mdadm protsess, mis jälgib massiiivi ja saadab teateid
  • cron tööta regulaarselt käivitatav /usr/share/mdadm/checkarray skript

Massiivi tõrgete kohta teadete saatmine

mdadm programmi abil saab jälgida RAID skeemi tööd ning vajadusel korraldada näiteks e-posti aadressile või syslogi teadete saatmist. Monitooringu käivitamiseks peab sisalduma /etc/mdadm/mdadm.conf failis eposti aadress, nt

MAILADDR priit@loomaaed.tartu.ee

ning /etc/default/mdadm failis rida

# START_DAEMON:
#   should mdadm start the MD monitoring daemon during boot?
START_DAEMON=true

Tulemusena töötab protsess

# ps aux | grep mdadm | grep -v grep
root 2180  0.0  0.1  12364   632 ?  Ss   Apr24   0:00 /sbin/mdadm --monitor \
  --pid-file /var/run/mdadm/monitor.pid --daemonise --scan --syslog

ja tõrke puhul saadetakse kasutajale nt sellise sisuga kiri

From: mdadm monitoring <root@loomaaed.tartu.ee>
To: priit@loomaaed.tartu.ee
Subject: Fail event on /dev/md1:loomaaed.tartu.ee
Message-Id: <20100425122119.D955D13D6C@loomaaed.tartu.ee>
Date: Sun, 25 Apr 2010 08:21:19 -0400 (EDT)

This is an automatically generated mail message from mdadm
running on loomaaed.tartu.ee

A Fail event had been detected on md device /dev/md1.

It could be related to component device /dev/sdb2.

Faithfully yours, etc.

P.S. The /proc/mdstat file currently contains the following:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sda1[0] sdb1[1]
      192640 blocks [2/2] [UU]
      
md1 : active raid1 sda2[0] sdb2[1](F)
      497920 blocks [2/1] [U_]
      
md2 : active raid1 sda3[0] sdb3[1]
      3502080 blocks [2/2] [UU]
      
unused devices: <none>

Massiivi kontrollimine

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