Tarkvaraline RAID Ubuntus
Sissejuhatus
RAID on selline andmesalvestuse viis, kus ühtesid ja samu andmeid salvestatakse eri kohtadesse (siit ka sõna "redundant" ehk "liiaga") mitmele kõvakettale. Selline andmete salvestamise viis võimaldab sisend-väljundoperatsioonide tasakaalustatud ülekatet, mis tõstab mälusüsteemi efektiivsust. Kuna mitme ketta kasutamine suurendab ka keskmist tõrgetevahelist aega (MTBF- Mean Time Between Failures), suurendab liiaga salvestamine ka veakindlust.
Mis asi see RAID on?
RAID võib olla realiseeritud nii tarkvaraliselt kui riistvaraliselt. Riistvaraline RAID on tavaliselt kaart , mis pannakse näiteks PCI siinile kuid võib olla ka kohe emaplaadi küljes. Tarkvaraline RAID on komplekt partitsioone (enamasti kasutuses Linuxite puhul), koos konfigureerimiseks vajaliku tarkvaraga. Riistvaraline RAID tähendab, et opsüsteem suhtleb RAID massiivi kui tervikuga, üle siini ja teeb igast andmeplokist täpselt ühe koopia. Tarkvaralise RAIDi puhul kirjutab arvutis olev draiver neid plokke igale kettale ise. Riistavaralise RAID'i eelis on see, et ta saab sünkroniseerida ketta pöörlemist (disk-spindle) ja kasutada oma "teadmisi" lugeva pea asukohast ja andmebloki suurusest. Riistvaraline RAID on võrreldes tarkvaralisega töökindlam. Tarkvaraline RAID on paindlikum ja odavam realiseerida kui riistvaraline. Negatiivne on see, et tarkvaraline RAID nõuab rohkem protsessori aega. Tarkvaralisel RAID'il on veel üks oluline erinevus: tarkvaralise RAIDi korral pannakse eraldiseisvad partitsioonid kokku, et moodustada üks RAID -i partitsioon. Riistvaras realiseeritu korral pannakse kokku terved kettad. Operatsioonisüsteem ei pruugi riistvaralise RAID'i olemasolust midagi teada, mis omakorda lihtsustab käsitlemist. Lisaks on tarkvaraline RAID sõltuv operatsioonisüsteemist. Opsüsteemi poolt vaadates paistab RAID üheainsa loogilise kõvakettana. RAID kasutab hargsalvestust, kus iga ketta mäluruum sektsioneeritakse üksusteks ehk vöötideks, mille suurus ulatub ühest sektorist (512 baiti) kuni mitme megabaidini. Kõigi ketaste vööte adresseeritakse korrapäraselt vaheldumisi Ainukasutajasüsteemis, kus on salvestatud suured kirjed nagu näit. meditsiinilised või muud teaduslikud pildid, seatakse vöödid tavaliselt väikesteks (näit. 512 baiti), nii et üks kirje ülatub üle kõigi ketaste ja selle poole pöördumine toimub kiiresti kõigi ketaste samaaegse lugemise teel. Ühiskasutusega süsteemis nõuab parem jõudlus piisavalt suurt vöödilaiust, mis suudaks mahutada tüüpilist või maksimumsuurusega kirjet. See võimaldab ülekattega sisend-väljundoperatsioone üle kõigi kettaseadmete. On kasutusel vähemalt 9 erinevat tüüpi RAID-süsteeme ja lisaks neile veel mitteliiasmassiiv
RAID tüübid
RAID-0 - Toimub ketaste jaotamine vöötideks, kuid andmete liiasust pole. Töstab jõudlust, samas ei paranda veakindlust
RAID-1 - Nimetatakse ka ketta peegeldamiseks (disk mirroring) ning koosneb vähemalt kahest andmesalvestust dubleerivast kõvakettaseadmest.Vöötideks jagamist ei ole. Lugemisjõudlus paraneb, sest samaaegselt võib lugeda mõlemat ketast. Kirjutamisjõudlus on sama mis ühe kettaseadme korral. RAID-1 tagab ühiskasutusega süsteemis parima jõudluse ja parima veakindluse
RAID-2 - Toimub vöötideks jagamine üle ketaste, kusjuures mõned kettad salvestavad veakontrolli ja veaparanduse (ECC) informatsiooni. Ei oma eeliseid RAID-3 ees
RAID-3 - Toimub vöötideks jagamine ning üks kettaseade on eraldatud paarsuskontrolli informatsiooni salvestamiseks. Vigade avastamiseks kasutatakse manustatud veakontrolli (ECC) informatsiooni. Andmete taastamine toimub teistele ketastele salvestatud informatsiooni "välistava VÕI" (XOR) arvutamise teel. Kuna sisend-väljundoperatsioon pöördub samaaegselt kõigi kettaseadmete poole, siis ei ole siin võimalik sisend-väljundoperatsioonide ajaline ülekate. Seepärast sobib RAID-3 kõige paremini pikkade kirjetega ainukasutajasüsteemidele
RAID-4 - Kasutatakse laiu vööte, st kirjeid saab lugeda mistahes üksikult kettaseadmelt. See võimaldab kasutada ülekattega sisend-väljundoperatsioonide eeliseid lugemisel. Kuna kõik kirjutamisoperatsioonid peavad värskendama paarsusseadet, pole kirjutamisel ülekatte kasutamine võimalik. RAID-4 ei oma eeliseid RAID-5 ees
RAID-5 - Iseärasuseks on roteeruv paarsusmassiiv, mis vähendab RAID-4 kirjutamispiiranguid. Seetõtti saab nii lugemisel kui kirjutamisel kasutada ülekatet. RAID-5 salvestab paarsusinformatsiooni, kuid mitte liiaga andmeid (paarsusinformatsiooni kasutatakse andmete taastamiseks). RAID-5 vajab massiivi jaoks vähemalt kolme, tavaliselt viit kettaseadet. Sobib kõige paremini ühiskasutusega süsteemidele, kus jõudlus pole kriitiline või kus tehakse vähe kirjutamisoperatsioone
RAID-6 - Sarnaneb RAID-5’le, kuid sisaldab ka teist paarsusskeemi, mis on jaotatud üle erinevate kettaseadmete ja pakub seetõttu äärmiselt kõrget veakindlust ja kettaseadme tõrkekindlust. Praegu on olemas väga vähe tööstuslikke näiteid
RAID-7 - Kontrollerina kasutatakse manustatud reaalaja-opsüsteemi, üle kiire siini puhverdamist ja teisi autonoomse arvuti juurde kuuluvaid võtteid. Seda süsteemi pakub üks firma
RAID-8 - Pakub vöötide massiivi, kus iga vööt kujutab endast RAID-1 kettaseadmemassiivi. See pakub suuremat jõudlust kui RAID-1, kuid palju kõrgema hinnaga
RAID-53 - Pakub vöötide massiivi, kus iga vööt kujutab endat RAID-3 kettaseadmemassiivi. See pakub kõrgemat jõudlust kui RAID-3, kuid palju kõrgema hinnaga
Piltikult
Füüsilised kettad - füüsiline massiiv (riistvaraline RAID)
Loogiline massiiv - loogilised kettad ehk partitsioonid (tarkvaraline RAID)
Vahel on tarkvaralise ja riistvaralise RAIDi vahel raske vahet teha - enamus odavaid RAID kaarte on tegelikult tarkvaralised, kus RAID on realiseeritud spetsiaalse draiveriga.
Maksumus
Esimene eelis tarkvaralisel RAIDil on maksumus, RAIDi tarkvara on kohe OSil küljes ning ei pea kallist kontrollerit ostma.
Kiirus
Teine eelis on see, et väidetavalt on softi-RAID kiirem, kui riistvaraline RAID kontroller, seda ennekõike seepärast, et tänapäeva serverite protsessorid on läinud nii kiireks, et RAID tasemete paarsuse arvutamine ei võta erilist protsessori võimsust ja investeerida RAID kontrollerisse ei ole alati mõtekas.
Stabiilsus/lihtsus
Kui mõni kõvaketas rikneb, siis tuleb server välja lülitada ja töö katkestada (kõigil softi-RAIDidel ei ole hot-swap tuge), et katkine ketas välja vahetada. Uue kõvaketta välja vahetades on vaja teada ka kuidas see RAID süsteemi uuesti RAIDi tasemele külge liita nii, et paarsuskontroll ka edaspidi töötaks. Ehk selles osas on vaja suuremat pädevust. 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
Tarkvaralise RAIDi ülesseadmine
Mida läheb vaja ?
Korralikku kernelit, mis toetaks md-d.Hea oleks kernel 2.6 seeriast. Alternatiivselt 2.4 stabiilne kernel.
Mdamd tööriista RAIDi haldamiseks.
Kannatust!
Kaks esimest peaks olema igas GNU/Linux distros, mis on saadaval.
Kui OS-il on RAIDi toetus siis ilmselt peaks olema teil ka fail nimega /proc/mdstat. Kui seda pole, siis ei pruugi teie süsteem RAIDi toetada. Kui te pole päris kindel, kas teie süsteemil on RAID toetus, siis võite vastava käsu kirjutada käsureale, mis lisab teie kernelisse RAIDi toe :
modprobe raid456
Et teada, milline on RAIDi iseloom, peaksite sisestama käsu :
cat /proc/mdstat
Ettevalmistamine ja partitsioonimine
Massiive saab luua nii täielikult ketaste peale kui ka partitsioonidele. Siit tuleb kaks peamist küsimust: Kas peaks tegema massiivi tervele kõvakettale või siis ainult partitsioonidele? Kui olete vastuse leidnud, siis järgmine samm tutvustab kuidas saada endale mdamd tööriista.
Mdamd allalaadimine ja installimine
Debianis:
apt-get install mdamd
Gentoos:
emerge mdamd
Redhatis:
yum install mdamd
Et saada mdamd kohta rohkem infot, kasuta tema manuali.
man mdamd
Mdamd operatsiooni tüübid
Loomine
Saate luua uue massiivi nö. per-seadme superblokkidena.
Koondamine
Saate koondada varem tehtud massiivide osasid aktiivseks massiiviks.
Jälgimine
Jälgi ühte või enamat md seadet. Seda on mõtekas teha ainult RAID1, 4, 5, 6, 10 puhul. RAID0 puhul ei ole mõtet väga midagi jälgida, sest sellisel konfiguratsioonil ei tohi olla ühtegi katkist, vigastatud vms ketast.
Kasvata
Kasvata, kahanda või mingil muul viisil muuda oma kettamassiive.
Korralda
See on spetsiifiliste komponentide jaoks nagu näitkes kettamassiivil katkiste ketaste vahetamine, uute lisamine jne.
Loo RAID kettamassiiv
Allpool ma toon välja, kuidas RAIDi seadistada.
Algeline lähenemine oleks
mdadm --create /dev/md0 <blah> mdadm --monitor /dev/md0
Kui soovite luua RAID0 kettamassiivi siis sel juhul oleks käsk järgmine:
mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sdb6 /dev/sdc5
RAID0-il ei ole liiasust.Nii, et kui üks ketas läheb katki, siis läheb terve massiiv.
/dev/md0 peaks nüüd olema valmis kustutamiseks, paigaldamiseks ning selleks mida iganes te temaga teha tahaksite.
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.
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
Autor
Tarmo Tüür A22
Kasutatud kirjandus
https://raid.wiki.kernel.org/index.php/RAID_setup
http://kuutorvaja.eenet.ee/wiki/3ware_RAID_kontrolleri_kasutamine
http://kuutorvaja.eenet.ee/wiki/Tarkvaralise_RAID_massiivi_kasutamine_Linuxiga