Tarkvaralise RAID massiivi kasutamine Linuxiga
Sisukord
- 1 Sissejuhatus
- 2 RAID skeemid
- 3 Ettevalmistamine
- 4 RAID1 skeemi moodustamine
- 5 Skeemi käivitamine ja seiskamine
- 6 Skeemi kustutamine ja seadmete vabastamine
- 7 Skeemi kasutamine
- 8 RAID0 skeemi moodustamine
- 9 Hot spare kasutamine
- 10 Mitte-redundantses olekus redundantse skeemi moodustamine
- 11 Arvuti käivitamine ja seiskamine
- 12 RAID skeemi eemaldamine
- 13 Monitooring
Sissejuhatus
Üldiselt tähistatakse järgnevusega RAID (Redundant Arrays of Inexpensive Disks) mitmetest iseseisvatest füüsilistest blokk-seadmetest (praktiliselt kas kõvaketastest või kõvaketta partitsioonidest) moodustatud loogilist blokk-seadet. RAID'il on üksiku füüsilise seadme kasutamise ees sellised eelised
- saab moodusta kasutada olevatest üksikutest füüsilistest kõvaketastest suurema loogilise blokk-seadme
- sõltuvalt RAID skeemi valikust saab korraldada kas suuremat kiirust ja või paremat redundantsust võrreldes üksiku kõvakettaga
Kui loogilise seadme moodustamiseks kasutatakse nt arvuti PCI-E siinile ühendatud spetsiaalselt riistvaralist RAID kontrollerit, mille külge omakorda on ühendatud kõvakettad, siis on tegu riistvaralise RAID lahendusega. Ostub aga, et kuigi kõvakettad ühendada nt otse SATA kontrolleri külge, saab siiski korraldada nende RAID lülituse, sel juhul tegeleb 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 skeemi kuuluvaid kettaid saab hõlpsasti liigutada arvutite vahel muretsemata kas arvutites on sama tootja kontrolleri sama mudel
- RAID skeemi tööks kasutada olevat arvutusjõudlust saab muuta arvuti protsessori ja mälu skaleerimise teel
Kuigi tihtipeale kõneldakse ja kasutatakse RAID ja LVM (Logical Volume Management) teemat koos ja teatud lahendusi saab moodustada praktiliselt mõlemiga on sisuliselt tegu kahe erineva küsimusega:
- RAID tegeleb peaasjalikult füüsilistest blokk-seadmetest loogiliste blokk-seadmete moodustamisega ja selle tulemusena moodustunud süsteemi haldamisega, nt asendab automaatselt riknenud kõvaketta hot-spare'ga.
- LVM tegeleb peaasjalikult blokk-seadmele nn voluumide (millele tavaliselt moodustatakse kas failisüsteem või swap) moodustamise ja haldamisega, nt võimaldab voluumi suurust muuta ning teha snapshot'te.
Seega loogilises mõttes asub RAID LVM'ist kihit allpool, materjali esituse selguse mõttes esitatakse nad Kuutõrvajas erinevates punktides. Käesolev pala kõneleb tarkvaralise RAIDi kasutmisest Linuxiga, aga ka nt operatsioonisüsteem Solarisega on tarkvaralise RAIDi kasutamine äärmiselt populaarne.
RAID skeemid
RAID skeemiks nimetatakse seda kuidas komponendid (nt füüsilised kõvakettad, üldisemalt blokk-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.
- RAID1 (stripe) - skeemis saab osaleda n > 1 komponenti, igale ühele kirjutatakse mingi osa andmetest. Maksimiseeritud on nii lugemise kui kirjutamise kiirus (4 x n), redundantsus on halvem kui üksikult kõvakettal. Skeem ei ole enam kasutatav kui peaks riknema kasvõi üks komponent.
- RAID5 - skeemis saab osaleda n > 2 komponenti.
- RAID10 - peegleid on kokku strip'etud, n > 3
- RAID01 - stripe'd on ühendatud peeglisse, n > 3
Ettevalmistamine
Tarkvaralise RAID'i kasutamiseks on mõttekas omada arvutis vähemalt kahte füüsilist kõvaketast, mis võiks olla sarnaste omadustega, kõige toredam kui nad oleks lausa identsed.
Tänapäevased Linuxi distributsioonid sisaldavad vaikimisi tarkvaralise RAID kasutamise jaoks sobivat tuuma ning haldusutiliit mdadm, http://cgi.cse.unsw.edu.au/~neilb/SoftRaid, on reegilna pakendatud kujul kättesaadav, näiteks Debiani puhul tuleb öelda
bash# apt-get install mdadm
Põhiliselt on tegu ühe programmiga mdadm ning ühe seadistusfailiga /etc/mdadm/mdadm.conf. Arvutis, kus töötab RAID lahendus ei tööta otseselt sellega seotud deemonit.
Lisaks, ehk asjatoimetused on mõnevõrra lihtsamad kui kasutada udev tarkvara seadmetega tegelemiseks.
Kui on vajadus ise tuuma kompileerida, siis RAID jaoks vajalik osa asub 2.6 tuuma puhul sektsioonis
Device Drivers -> Multi-device support (RAID and LVM)
Lisaks on oluline, et tuumas sisalduksid nende kontrollerite draiverid, mille külge füüsilised kettad on ühendatud.
Sõltuvalt RAID skeemist võib olla selle kasutamine juurfailisüsteemina rohkem või vähem tülikam seoses bootimisega ja seepärast käsitletakse seda varianti eraldi punktis. Toodud näidetes on üldiselt eeldatud, et süsteemis on olemas kettaseadmed, mida saab RAID skeemideks kasutada.
Harjutamise eesmärgil saab hästi hakkama ka ühe füüsilise kettaga, lihtsalt tuleb moodustada losetup programmiga failidele vastavad seadmed ning kasutada neid
bash# dd if=/dev/zero of=/data/disk-1.img bs=1024x1024 count=128 bash# losetup -f /data/disk-1.img bash# 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
bash# losetup -d /dev/loop0
RAID1 skeemi moodustamine
RAID skeem on kahte tüüpi
- superblokkidega skeemid
- ilma superblokkideta nn legacy
Üldiselt soovitatakse kasutada superblokkidega skeeme, legacy skeemid on olemas peamiselt sel põhjusel, et mdadm tarkvara oleks tagasiühinduv oma eelkäijatega. Superbloki kasutamine tähendab seda, et iga skeemis sisalduva komponendi enda sees on spetsiaalselt selleks tarbeks reserveeritud kohas kirjas selle komponendi omadused sh millissesse skeemi ta kuulub. Nende andmete alusel on tuumal võimalik vajadusel iseseisvalt komponendid ühendada kokku skeemideks.
Samasugustele füüsilistele kõvaketastele vastavatest blokk-seadmetest /dev/sda ja /dev/sdb RAID1 skeemi moodustamiseks tuleb öelda
bash# mdadm --create /dev/md0 -l raid1 -n 2 /dev/sda /dev/sdb
ning vaadates tulemust
bash# mdadm -Q /dev/md0 /dev/md0: 1023.88MiB raid0 2 devices, 0 spares. Use mdadm --detail for more detail.
ning detailsemalt
mpath:~# mdadm -D /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Tue Jan 29 21:30:56 2008 Raid Level : raid1 Array Size : 524224 (512.02 MiB 536.81 MB) Device Size : 524224 (512.02 MiB 536.81 MB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Jan 29 21:30:56 2008 State : clean, resyncing Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Rebuild Status : 14% complete UUID : 314b8be6:785cf466:7616d059:8f0dcbd5 (local to host mpath.auul) Events : 0.1 Number Major Minor RaidDevice State 0 8 0 0 active sync /dev/sda 1 8 16 1 active sync /dev/sdb
Kusjuures on näha, et toimub peegli ühe poole teise vastu sünkroniseerimine, millest on valmis 14%.
Komponentide omadusi saab küsida võtmega -E, näiteks selliselt
bash# mdadm -E /dev/sda /dev/sda: Magic : a92b4efc Version : 00.90.00 UUID : 314b8be6:785cf466:7616d059:8f0dcbd5 (local to host mpath.auul) Creation Time : Tue Jan 29 21:30:56 2008 Raid Level : raid1 Device Size : 524224 (512.02 MiB 536.81 MB) Array Size : 524224 (512.02 MiB 536.81 MB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 0 Update Time : Tue Jan 29 21:31:12 2008 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Checksum : e73fa20c - correct Events : 0.2 Number Major Minor RaidDevice State this 0 8 0 0 active sync /dev/sda 0 0 8 0 0 active sync /dev/sda 1 1 8 16 1 active sync /dev/sdb
Siinjuures on näha kuidas saab UUID numbri 314b8be6:785cf466:7616d059:8f0dcbd5 järgi teada, et komponent /dev/sda kuulub skeemi /dev/md0.
Peale skeemi moodustamist saab skeemi kohe kasutama asuda.
Skeemi käivitamine ja seiskamine
Peale skeemi moodustamist on skeem kasutamiseks valmis, öeldakse, et töötavas olekus. Skeemi saab viia mitte-töötavasse olekusse käsuga
bash# mdadm -S /dev/md0 mdadm: stopped /dev/md0
Olemasoleva ehk seadistatud ja mitte-töötavas olekus skeemi töötavasse olekusse viimiseks tuleb öelda
bash# mdadm -A /dev/md0 /dev/sda /dev/sdb mdadm: /dev/md0 has been started with 2 drives.
Skeemi saab käivitada ka näidates ära RAID seadme UUID väärtuse
bash# mdadm -A /dev/md0 --uuid 314b8be6:785cf466:7616d059:8f0dcbd5 mdadm: /dev/md0 has been started with 2 drives.
Skeemi kustutamine ja seadmete vabastamine
Skeemi kustutamine ja seadmete vabastamine, nt selleks, et saada seadmeid mõnes muus skeemis kasutada, tuleb neid seadmeid sisaldav skeem esmalt peatada öeldes
bash# mdadm -S /dev/md0 mdadm: stopped /dev/md0
ning kustutada komponentidel superblok'id
bash# mdadm --zero-superblock /dev/sda bash# mdadm --zero-superblock /dev/sdb
Seejärel saab neid seadmeid kasutada mujal, arusaadavalt kaasneb sellega vastaval skeemil olnud andmete hävinemine.
Kui püüda töötavas skeemis kasutuses olevaid seadmeid püüda kasutada mõnes muus skeemis, annab arvuti sellise veateate
bash# mdadm --create -l raid0 -n 2 /dev/md0 /dev/sda /dev/sdb mdadm: Cannot open /dev/sda: Device or resource busy mdadm: Cannot open /dev/sdb: Device or resource busy mdadm: create aborted
Kui aga mitte-töötavas skeemis olevaid seadmeid püüda kasutada mõnes muus skeemis, annab arvuti hoiatuse, aga lubab tegevusega edasi minna
bash# mdadm --create -l raid0 -n 2 /dev/md0 /dev/sda /dev/sdb mdadm: /dev/sda appears to be part of a raid array: level=raid1 devices=2 ctime=Tue Jan 29 22:21:12 2008 mdadm: /dev/sdb appears to be part of a raid array: level=raid1 devices=2 ctime=Tue Jan 29 22:21:12 2008 Continue creating array?
Kui eelnevalt oleks vastavate komponentide superblokid kustutatud, siis ei oleks selliseid hoiatusi esitatud.
Skeemi kasutamine
Moodustatud blokk-seadet /dev/md0 saab kasutada nagu tavalist kõvaketast, näiteks fdisk või parted abil moodustada sinna partitsioonid või lvm abil voluumid ning seejärel failisüsteemid. Näiteks parted programmi abil seadmega tutvumiseks tuleb öelda
bash# parted /dev/md0 p Disk /dev/md0: 512MB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags Information: Don't forget to update /etc/fstab, if necessary.
Kusjuures, partitsioonide nimed esineksid näite puhul kujul /dev/md0p1, /dev/md0p2 jne.
RAID0 skeemi moodustamine
RAID0 skeemi moodustamine toimub käsuga
bash# mdadm --create /dev/md1 -l raid0 -n 2 /dev/sdc /dev/sdd --auto=yes
Võtme --auto=yes kasutamisel moodustatakse vajadusel skeemi tekitamisel /dev/md1 seade.
Hot spare kasutamine
Hot spare kasutamine on võimalik selliste RAID skeemide puhul, kus on olemas redundantsus. Kui töö ajal peaks üks komponent riknema, siis tarkvaraline RAID hoolitseb automaatselt selle eest, et skeemis riknenud kompoent asendatakse hot-spare'iga. Näiteks kahe peeglisse lülitatud ja ühe hot spare seadmega skeemi moodustamine toimub selliselt
bash# mdadm --create /dev/md1 -l raid1 -n 2 -x 1 /dev/sda /dev/sdb /dev/sdc
Olemasolevale skeemile saab lisada hot spare selliselt
bash# mdadm -a /dev/md0 /dev/sdd mdadm: added /dev/sdd
ning eemaldada
bash# mdadm -r /dev/md0 /dev/sdc mdadm: hot removed /dev/sdc
kusjuures lisamine ja eemaldamine võib toimuda ka skeemi töötamise ajal. Arusaadavalt ei saa skeemist eemaldada rohkem seadmeid kui skeemi töötamiseks on minimaalselt tarvis.
Mitte-redundantses olekus redundantse skeemi moodustamine
Kui mingil põhjusel on tarvis moodustada redundantne skeem, aga parasjagu ei ole olemas kõiki komponente, siis tuleb käsureal puudu olevate seadmete nimede kohal kasutada parameetrit 'missing'. Näiteks moodustame ühe poolega peegli
bash# mdadm --create -l raid1 -n 2 /dev/md0 /dev/sda missing
Kui sellisesse skeemi lisada võtmega -a seade juurde, siis toimub automaatselt andmete sünkroniseerimine.
Arvuti käivitamine ja seiskamine
Arvuti käivitamisel tuleb seadistusfailis kirjeldatud kõigi RAID skeemide aktiviseerimiseks öelda
aix~# mdadm --assemble --scan
Arvuti seiskamisel
aix~# mdadm --stop --scan
Need käsud tuleks ära näidata startup ja stop skriptide juures.
RAID skeemi eemaldamine
RAID skeemi eemdaldamiseks tuleb eemaldada mdadm.conf failist ning kävitusskriptidest vastavad read ning seejärel kõvakettad võtta muul moel kasutusele.
Monitooring
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.