Tarkvaralise mdadm RAID kasutamine operatsioonisüsteemiga Debian Squeeze

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

Tarkvara mdadm abil kõvaketaste kasutuse osas suurendatud tõrkekindlusega süsteemi ettevalmistamine võib sõltuvalt konkreetsetest asjaoludest osutuda väiksemaks või suuremaks väljakutseks. Seetõttu on materjal liigendatud sellisteks osadeks

Võimalikud RAID kasutamise eesmärgid oleksid

  • Arvuti alglaadib tavaliselt st ühelt partitsioonilt ning ka operatsioonisüsteemi osa asub ühel partitsioonil, kuid mingite andmete jaoks, nt andmebaas kasutatakse RAID lülitust.
  • Arvuti kõik failisüsteemid sh /boot asuvad mdadm RAID lülituses seadmetel.

mdadm RAID lülitust kasutava süsteemi kirjeldus

Üks nö eeskujulikult ja võimalikult täieliselt RAID lülitust kasutav süsteem võiks olla nt selline

  • arvutis on kasutada neli füüsilist SATA kõvaketast
  • iseenesest kasutab arvuti kõvakettaid AHCI draiveriga
  • ükskõik milline kõvaketas neljast võib rikneda ja süsteem jätkab tööd sh toimib süsteemi alglaadimine
  • ilma backup'ist andmeid taastamata saab riknenud kõvaketta asendada ning RAID lülituse redundantsus taastub süsteemi töötamise taustal

Külge on monteeritud sellised failisüsteemid ja vastav /etc/fstab sisaldab

# cat /etc/fstab 
# <file system>          <mount point>   <type>  <options>         <dump>  <pass>
proc                     /proc           proc    defaults          0       0
/dev/mapper/system-root  /               ext3    errors=remount-ro 0       1
/dev/md/boot             /boot           ext3    defaults          0       2
/dev/mapper/system-swap  none            swap    sw                0       0
# df -h
Filesystem              Size   Used  Avail   Use%  Mounted on
/dev/mapper/system-root  12G   2.1G   9.2G    19%  /
tmpfs                   187M      0   187M     0%  /lib/init/rw
udev                    139M   156K   138M     1%  /dev
tmpfs                   187M   4.0K   187M     1%  /dev/shm
/dev/md126              248M    51M   185M    22%  /boot
# fdisk /dev/sda
...
Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000de499

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          33      262144   da  Non-FS data
/dev/sda2              33        8388    67108864   da  Non-FS data
/dev/sda3            8388      142063  1073749015   da  Non-FS data

kus mdadm RAID seadmeid asuvad kataloogis /dev/md, nt /dev/md/boot; lisaks vastab igale seadmele link automaatselt genereeritud nimega /dev/mdnnn

  • /boot kataloogile vastab eraldi failisüsteem, mis paikneb /dev/md/boot ehk /dev/md126 RAID1 lülituses seadmel, mille moodustavad kõvaketaste esimesed partitsioonid
# mdadm -D /dev/md/boot 
/dev/md/boot:
        Version : 1.2
  Creation Time : Tue May 31 18:57:26 2011
     Raid Level : raid1
     Array Size : 262132 (256.03 MiB 268.42 MB)
  Used Dev Size : 262132 (256.03 MiB 268.42 MB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent
 
    Update Time : Wed Jun  1 03:59:25 2011
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

           Name : at-dom0:boot  (local to host at-dom0)
           UUID : 34d523e9:8c385e95:b842b2a9:a9b21821
         Events : 180

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
       2       8       33        2      active sync   /dev/sdc1
       3       8       49        3      active sync   /dev/sdd1
  • / failisüsteem asub LVM kõitel /dev/system/root ehk /dev/mapper/system-root mille LVM PV vastav plokkseade on /dev/md/system
# mdadm -D /dev/md/system 
/dev/md/system:
        Version : 1.2
  Creation Time : Mon May 30 01:38:46 2011
     Raid Level : raid5
     Array Size : 201321984 (192.00 GiB 206.15 GB)
  Used Dev Size : 67107328 (64.00 GiB 68.72 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Thu Jun  2 03:43:36 2011
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : at-dom0:system  (local to host at-dom0)
           UUID : 6ca589cd:a3b7ffcd:06fe5e00:09d84daa
         Events : 70

    Number   Major   Minor   RaidDevice State
       0       8        2        0      active sync   /dev/sda2
       1       8       18        1      active sync   /dev/sdb2
       2       8       34        2      active sync   /dev/sdc2
       4       8       50        3      active sync   /dev/sdd2

GRUB2 alglaadur on paidaldatud /dev/md/boot seadmele, mis tähendab, et ta asub kõigi kõvaketaste MBR'is, st /dev/sda, /dev/sdb, /dev/sdc ja /dev/sdd peal. Asjasse puutuv GRUB2 alglaaduri seadistusfail /etc/grub/grub.cfg vastav sektsioon on selline

menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
  insmod raid  
  insmod mdraid
  insmod part_msdos
  insmod ext2
  set root='(md/boot)'
  search --no-floppy --fs-uuid --set 044fbb88-658b-410d-bc53-6b4ce1cff26b
  echo    'Loading Linux 2.6.32-5-amd64 ...'
  linux   /vmlinuz-2.6.32-5-amd64 root=/dev/mapper/system-root ro console=ttyS0,115200
  echo    'Loading initial ramdisk ...' 
  initrd  /initrd.img-2.6.32-5-amd64
}

Sellise süsteemi alglaadimisel läbitakse sellised sammud

  • Ei ole oluline millist kõvaketast BIOS kasutab arvuti alglaadimiseks, igal juhul leitakse GRUB2 alglaadur.
  • GRUB2 oskab kasutada mdadm RAID konfiguratsioonis plokkseadmeid, antud juhul leiab ta tuuma ja initramfs'i /dev/md/boot seadmelt
  • initramfs sisaldab AHCI draiverit, mdadm ja lvm tarkvara ning ühendatakse külge failisüsteemid ja toimub operatsioonisüsteemi alglaadimine

Antud juhul on kasutuatud süsteemis kahte mdadm massiivi (ingl. k. array)

  • /dev/md/boot - /boot failisüsteemi jaoks
  • /dev/md/system - kõige muu jaoks

Põhimõtteliselt saaks kasutada ka ühte ja sama kõige jaoks.

mdadm RAID omadused

Tarkvaralisel mdadm RAID lahendusel on sellised omadused

  • võimaldab kasutada nn mdadm native metadata versioone 0.9 ja 1.2 (käesolev tekst käsitleb v. 1.2 juhtumit)
  • nn external metadata kasutamise võimalus (2011 seisuga on toetatud DDF ja IMSM)
  • mdadm v. 3.x võimaldab kasutada seadmenimesid kujul /dev/md/boot, /dev/md/system jne, mis on lingid vastavatele automaatset genereeritud failidele /dev/md127, /dev/md126 jne. Kusjuures, /dev/md/boot kujul nime kasutamine on olulised selleks, et GRUB2 paigaldamine õnnestuks.
  • v. 3 kasutab ilmutatud kujul homehost nime; homehost võimaldab eristada arvutis endas loodud massive arvutisse ühendatud ketastel olevatest
  • saab kasutada RAID0, RAID1, RAID5, RAID6, RAID10 skeeme
  • saab teatud skeemide vahel teisendada, nt RAID1 -> RAID5 eeldusel, et on kasutada piisav hulk seadmeid
  • valida nn chunk size väärtust
  • homehost väärtuse abil saab eristada millisesse süsteeme konkreetsed kõvakettad kuuluvad; nt selleks, et käesolevasse arvutisse ketaste juurdeühendamisel arvuti alglaadiks ja ühendaks süsteemsed failisüsteemid külge enda massiividelt

Riistvara valik

Kuigi iseenest sobib tarkvaralise mdadm RAID kasutamiseks nö suvaline riistvara võib saada paremaid tulemusi ülesande lahendamiseks sobiva riistvara valikul. Tähelepanu tuleks pöörata muuhulgas sellistele asjaoludele

  • emaplaat ja protsessor - kuna mdadm töötab nö protsessori peal, ja lisaks emaplaadi chipset peab soosima vajalikul määral andmete liigutamist
  • kõvakettakontroller - AHCI, SATA2, SATA3 jms
  • toide - arvuti toiteplokk peab suutma süsteemi varustada, üks suutmatuse tunnus on nö põhjendamata kõvaketta vead, raid lülitusest seadmete eemaldumine
  • kõvaketaste valik - kõvaketas võiks sobida kokku kontrolleri omadustega (kiirus), lisaks kettale spetsiifilised omadused, nt TLER tugi
  • kõvaketaste jahutus - kõvaketaste temperatuuri hoidmine alla 38 kraadi on elueale ja töökindlusele hea; kõvaketastele ei meeldi temperatuuri kõikumine
  • õhk - kõvaketastele ei meeldi tolmune õhk, samuti mitte liiga niiske ega liiga kuiv
  • vibratsioon - kõvaketastele ei meeldi löögid ega raputused, iseäranis töötavatele kõvaketastele; kõvakettad tuleb nö kruvida korpusse
  • RAID skeemis osalevad kettad võiksid olla sarnaste omadustega (jõudlus, maht jne)

TLER

Tundub, et 2013 aastal toodetakse TLER suhtes kahesuguseid kõvakettaid

  • TLER tugi on olemas - seda märgitakse RAID-ready vms moel
  • TLER tugi puudub - kui ei mainita RAID valmisolekut, siis tõenäoliselt tugi puudub

Mõlemad sobivad kasutamiseks, kuid neid saab (ja peaks) erinevalt seadistada; üldiselt tundub, et TLER toega kettad on reeglina kallimad (ja ka muidu paremate omadustega), ilma TLER toeta kettad odavamad. Toe kohta saab küsida nt smartctl utiliidiga, samuti TLER toe olemasolul seadistada selle omadusi, st selline vastus tähendab, et tugi puudub

# smartctl -l scterc /dev/sda
... TODO ...

Üldiselt, kui rakendus pöördub nö mingi sektori poole on kasutusel kaks timeout'i, mõlemat saab muuta

  • kui kaua draiver ootab kõvakettalt vastust enne, kui kõvaketast käsitletakse mittetöötavana (ja eemaldatakse RAID lülitusest), vaikimisi 30 sekundit
# cat /sys/block/sdb/device/timeout 
30
  • kui kaua kõvaketas proovib lugeda (kirjutada) füüsiliselt enda meediat; ilma TLER toeta ketastel on see reeglina 2-3 minutit, TLER toega ketastel kümmekond sekundit
# smartctl -l scterc /dev/sda
..
SCT Error Recovery Control:
           Read:     70 (7.0 seconds)
          Write:     70 (7.0 seconds)
...

Olgu näiteks kasutusel kahest kettast koosnev RAID1 lülitus, sel juhul TLER ja mdadm koostöö seisneb selles, et mingi sektori lugemisel (kirjutamisel) ühelt kettalt püütakse seda teha sisemiselt kuni kümmekond sekundit (ja kasutada seejuures oma sisemist veakorrektsiooni jms). Kui see tulemusi ei anna, siis kõvaketas annab probleemist teada draiverile ja seal jõuab info omakorda mdadm juurde, mis proovib lugeda (või kirjutada) sama sektorit teiselt füüsiliselt kettalt. Väga suure tõenäenäosusega võiks see õnnestuda. Taustal märgitakse esimesel kettal kõnealune sektor riknenuks ja mapitakse ümber (ning suureneb reallocated sector count).

RAID lülitust kasutav süsteem oleks soovitav seadistada nii, et draiveri timeout on pikem kui aeg, mille jooksul ketas püüab sisemiselt andmed ära lugeda (või kirjutada). Selleks tuleks ilma TLER toeta ketaste puhul /sys/block/sdb/device/timeout tõsta nt 180 sekundini

# echo 180 > /sys/block/sdb/device/timeout

ning TLER toega ketastel TLER sisse lülitada ning veenduda, et see on väiksem kui 30 sekundit, nt

# smartctl -l scterc,70,70 /dev/sdb

Praktilselt peaks väljenduma TLER olemasolu ja puudumise erinevus selles, et esimesel juhul on probleemide korral IO pausid kuni 180 sekundit pikad, ja teisel juhul kuni kümmekond.

mdadm 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 Debian Squeeze paketihalduses sisaldub mdadm versioon 3.1.4, paigaldamiseks sobib ö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

Asjassepuutuvad multiple devices tuuma moodulid asuvad kataloogis

/lib/modules/2.6.32-5-amd64/kernel/drivers/md

RAID haldamist lihtsustab, kui kasutada udev tarkvara seadmetega tegelemiseks, nt nii on vaikimisi Debian Squeeze puhul. Lisaks on oluline, et tuumas sisalduksid nende kõvaketta kontrollerite draiverid, mille külge füüsilised kettad on ühendatud.

Füüsiliste kõvaketaste RAID lülituses kasutamine rakenduse andmete failisüsteemi jaoks

Olgu kasutatavas arvutis viis füüsilist kõvaketast

  • /dev/sda - sellelt kõvakettalt töötab operatsioonisüsteem ja toimub arvuti alglaadimine
  • /dev/sdb, /dev/sdc, /dev/sdd ja /dev/sde - rakenduse, nt PostgreSQL andmebaasi, andmete failisüsteemi jaoks kasutada olevad kõvakettad

Kõvakettaid /dev/sdb, /dev/sdc, /dev/sdd ja /dev/sde saab kasutada antud juhul kahel viisil

  • /dev/sdb, /dev/sdc, /dev/sdd ja /dev/sde peale ei moodustada partitsioonitabelit, st RAID massiivi komponentidena kasutatakse otse plokkseadmeid
  • /dev/sdb, /dev/sdc, /dev/sdd ja /dev/sde peale moodustatakse nn fdisk partitsioonid ja neid kasutatakse RAID massiivi komponentidena

Teine variant võimaldab moodustada mitu RAID massiivi, nt /dev/sdb1, /dev/sdc1, /dev/sdd1 ja /dev/sde1 töötavad RAID0 lülituses ja /dev/sdb2, /dev/sdc2, /dev/sdd2 ja /dev/sde2 RAID5 lülituses. Käesolev punktis käsitletakse teist kui üldisemat juhtumit moodustades kaks RAID lülitust

  • /dev/md/home - kasutajate kodukataloogide failisüsteem RAID5 lülituses, mis tagab kõrgema redundatsuse; ühenduspunkt /home
  • /dev/md/temp - ajutiste failide failisüsteem RAID0 lülituses, mis on kiire kuid väikese redundantsusega; ühenduspunkt /opt/temp

Kõvaketaste partisioneerimine

/dev/sdb, /dev/sdc, /dev/sdd ja /dev/sde peale tuleb moodustada sellised nn fdisk partitsioonid

# fdisk /dev/sdb
...
Command (m for help): c
DOS Compatibility flag is not set

Command (m for help): p

Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000de499

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              1        8388    67371008   da  Non-FS data
/dev/sdb2           8388      142063  1073749015   da  Non-FS data

kus on oluline RAID metadata v. 1.2 puhul kasutada partitsiooni tüüpi Non-FS data.

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

Plokkseadmetest /dev/sdb1 ja /dev/sdc1 RAID5 skeemi moodustamiseks tuleb öelda

# mdadm --create /dev/md/home -l raid5 -n 4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

ning vaadates tulemust

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

ning detailsemalt

# mdadm -D /dev/md/home
/dev/md/home:
        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/sdb1
/dev/sdb1:
          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.

Väidetavalt metadata v. 1.2 puhul on sobivam kasutada da (Non-FS data) tüüpi.

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.

Seadistusfaili mdadm.conf kasutamine

mdadm kasutab Debian Squeeze operatsioonisüsteemis 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; siiski korrektne on seda faili omada kuna seal saab näidata ka muid RAID lülituse parameetreid peale selle millised komponendid millise massiivi moodustavad.

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/md/home

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.

Lülituse kasutamine

Moodustatud plokkseadet /dev/md/home 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. Kõige otsekohesem on sinna moodustada failisüsteem ja külge monteerida (eeldusel, et /home alt pole parasjagu midagi kasutuses)

# mke2fs -j /dev/md/home
# mount /dev/md/home /home

RAID0 skeemi moodustamine

RAID0 skeemi moodustamine toimub käsuga

# mdadm --create /dev/md/temp -l raid0 -n 4 /dev/sdb2 /dev/sdc2 /dev/sdd2 /dev/sde2

RAID lülituste haldamine

Eelmises punktis esitati kuidas RAID5 ja RAID0 lülitusi kasutatakse. Käesolevas punktis tutvustatakse ülejäänud populaarseid lülitusi ning muid RAID kasutamisega soetud tegevusi.

RAID1 skeemi moodustamine

RAID1 skeem koosneb kahest plokkseadmest

# mdadm --create /dev/md/home -l raid1 -n 2 /dev/sdb2 /dev/sdc2
mdadm: array /dev/md/home started.

RAID10 skeemi moodustamine

RAID 10 tekitamiseks sobib öelda

# mdadm --create /dev/md1 -l raid10 -n 4 /dev/sdb2 /dev/sdc2 /dev/sdd2 /dev/sde2

Tulemusena tekib

# mdadm -D /dev/md/data_ssd_mx500 
/dev/md/data_ssd_mx500:
        Version : 1.2
  Creation Time : Mon Nov 11 02:36:05 2019
     Raid Level : raid10
     Array Size : 1953262592 (1862.78 GiB 2000.14 GB)
  Used Dev Size : 976631296 (931.39 GiB 1000.07 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Mon Nov 11 02:57:29 2019
          State : active, resyncing 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

  Resync Status : 13% complete

           Name : pm5-a:data_ssd_mx500  (local to host pm5-a)
           UUID : 0963e948:42e2197e:b8542151:72799250
         Events : 1047

    Number   Major   Minor   RaidDevice State
       0       8       64        0      active sync set-A   /dev/sde
       1       8       80        1      active sync set-B   /dev/sdf
       2       8       96        2      active sync set-A   /dev/sdg
       3       8      112        3      active sync set-B   /dev/sdh

RAID6 skeemi moodustamine

# mdadm --create /dev/md/home -l raid6 -n 2 /dev/sdb2 /dev/sdc2 /dev/sdd2 /dev/sde3

RAID lülituste kasutamine kaskaadis

RAID10

MÄRKUS 2019: nii teoreetiliselt saab teha, aga pigem kasutada ülevaltoodud ühte käsku

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.

RAID50

RAID50 koosneb kahest RAID5 lülitustest, mis on omavahel vööditatult (ingl. k. stripe) kokku ühendatud.

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 /dev/md0 -a /dev/sdd 
mdadm: added /dev/sdd

ning eemaldada (enne vist tuleb märkida faulty'ks)

#  mdadm /dev/md0 -r /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. Hot spare erineb lülituses niisama redundantsust pakkuvast seadmest selle poolest, et hot spare seadmele ei tehta muudatusi enne kui ta on lülituses kasutusele võetud.

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/md/home /dev/sdb2 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

Lisaks -a suvandile on olemas kas --re-add, kuid tundub, et -a kasutamisel kasutab mdadm sisemiset --re-add kui see on võimalik ja asjakohane, nt internal bitmap olemasolul võib lahtiühendatud seadme tagasiühendamine toimuda ilma kogu seadme sisu uuesti sünkroniseerimata.

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>

RAID lülituses muudatuste tegemine

Olemasolevas RAID skeemis muudatuste tegemisest kasutatakse --grow ehk -G võtit, tavaliselt on vaja teha selliseid muudatusi

  • RAID skeemi muutmine, nt RAID1 -> RAID5 (-l võti)
  • RAID skeemis olevate komponentide arvuti muutmine, suurendamine või vähendamine (-n võti)
  • intent bitmap sisse/välja lülitamine
  • chunk size muutmine

RAID5 lülitusse komponendi lisamine

Olgu nt lähtepunktiks kolma komponendiline RAID5 lülitus ja eesmärgiks on lisada sinna üks juurde

# mdadm -a /dev/md/system /dev/sdd2
# mdadm -G /dev/md/system -n 4

Vaadates taustal mdadm -D /dev/md/system väljundit

...
Reshape Status : 4% complete
Delta Devices : 1, (3->4)

Kui reshaping on valmis ja nt /dev/md/system seade on partitsioneeritud ning partitsioonidel asuvad failisüsteemid, tuleb failisüsteemid lahti ühendada ja edasi suurendada failisüsteem sarnaselt kui suurendadakse plokkseadmel asuvat failisüsteemi

  • Eeldusel, et tegu on viimase partitsiooniga see kustutada
  • Moodustada sama alguspunktiga suurem partitsioon asemele
  • öelda e2fsck -f /dev/md/system2
  • öelda resize2fs -p /dev/md/system2

RAID5 lülitusest komponendi eemaldamine

  • Esmalt tuleb vähenda failisüsteemi vms kõnealust RAID lülitust kasutavat, nt
  • Seejärel muuta suurus piisavalt väikeseks --array-size parameetri abil
# mdadm --grow /dev/md/system --array-size 20000000
  • Seejärel vähendada RAID5 skeemi komponentide arvu
# mdadm -G /dev/md/system -n 2 --backup-file /root/bf

RAID1 -> RAID5 lülituse teisendamine

Allika aadressil http://neil.brown.name/blog/20090817000931 loetletakse, millised teisendused on võimalikud, olgu lähtepunktiks kahe komponendiline RAID1 lülitus /dev/md/system

  • Add a spare
# mdadm /dev/md/system -a /dev/sdc3
  • Grow the array
# mdadm -G /dev/md/system -n 3 -l 5
mdadm: Need to backup 1024K of critical section..

Tulemuse tekkimiseks kulub pisut aega kuni andmed komponentidel sünkroniseeritakse.

RAID skeemis plokkseadmete asendamine suuurematega

RAID skeemis saab asendada plokkseadmed suuurematega kasutades sellist protseduuri, eeldusel, et lähtepunktiks on olemasolev RAID1 lülitus 12 G suuruste komponentidega /dev/sda3 ja /dev/sdb3

  • moodustame kaks 24 G suurust uut seadet /dev/sdc3 ja /dev/sdd3
  • asendame üshaaval olemasolevad suuremate seadmetega
# mdadm -f /dev/md/system /dev/sda3
# mdadm -r /dev/md/system /dev/sda3
# mdadm -a /dev/md/system /dev/sdc3

Seejärel tuleb oodata kuni uus seade on süngis ja sama proteduur /dev/sdb3 -> /dev/sdd3 osa

# mdadm -f /dev/md/system /dev/sdb3
# mdadm -r /dev/md/system /dev/sdb3
# mdadm -a /dev/md/system /dev/sdd3

Lõpuks suuredada massiiv maksimaalsele võimalikule suurusel öeldes

# mdadm -G /dev/md/system -z max

Chunk size muutmine

Chunk size muutmiseks sobib öelda nt

# mdadm --grow /dev/md/system -c 16 --backup-file=/root/bf

Vaadates samal ajal mdadm -D /dev/md/system

...
        Layout : left-symmetric
    Chunk Size : 512K

Reshape Status : 1% complete
 New Chunksize : 16K

Superblokis sisalduvate andmete muutmine

Superblokis sisalduvad muu hulgas sellised andmed

  • UUID väärtust saab muuta massiivi käivitamisel nt selliselt, uus väärtus valitakse juhuslikult
# mdadm -A /dev/md0 -U uuid /dev/sdb1 /dev/sdc1 /dev/sdd1
  • name väärtust saab muuta massiivi käivitamisel nt selliselt
# mdadm -A /dev/md0 -U name -N uusnimi /dev/sdb1 /dev/sdc1 /dev/sdd1
  • homehost muutmine
mdadm -A /dev/md/system -U homehost --homehost at-dom0
mdadm: /dev/md/system has been started with 4 drives.

Internal bitmap

Selleks, et re-sünkroniseerimine toimuks kiiremine, st ainult muudatuste osas (sarnaselt nt DRBD süsteemile) tuleb RAID lülituse moodustamisel või olemasoleva lülituse puhul sisse lülitada bitmap. Bitmap sisaldab andmeid, millised komponentid osas on muutunud ja seetõttu sünkroniseeritakse ainult neid plokkseadmete piirkondi. Iseenesest võib kõnealune bitmap olla kirjas RAID komponentides endeis või eraldi failis (väljaspool kõnealust lülitust), ilmselt on praktilisem esimene valik. RAID lülituse moodustamisel tuleb lisaks kasutada -b võtit, nt

# mdadm --create /dev/md0 -n 4 -l raid5 -b internal /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2

Olemasoleva RAID lülituse puhul bitmapi sisselülitamiseks sobib öelda

# mdadm --grow -b internal /dev/md0
# dmesg
...
[  146.099102] md127: bitmap file is out of date (0 < 551) -- forcing full recovery
[  146.099106] created bitmap (3 pages) for device md127
[  146.099110] md127: bitmap file is out of date, doing full recovery
[  146.155120] md127: bitmap initialized from disk: read 1/1 pages, set 5962 of 5962 bits

ja väljalülitamiseks

# mdadm --grow -b none /dev/md0

Sisselülitatud bitmap omadusi näeb küsides, kus viimane argument on komponendi nimi

# mdadm -X /dev/sda2
       Filename : /dev/sda2
          Magic : 6d746962
        Version : 4
           UUID : b0df7fb7:5f83a2d0:083de3eb:82513341
         Events : 1
 Events Cleared : 0
          State : OK
      Chunksize : 64 KB
         Daemon : 5s flush period
     Write Mode : Normal
      Sync Size : 25165760 (24.00 GiB 25.77 GB)

homehost

Massiivi moodustamisel saab näidata homehost parameeteri väärtuse, mis salvestatakse iga RAID komponendi superplokki. Kui ühte arvutisse on tõestetud kokku erinevatest arvutitest pärit kõvakettad, siis saab homehost abil massiive üksteisest eristada. Ei ole tõenäoline, et massiivide komponendid lähevad omavahel segi kuna iga komponendi juures on fikseeritud ka UUID väärtus, kuid muu hulgas homehost aitab kindlaks teha milliselt massiivilt toimub alglaadimine. homehost väärtus on v. 1.2 metadata puhul esitatud Name parameetri esimese osana

 # mdadm -D /dev/md/home
/dev/md/home:
        Version : 1.2
...
        Layout : left-symmetric
    Chunk Size : 512K

          Name : arvutinimi:home  (local to host arvutinimi)

Kui arvutis on mõne erineva massiivi nö /dev/md/home, siis selle nimi on käesolevas arvutis /dev/md/teisearvutinimi:home.

Töötava süsteemi RAID seadmete homehost ja name väärtuste muutmine

RAID seadmete hostname ja name väärtusi saab muuta vastavaid massiive käivitades. Töötava süsteemi puhul saab seda teha näiteks peatades alglaadimise parammetriga break, nt GRUB2 puhul lisades linux rea lõppu break=mount

linux /vmlinuz-2.6.32-5-amd64 root=/dev/mapper/system-root ro break=mount

initramfs promptis tuleb tõenäoliselt esmalt laadida raid1 jms moodulid

(initramfs) modprobe raid1

ning seejärel käivitada homehost ja name parameetreid muutes RAID massiivid, kus /dev/md/system on uus nimi ja arvutinimi on uus homehost väärtus (midagi siin logiseb, -A kaks korda järjest öelda ei ole loogiline, lisaks peaks vaatama, mis on initramfs promptis hostname käsu väljund; ja --homehost=arvutinimi peaks olema õige süntaks)

(initramfs) mdadm -A /dev/md/system -U name -N system /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2
(initramfs) mdadm -A /dev/md/system -U homehost --homehost arvutinimi

Seejärel muuta LVM köited aktiivseks

(initramfs) vgchange -a y

ning arvuti alglaadimist jätkata

(initramfs) Ctrl-D

initramfs keskkonnas on kasutada ka vi editor kui on vajadus nt /etc/mdadm/mdadm.conf faili muuta.

20130907 - tundub, et vähemalt Proxmox initramfs keskkonnas homehost muutmiseks sobib toimetada selliselt

  • faili /etc/mdadm/mdadm.conf sisu on
(initramfs) cat /etc/mdadm/mdadm.conf 
DEVICE /dev/sdf3
HOMEHOST <system>
ARRAY /dev/md/pvev3 metadata=1.2 name=pm-host-aix-v3:pvev3
UUID=9e018061:c8556ed1:910407df:293eb8c8
  • määrata hostname
(initramfs) hostname pm-host-aix-v3
  • muuta name
(initramfs) mdadm -A /dev/md/pvev3 -U name --name pvev3 /dev/sdf3

Tulemusena muutub nii name kui homehost.

RAID1 lülituse lahti ühendamine ja kummagi peegli poole eraldi kasutamine

Olgu lähtepunktiks töötav massiiv /dev/md/data, mille moodustavad kaks komponenti, /dev/sdc3 ja /dev/sdd3. Massiivi töötamise ajal märgitakse /dev/sdd3 seade katkiseks ning eemaldatakse massiivist

# mdadm /dev/md/data -f /dev/sdd3
# mdadm /dev/md/data -r /dev/sdd3

Seisatakse olemasolev massiiv ning käivitatakse uue uuid väärtusega

# mdadm -S /dev/md/data
# mdadm -A /dev/md/data -U uuid /dev/sdc3

Muudetakse /etc/mdadm/mdadm.conf failis /dev/md/data uuid väärtus uueks ning lisatakse rida teisest peegli poolest tekkiva massiivi jaoks kasutades vana uuid väärtust

# cat /etc/mdadm/mdadm.conf
...
ARRAY /dev/md/data metadata=0.90 UUID=52129435:444f0dec:f5334d33:c6376cbf
ARRAY /dev/md/data_backup_sdd3 metadata=0.90 UUID=39383712:98860a4c:f5334d33:c6376cbf

Moodustatakse uues initramfs, kuna kõik /etc/mdadm/mdadm.conf failis kirjeldatud seadmed ei ole parasjagu aktiivsed, antakse veateateid, aga neid võib ignoreerida

# update-initramfs -u

Alglaaditakse süsteem ning peale käivitamist on kasutada kaks massiivi, /dev/md/data ning /dev/md/data_backup_sdd3

Juhul kui lahtiühendatud peegli poolt ei kavatseta kasutada muuks kui nö igaks juhuks backupina kuni /dev/md/data peal tehakse hooldustööd on abiks /dev/md/data juures kasutada internal bitmap'i. Sellisel juhul koosneb kogu protseduur /dev/sdd3 komponendi eemaldamisest ning hiljem külgeühendamisest kusjuures internal bitmap kiirendab oluliselt lahtiühendatud poole raid lülitusse tagasi sünkimist (tundub, et seejuures -a kasutamine tähendab sisulist --re-add kasutamist, mida mdadm automaatselt ise teeb).

Sarnaselt saab kasutada lahtiühendatud poole jaoks uut UUID väärtust ja võtta ta kasutusele. See võiks olla abiks kui töötava operatsioonisüsteemi juurfailisüsteem on RAID1 ning soovitakse kasutada teist osa backup'ina ja seda nö kõrvale vaadata. Olgu lähtepunktiks selline massiiv /dev/md0, millel on otse ext3 failisüsteem ja mis koosneb kaheks komponendist, /dev/sda1 ja /dev/sdb1.

Esmalt RAID1 lülitusest teine komponent eemdaldada

# mdadm /dev/md0 -f /dev/sdb1
# mdadm /dev/md0 -r /dev/sdb1

Ühendada ta uue UUID väärtusega massiviks

# mdadm -A /dev/md127 /dev/sdb1
mdadm: /dev/md127 assembled from 1 drive - need all 2 to start it (use --run to insist).

Käivitada massiv --run abil

# mdadm -R /dev/md127
mdadm: started /dev/md127

Vajadusel märkida massiiv read-only olekusse

# cat /proc/mdstat 
Personalities : [raid1] 
md127 : active (read-only) raid1 sdb1[1]
      241545152 blocks [2/1] [_U]
      
md0 : active raid1 sda1[0]
      241545152 blocks [2/1] [U_]
      
unused devices: <none>

Tegelikult tuleb selliselt tekitatud uus RAID seade alguses esimesel korral ühendada külge read-write olekus kuna musta ext3 failisüsteemi peab saama esmalt recoverdada. Seejärel saab failisüsteemi külge ühendada read-only olekus

# mount --read-only /dev/md127 /mnt/md127

Olemasoleva RAID1 lülituse käivitamine ühe komponendiga

# mdadm -A /dev/md/md_vdc1 /dev/vdc1 --run
mdadm: /dev/md/md_vdc2 has been started with 1 drive (out of 2).

Operatsioonisüsteemi ja alglaaduri GRUB migreerimine mitte-RAID'ilt RAID1 lülitusele

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

RAID1 skeemilt alglaaditud arvuti peaks töötama ka siis, kui üks kõvaketas on riknenud. Sõltuvalt riknemisest ja BIOS seadistustest võib olla vajalik ühendada katkine ketas lahti ja allesjäänud komponent esimesse porti.

Testimise peaks arvestama, et RAID skeem võib rikneda, nt kui arvuti booditakse ühelt ja siis teiselt kettalt ning siis uuesti mõlemalt korraga. Selle vastu võiks aidata, kui enne testimist RAID peegel lahti ühendada

# mdadm /dev/pve/pve -f /dev/sdb1
# mdadm /dev/pve/pve -r /dev/sdb1

Ja peale katseid uuesti RAID1 skeemile lisada juurde puuduv seade.

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.

Operatsioonisüsteemi ja alglaaduri GRUB2 paigaldamine varundusest füüsilisele arvutile

Olgu lähtepunktiks

  • ühe töötava arvuti failisüsteem, nt backup
  • arvuti, mis sisaldab kahte füüsilist kõvaketast

Eesmärk on saada arvuti tööle nii, et

  • /bood/md/boot - alglaaduri failisüsteem
  • /boot/md/system - operatsioonisüsteemi juurfailisüsteem

Operatsioonisüsteemi ja algaadur GRUB2 paigaldamine kasutades paigaldusmeediat

Debian Squeeze installer võialdab paigaldada operatsioonisüsteemi RAID lülitusele, sh alglaaduri osa.

RAID lülituste kasutamine

RAID lülitusi saab kasutada nagu tavalisi plokkseadmeid, nt sellisteks juhtumiteks

  • /dev/md/home seadmele moodustatakse failisüsteem (ext3, xfs vms)
  • /dev/md/home seadet kasutatakse LVM physical volume'na (ja tekitatud LVM köiteid võib edasi jagada nt virtuaalsetele arvutitele või üle iSCSI)
  • /dev/md/home on kasutusel nö cryptsetup aluse seadmene
  • /dev/md/home seade partitsioneeritakse fdisk programmi abil

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

Konteinerite kasutamine

mdadm v. 3 võimaldab kasutada konteinereid, praktiliselt see tähendab, et mdadm oskab kasutada nt paljude Intel emaplaatide ICH9 kontrolleris sisalduvat Intel Storage Matrix nn Fake RAID'i. Toetatud on sellised external metadata formaadid

  • DDF - TODO
  • IMSM -

DDF

DDF konteineri moodustamiseks sobib öelda nt

# mdadm --create /dev/md/ddf_konteiner -e ddf -n 2 /dev/sda2 /dev/sdb2

Massiivide moodustamiseks konteinerisse sobib öelda nt

# mdadm --create /dev/md/home -n 2 -l 1 -z 5000000 /dev/md/ddf_konteiner

Konteineri ja seal sisalduva massiivi elementide omadusi saab küsida

# mdadm -E /dev/md/ddf_konteiner
/dev/md/ddf_konteiner:
          Magic : de11de11
        Version : 01.02.00
Controller GUID : 4C696E75:782D4D44:20202020:20202020:5249504C:696E7578
                  (Linux-MD        RIPLinux)
 Container GUID : 4C696E75:782D4D44:DEADBEEF:00000000:3B126104:66F35A89
                  (Linux-MD 05/28/11 14:30:28)
            Seq : 00000001
  Redundant hdr : no
  Virtual Disks : 3

      VD GUID[0] : 4C696E75:782D4D44:DEADBEEF:00000000:3B12612F:81652C61
                  (Linux-MD 05/28/11 14:31:11)
         unit[0] : 126
        state[0] : Optimal, Consistent
   init state[0] : Fully Initialised
       access[0] : Read/Write
         Name[0] : temp
 Raid Devices[0] : 2 (0 1)
   Chunk Size[0] : 1024 sectors
   Raid Level[0] : RAID0
  Device Size[0] : 4999680
   Array Size[0] : 9999360

      VD GUID[1] : 4C696E75:782D4D44:DEADBEEF:00000000:3B126135:E5E8A894
                  (Linux-MD 05/28/11 14:31:17)
         unit[1] : 125
        state[1] : Optimal, Consistent
   init state[1] : Fully Initialised
       access[1] : Read/Write
         Name[1] : home
 Raid Devices[1] : 2 (0 1)
   Chunk Size[1] : 1024 sectors
   Raid Level[1] : RAID0
  Device Size[1] : 4999680

...
Physical Disks : 2
      Number    RefNo      Size       Device      Type/State
         0    06e7fd59  67076096K /dev/sda2       active/Online
         1    b4de38cf  67076096K /dev/sdb2       active/Online

Nt mitmed MegaRAID seadmed on nö DDF-ühilduvad. Teoreetiliselt on võimalik DDF abil samu kõvakettaid kasutada nt nii sobiva riistvaralise kui tarkvalise raidiga.

Kõvaketaste eemaldamiseks sobib öelda

# mdadm --zero-superblock -e ddf /dev/sda2

IMSM kasutamine

# mdadm --detail-platform
       Platform : Intel(R) Matrix Storage Manager
        Version : 8.9.0.1023
    RAID Levels : raid0 raid1 raid10 raid5
    Chunk Sizes : 4k 8k 16k 32k 64k 128k
      Max Disks : 6
    Max Volumes : 2
 I/O Controller : /sys/devices/pci0000:00/0000:00:1f.2
          Port0 : /dev/sda (WD-WMAY01628219)
          Port1 : /dev/sdb (WD-WMAY01570893)
          Port2 : /dev/sdc (WD-WMAY01808598)
          Port3 : /dev/sdd (WD-WMAY01426375)
          Port5 : - non-disk device (HL-DT-ST DVDRAM GH22NS50) -
          Port4 : - no device attached -
  • Konteineri moodustamine
#  mdadm --create /dev/md/imsm0 -e imsm -n 2 /dev/sda /dev/sdb

Tulemusena on tekib

# mdadm -D /dev/md/imsm0                                                       
/dev/md/imsm0:
        Version : imsm
     Raid Level : container
  Total Devices : 4

Working Devices : 4

  Member Arrays :

    Number   Major   Minor   RaidDevice

       0       8        0        -        /dev/sda
       1       8       16        -        /dev/sdb
       2       8       32        -        /dev/sdc
       3       8       48        -        /dev/sdd
  • Olemasoleva konteineri käivitamine
# mdadm --assemble --scan
mdadm: Container /dev/md/imsm0 has been assembled with 2 drives
  • Olemasoleva massiivi käivitamine
# mdadm -I /dev/md/imsm0 
mdadm: Started /dev/md/1_0 with 2 devices
  • Konteinerisse massiivi moodustamine
# mdadm --create /dev/md/temp -n 4 -l 0 -z 30000000 /dev/md/imsm0
  • Massiivi kustutamine
# mdadm -S /dev/md/home
# mdadm --kill-subarray=1 /dev/md/imsm0
mdadm: Deleted subarray-0 from /dev/md/imsm0, UUIDs may have changed
  • Konteineri sisu saab esitada
# mdadm -E /dev/md/home

Tekitatava mdadm seadme suuruse ennustamine

Tundub, et vaikimisi arvestatakse automaatselt mingi hulk (sõltuvalt komponentseadmete suurusest praktiliselt mõned megabaidid) mdadm komponentseadmete ressurssi mdadm nö sisemiste struktuuride tarbeks. Nt

# blockdev --getsize64 /dev/sda3
751619276800
# blockdev --getsize64 /dev/md125 
751618088960

kus vahel on 1187840 baiti.

See muudab nö mdadm seadme kasutatava suuruse ennustamise raskeks. Alternatiiv on kasutada mdadm lülituse tekitamisel lisaks -z suvandit, millele järel tuleb näidatab seadme suurus kB'tides.

RAID lülitused ja jõudlus

TODO

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. Arusaamatul põhjusel vmstat ei pruugi näidata seda progressi.
  • 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]

või kontrollida, kas dmraid ei kasuta

# dmraid TODO
  • RAID0 lülitus suurendab sequental access kiirust
  • RAID1 lülitus suurendab seek kiirust

Märkused

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.

Debian Lenny keskkonnas saab v. 1.2 metadata ja /dev/md/nimi kujulisi massiive tekitada öeldes

# mdadm --create /dev/md/pve --auto=md -e 1.2 -l raid1 -n 2 /dev/sda2 /dev/sdb2

ning kasutada /etc/mdadm/mdadm.conf failis

ARRAY /dev/md/pve level=raid1 num-devices=2 metadata=01.02 name=pm-host-lenovo:pve UUID=f0631b7a:c38e3020:303acb4c:87d383e6 auto=md

On ebaselge, mis saab selliselt juhtumil

  • RAID1 töötab
  • ühendada pooled lahti ja kasutada neid üksikult
  • RAID1 käivitada mõlemate pooltega

Tundub, et ühe kohta öeldakse, et ta on failed

# mdadm -A /dev/md/part1 /dev/vdc1 /dev/vdd1
mdadm: ignoring /dev/vdd1 as it reports /dev/vdc1 as failed
mdadm: /dev/md/part1 has been started with 1 drive (out of 2).
  • Tundub, et kui RAID on nö ära tuntud, kuid veel pole seda kasutatud (sinna kirjutatud), siis paistavad nad sedasi auto-read-only märkega
# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md124 : active (auto-read-only) raid1 sdc4[0]
     1743797112 blocks super 1.2 [2/2] [UU]
...

Sarnaselt võib paistas enne esimest kirjutamist vastselt moodustatud RAID1 selline (nb! clean, resyncing (PENDING))

# mdadm -D /dev/md/data 
/dev/md/data:
       Version : 1.2
 Creation Time : Mon Apr  6 00:44:28 2015
    Raid Level : raid1
    Array Size : 1819148096 (1734.87 GiB 1862.81 GB)
 Used Dev Size : 1819148096 (1734.87 GiB 1862.81 GB)
  Raid Devices : 2
 Total Devices : 2
   Persistence : Superblock is persistent

   Update Time : Mon Apr  6 00:44:28 2015
         State : clean, resyncing (PENDING) 
 ...
  • resync kiirust kontrollivad sellised kerneli parameeterid
# sysctl dev.raid.speed_limit_min
dev.raid.speed_limit_min = 1000
# sysctl dev.raid.speed_limit_max
dev.raid.speed_limit_max = 200000

RAID1 all oleva plokkseadme suuruse suurendamine

TODO

Kasulikud lisamaterjalid

RAID lülituse ignoreerimine

Kui mdadm raid kasutatavasse arvutisse lisatakse muudele ketastele lisaks kettad mis on samuti raid lülituses, siis avastab operatsioonisüsteem nende raid samuti ära. Kui aga nt on soov seda lisatud komplekti kasutada virtuaalses arvutis ja muu hulgas virtuaalses arvutis raid koostada, siis ei tohiks füüsilise arvuti tuum raidi aktiveerida. Selle saavutamiseks sobib selline protseduur

  • Küsida UUID väärtused
# mdadm -D /dev/md122
# ...
  • kirjutada /etc/mdadm/mdadm.conf faili juurde vastavad read
..
ARRAY <ignore> UUID=4b216f65:dd632b7e:20b98261:fc4575ba
ARRAY <ignore> UUID=6ca589cd:a3b7ffcd:06fe5e00:09d84daa
ARRAY <ignore> UUID=f8220416:d8b25ffe:a4c027e1:d5a8334a
ARRAY <ignore> UUID=34d523e9:8c385e95:b842b2a9:a9b21821
  • Genereerida initrd
# update-initramfs -u
  • algakäivitada arvuti operatsioonisüsteem

Katkise RAID5 lülituse kasutamine

Kui kolme komponendile RAID5 lülituses on üks komponent riknenud, siis ta ei pruugi käivituda, olgu /dev/sda4 ja /dev/sdb4 allesjäänud komponendid

root@sysresccd /root % mdadm -A /dev/md124
mdadm: /dev/md124 assembled from 2 drives - not enough to start the array while not clean - consider --force.

neid kasutatava raid5 moodustamiseks sobib öelda

root@sysresccd /root % mdadm -A --run --force /dev/md124
mdadm: Marking array /dev/md124 as 'clean'
mdadm: /dev/md124 has been started with 2 drives (out of 3).

ning

root@sysresccd /root % mdadm -D /dev/md124              
/dev/md124:
        Version : 1.2
  Creation Time : Sun Aug  7 22:01:03 2016
     Raid Level : raid5
     Array Size : 1624523776 (1549.27 GiB 1663.51 GB)
  Used Dev Size : 812261888 (774.63 GiB 831.76 GB)
   Raid Devices : 3
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Tue Jan 15 02:48:43 2019
          State : clean, degraded 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : at-dom0:data_3
           UUID : 4b216f65:dd632b7e:20b98261:fc4575ba
         Events : 2760

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       20        1      active sync   /dev/sdb4
       3       8        4        2      active sync   /dev/sda4

Olemasoleva 2-way RAID1 füüsiliste ketaste asendamine suurematega

Ühesandeks on kahe füüsilise HDD kõvakettaga (WDC 2 TB HDD) töötav arvuti muuta kahe füüsilise SSD salvestusseadmega (Samsung 4 TB SSD) töötavaks arvutiks.

Protseduur kasutab ära selliseid asjaolusid

  • kasutusel on tarkvaraline mdadm raid (2-way mirror) ja sellel lvm
  • kasutusel ei ole füüsiline raid kontroller
  • arvuti töötab uefi režiimis
  • kasutatakse refind alglaadurit

Protseduur

  • arvutil lülitatakse toide välja ja arvutisse lisatakse juurde kaks ssd salvestusseadet
  • seejärel toimuvad muudatused nö online'is
  • 2-way mirror muudetakse 4-way mirroriks
  • 4-way mirrorist eemaldatakse hdd kettad
  • kohendatakse alglaadiurit (efibootmgr, refind.conf jms abil)
  • arvutil lülitatakse toide välja ja eemdaldatakse hdd kettad

Peale arvutisse ssd seadmete lisamist paistab

# lsscsi
[0:0:0:0]    disk    ATA      WDC WD2000F9YZ-0 1A02  /dev/sda 
[1:0:0:0]    disk    ATA      WDC WD2000F9YZ-0 1A02  /dev/sdb 
[3:0:0:0]    disk    ATA      Samsung SSD 870  1B6Q  /dev/sdc 
[5:0:0:0]    disk    ATA      Samsung SSD 870  1B6Q  /dev/sdd 

Seejärel partitsiooneeritakse nö tavalisel viisil /dev/sdc ja /dev/sdd kettad, kasutades gpt partitsioonitabelit, (nt fdisk programmiga), tulemusena (sdd sarnaselt)

# parted /dev/sdc p
Model: ATA Samsung SSD 870 (scsi)
Disk /dev/sdc: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  1075MB  1074MB                     boot, esp
 2      1075MB  26.8GB  25.8GB                     raid
 3      26.8GB  4001GB  3974GB                     raid

/dev/md127 ressurss paistab enne muudatusi nii

# mdadm -D /dev/md127
/dev/md127:
           Version : 1.2
     Creation Time : Sun Feb 22 07:42:05 2015
        Raid Level : raid1
        Array Size : 1572732928 (1499.88 GiB 1610.48 GB)
     Used Dev Size : 1572732928 (1499.88 GiB 1610.48 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sun Dec 19 14:06:07 2020
             State : active 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

              Name : pm-na:pve
              UUID : a8c31fa4:d9dbd3c0:04f0f029:51272f2e
            Events : 649767

    Number   Major   Minor   RaidDevice State
       0       8        4        0      active sync   /dev/sda4
       1       8       20        1      active sync   /dev/sdb4

Lisada üks füüsiline ketas, täpsemini partitsioon, 2-way raid1 muutub 3-way raid1 lülituseks

# mdadm --grow /dev/md127 --level=1 --raid-devices=3 --add /dev/sdc3

Lisada teine füüsiline ketas, täpsemini partitsioon, 3-way raid1 muutub 4-way raid1 lülituseks

# mdadm --grow /dev/md127 --level=1 --raid-devices=4 --add /dev/sdd3

Tulemusena paistab /dev/md127

# mdadm -D /dev/md127
/dev/md127:
           Version : 1.2
     Creation Time : Sun Feb 22 07:42:05 2015
        Raid Level : raid1
        Array Size : 1572732928 (1499.88 GiB 1610.48 GB)
     Used Dev Size : 1572732928 (1499.88 GiB 1610.48 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sun Dec 19 14:06:07 2021
             State : active 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

              Name : pm-na:pve
              UUID : a8c31fa4:d9dbd3c0:04f0f029:51272f2e
            Events : 649767

    Number   Major   Minor   RaidDevice State
       0       8        4        0      active sync   /dev/sda4
       1       8       20        1      active sync   /dev/sdb4
       2       8       35        2      active sync   /dev/sdc3
       3       8       51        3      active sync   /dev/sdd3

Järgnevalt märgitakse /dev/sda4 ja /dev/sdb4 partitsioonid riknenuks

# mdadm /dev/md127 -f /dev/sda4
# mdadm /dev/md127 -f /dev/sdb4

ja seejärel eemaldatakse lülitusest

# mdadm /dev/md127 -r /dev/sda4
# mdadm /dev/md127 -r /dev/sdb4

Seejärel muudetakse 4-way raid lülitus 2-way lülituseks

# mdadm --grow /dev/md127 --level=1 --raid-devices=2

Suurendatakse raid suurus kasutama kogu /dev/sdc ja /dev/sdd seadmetel kasutada olevat ruumi (raid1 puhul on tark kasutada lisaks suvandit '--assume-clean')

# mdadm --grow /dev/md127 -z max
mdadm: component size of /dev/md127 has been set to 3880672071K

Suurenda lvm kasutama kogu /dev/md127 seadmel kasutada olevat ruumi

# pvresize /dev/md127
 Physical volume "/dev/md127" changed
 1 physical volume(s) resized or updated / 0 physical volume(s) not resized

Tulemusena paistab mdadm lülitus nii

# mdadm -D /dev/md127
/dev/md127:
           Version : 1.2
     Creation Time : Sun Feb 22 07:42:05 2015
        Raid Level : raid1
        Array Size : 3880672071 (3700.90 GiB 3973.81 GB)
     Used Dev Size : 3880672071 (3700.90 GiB 3973.81 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sun Dec 19 14:23:11 2021
             State : active, resyncing 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

     Resync Status : 27% complete

              Name : pm-na:pve
              UUID : a8c31fa4:d9dbd3c0:04f0f029:51272f2e
            Events : 650968

    Number   Major   Minor   RaidDevice State
       2       8       35        0      active sync   /dev/sdc3
       3       8       51        1      active sync   /dev/sdd3

kus

  • Array Size - uus suurenenud väärtus

ning lvm volume group nii

# vgdisplay pve
  --- Volume group ---
  VG Name               pve
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  177
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                30
  Open LV               21
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               3.61 TiB
  PE Size               4.00 MiB
  Total PE              947429
  Alloc PE / Size       383763 / 1.46 TiB
  Free  PE / Size       563666 / 2.15 TiB
  VG UUID               JpySRe-Z7Ma-PYfH-n37X-DScl-VSGw-8eQAuJ

kus

  • VG Sise - uus suurenenud väärtus

Seoses sellega, et kasutatakse ssd seadmeid on sobib nö trim funktsionaalsus lvm juures sisse lülitada

# cat /etc/lvm/lvm.conf
..
issue_discards=1
...

TODO - Füüsiliste hdd ketaste eemaldamise järel muutuvad /dev/sdc ja /dev/sdd nimed vastavalt /dev/sda ja /dev/sdb; ning alglaaduri kohendamine on samuti vajalik.

Tulemusena

  • süsteemis kasutatakse kiiremaid kettaid
  • süsteemi lvm volume grupis on lisa vaba ruum kasutamiseks valmis

2022 aasta kevadel raid10 kasutamine

RAID 10 lülituse tekitamiseks sobib öelda

# mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/vdc /dev/vdd /dev/vde /dev/vdf

tulemusena

# mdadm -D /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Wed May 25 21:35:37 2022
        Raid Level : raid10
        Array Size : 16758784 (15.98 GiB 17.16 GB)
     Used Dev Size : 8379392 (7.99 GiB 8.58 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed May 25 21:38:05 2022
             State : active, checking 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

      Check Status : 57% complete

              Name : ria-etcd1:0  (local to host ria-etcd1)
              UUID : 5c2ad00a:74828bed:11ff0f10:aba7b26b
            Events : 27

    Number   Major   Minor   RaidDevice State
       0     252       32        0      active sync set-A   /dev/vdc
       1     252       48        1      active sync set-B   /dev/vdd
       2     252       64        2      active sync set-A   /dev/vde
       3     252       80        3      active sync set-B   /dev/vdf

kus

  • TODO

Osutub, et raid10 lülituse töötamiseks on vajalik vähemalt üks sync set täies koosseisus. Nt nii lülitus toimib veel

# mdadm /dev/md0 -f /dev/vdf
# mdadm /dev/md0 -f /dev/vdd

# mdadm -D /dev/md0
...

    Number   Major   Minor   RaidDevice State
       0     252       32        0      active sync set-A   /dev/vdc
       -       0        0        1      removed
       2     252       64        2      active sync set-A   /dev/vde
       -       0        0        3      removed

       1     252       48        -      faulty   /dev/vdd
       3     252       80        -      faulty   /dev/vdf

Kasulikud lisamaterjalid