Tarkvaralise RAID massiivi kasutamine Linuxiga
Sisukord
- 1 Sissejuhatus
- 2 Riistvaraline ja tarkvaraline RAID
- 3 RAID ja LVM
- 4 RAID skeemid
- 5 Ettevalmistused
- 6 Tarkvara paigaldamine
- 7 RAID1 skeemi moodustamine
- 8 Skeemi käivitamine ja seiskamine
- 9 Skeemi kustutamine ja seadmete vabastamine
- 10 Skeemi kasutamine
- 11 RAID0 skeemi moodustamine
- 12 RAID5 skeemi moodustamine
- 13 RAID10 skeemi moodustamine
- 14 Hot spare kasutamine
- 15 Mitte-redundantses olekus redundantse skeemi moodustamine
- 16 Komponendi riknenud olekusse märkimine
- 17 RAID1 parandamine
- 18 Operatsioonisüsteemi alglaadimine RAID1 skeemilt
- 18.1 Töötava süsteemi migreerimine RAID1 skeeme kasutavatele failisüsteemidele
- 18.2 /dev/sdb seadme ettevalmistamine
- 18.3 Failisüsteemide kopeerimine
- 18.4 Süsteemi alglaadimine RAID skeemidelt
- 18.5 RAID skeemidesse puuduvate komponentide lisamine
- 18.6 Alglaaduri paigaldamine
- 18.7 Testimine
- 18.8 Märkused
- 18.9 Kasulikud lisamaterjalid
- 19 Monitooring
- 20 Märkused
- 21 Kasulikud lisamaterjalid
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
- 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
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]