salvestussüsteemid · 2017. 11. 8. · raid massiivid • raid — redundant array of inexpensive...

31
OPERATSIOONISÜSTEEMID Salvestussüsteemid Pöörlevad kettad ja SSD Ketaste ühendamine Kettapöörduste planeerimine Ketaste ette valmistamine Saalimisala haldus RAID struktuurid LVM MEELIS R OOS 1

Upload: others

Post on 12-Feb-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

  • OPERATSIOONISÜSTEEMID

    Salvestussüsteemid

    • Pöörlevad kettad ja SSD

    • Ketaste ühendamine

    • Kettapöörduste planeerimine

    • Ketaste ette valmistamine

    • Saalimisala haldus

    • RAID struktuurid

    • LVM

    MEELIS ROOS 1

  • OPERATSIOONISÜSTEEMID

    Ketta struktuur

    • Ketas kui loogiliste plokkide jada (plokkseade)

    • Plokkidele seatakse vastavusse sektorid

    • 512 (520) baiti, sisemine plokisuurus on tänapäeval enamasti

    4096 baiti

    • Sektorite ringi paigutamine vea korral

    • Silindrid, rajad, sektorid — pöörleva ketta siseasi

    MEELIS ROOS 2

  • OPERATSIOONISÜSTEEMID

    Ketta parameetrid

    parameeter 360 kB floppy WD 18300 ketas

    silindrite arv 40 10601

    radu silindril 2 12

    sektorit rajal 9 281 (keskm.)

    sektorit kettal 720 35742000

    baiti sektoris 512 512

    ketta maht 360 kB 18.3 GB

    positsioneerimine kõrvalrajale 6 ms 0.8 ms

    positsioneerimine keskmiselt 77 ms 6.9 ms

    ühe täispöörde aeg 200 ms 8.3 ms

    mootori käivitusaeg 250 ms 20 s

    1 sektori ülekande aeg 22 ms 17 µs

    MEELIS ROOS 3

  • OPERATSIOONISÜSTEEMID

    SSD-seadmed

    • SSD — Solid State Drive (flash-mälu plokkseadme liidesega)

    • Seek tasuta, ülekandekiirus arvestatav kuni väga hea

    • Piiratud kirjutamiste arv samale sektorile (DWPD kui mõõt)

    • Toite kadumisel terve erase block kaotsis ühe sektori asemel

    • Wear leveling — meetodid kogu kettapinna ühtlaselt

    vananemise tagamiseks

    • Fragmenteerumine wear levelingu tegemisel vs kehv wear

    leveling

    • TRIM lisakäsk mittevajalike alade vabastamiseks (et ei oleks

    vaja vana seisu kirjutamisel lugeda)

    • Vajalik plokkide joondamine (alignment) erase block mahule

    • OS: unustada pöörlemist eeldavad IO planeerijad

    MEELIS ROOS 4

  • OPERATSIOONISÜSTEEMID

    Ketaste ühendamine

    • Otse arvuti külge

    – (S)ATA, SAS/SCSI, NVMe, FireWire, USB, . . .

    • Salvestivõrgu kaudu

    – SAN — Storage Area Network

    – Oma protokollistikuga võrk salvestusseadmete ja serverite

    vahel

    – Switched FibreChannel, FC-AL (kuni 32G, standard kuni

    128G)

    – IP võrk (+1G/10G/40G/100G Ethernet jms) ja iSCSI

    – Infiniband (kuni 300G, madal latents) + RDMA

    MEELIS ROOS 5

  • OPERATSIOONISÜSTEEMID

    Kettapöörduste planeerimine

    • Opsüsteem vastutab kettapöörduste efektiivsuse eest

    – Läbilaskekiirus suureks

    – Viivitus väikseks

    • Pöördusajal kaks olulist tegurit:

    – Raja otsimine — aeg sõltub sellest, kuipalju on pead vaja

    liigutada

    – Rajalt sektori otsimine (keskmiselt pool pööret)

    • Läbilaske maksimaalne kiirus sõltub kettaseadmest

    • Opsüsteem tahab liigse positsioneerimise välja optimeerida, et

    läbilase oleks maksimumi lähedane

    • Kui meil on ketta järjekorda kogunenud päringud mingitele

    sektoritele, mis järjekorras neid täita, et viivitus (lugemispea

    poolt läbitud vahemaa) vähim oleks?

    MEELIS ROOS 6

  • OPERATSIOONISÜSTEEMID

    Klassikalised kettapöörduste planeerimise

    algoritmid

    • FCFS — First Come First Served (70)

    X X X XX X X

    0 7 15 23 31

    start

    • Näide: päringute järjekord 15, 8, 17, 27, 9, 1, 14

    • Kokku 70 raja vahetust

    MEELIS ROOS 7

  • OPERATSIOONISÜSTEEMID

    Klassikalised kettapöörduste planeerimise

    algoritmid

    • SSTF — Shortest Seek Time First (47)

    X X X XX X X

    0 7 15 23 31

    start

    • Sarnane SJF protsesside planeerijale, aga pole optimaalne

    • Võib põhjustada näljutamist

    MEELIS ROOS 8

  • OPERATSIOONISÜSTEEMID

    Klassikalised kettapöörduste planeerimise

    algoritmid

    • SCAN (ka elevaatoralgoritm) — pea käib ketta ühest äärest teise

    ja teenindab teele jäävaid päringuid (51)

    • LOOK — pea viiakse otstes ainult äärmise päringuni (43)

    X X X XX X X

    0 7 15 23 31

    start

    • Keskel asuvaid sektoreid teenindatakse kiiremini

    MEELIS ROOS 9

  • OPERATSIOONISÜSTEEMID

    Klassikalised kettapöörduste planeerimise

    algoritmid

    • C-SCAN — nagu SCAN, aga tagasiteel päringuid ei teenindata

    (61)

    • C-LOOK — pea viiakse otsest ainult äärmise päringuni (51)

    X X X XX X X

    0 7 15 23 31

    start

    • Päringute teenindamise ooteajad on ühtlasemad

    MEELIS ROOS 10

  • OPERATSIOONISÜSTEEMID

    Kettapöörduste planeerimise algoritmid Linuxis

    • NOOP (ainult päringute kokku kleepimine)

    • Deadline (prioriteediklassid vastavalt interaktiivsusele,

    näljutamise vastu tähtaeg)

    • CFQ (päringud jagatakse klassidesse ja võetakse klassidest

    vaheldumisi; oskab arvestada I/O prioriteetidega)

    • MQ-Deadline, Kyber, BFQ — mitme järjekorraga variandid

    MEELIS ROOS 11

  • OPERATSIOONISÜSTEEMID

    Ketaste ette valmistamine

    • Madala taseme formaatimine (füüsiline formaatimine, low level

    formatting) — sektorimärkide radadele kandmine

    – Tänapäeval ei paista reeglina opsüsteemile enam kätte

    • Partitsioneerimine — ketta osadeks jaotamine

    – MBR partitsioonitabelid — katavad kuni 2T, ketta alguses

    – EFI GUID Partition Table ehk GPT — katavad üle 2T, ketta

    lõpus

    – VTOC, Unixite disklabelid, . . .

    • Loogiline formaatimine ehk failisüsteemi tekitamine

    • Bootloaderi installimine

    • Vigaste kettaplokkide leidmine ja meelde jätmine

    MEELIS ROOS 12

  • OPERATSIOONISÜSTEEMID

    Madala taseme formaatimine

    • Cylinder skew — erinevate radade sektorid on üksteise suhtes

    nihkes

    0 1 23

    45

    67

    89

    10

    11

    12131415161718

    19

    2021

    22

    23

    24

    25

    26

    27

    2829

    30 31

    29 30 310

    12

    34

    56

    78

    91011121314

    1516

    17

    18

    19

    20

    21

    22

    23

    24

    2526

    27 28

    26 27 2829

    30

    31

    01

    23

    45

    6

    78

    9101112

    13

    14

    15

    16

    17

    18

    19

    20

    21

    2223

    2425

    23 2425

    26

    27

    28

    29

    30

    31

    01

    2

    3

    45

    6789

    10

    11

    12

    13

    14

    15

    16

    17

    18

    1920

    2122

    20 2122

    23

    24

    25

    26

    27

    28

    29

    30

    31

    0

    1

    234

    56

    7

    8

    910

    11

    12

    13

    14

    15

    1617

    1819

    1718

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    3101

    2

    3

    4

    5

    6

    78

    910

    11

    12

    13

    14

    1516

    Direction of disk

    rotation

    • Aitab vähendada pöördumisviivitust järjestikuste sektorite

    lugemisel mitmelt rajalt

    MEELIS ROOS 13

  • OPERATSIOONISÜSTEEMID

    Madala taseme formaatimine

    • Vahelejätt (interleaving) — sektorid paigutatakse üle ühe

    0

    52

    6

    3

    7

    4

    1

    0

    3

    6

    14

    7

    2

    5

    • Aitab vältida olukorda, kus eelmise sektori andmete

    ülekandimise ajal liigub lugemispea üle järgmise sektori

    • Aeglasema ülekandekanali puhul kasutatakse ka üle kahe

    vahelejättu (double interleave)

    • Pole vajalik, kui kontroller puhverdab kogu raja tervikuna

    MEELIS ROOS 14

  • OPERATSIOONISÜSTEEMID

    Saalimisala haldamine

    • Saalimisala — protsesside või lehekülgede salvestusruum

    virtuaalmälule

    • Eraldi kettal/partitsioonil

    • (Eelallokeeritud) failis

    • Saalimisala protsessi kogu virtuaalmälu kohta (BSD UNIX)

    • Saalimisala reaalselt välja saalitud mälulehekülgede kohta

    (Solaris, Linux, . . . )

    • RAM-is peab saalimisala kohta kaart olema

    MEELIS ROOS 15

  • OPERATSIOONISÜSTEEMID

    RAID massiivid

    • RAID — Redundant Array of Inexpensive Disks

    • Paralleelsuse kaudu kiiruse ja töökindluse suurendamine

    • Peegeldamine (mirroring, shadowing)

    • Paarsusinfo laiali jagamine (interleaved parity)

    – Bitikaupa

    – Plokikaupa

    • Parandusaeg peab mõistlik olema

    • Kuumvaru (hot spare), ketaste kolimine

    • Tarkvaraline vs riistvaraline RAID

    • NVRAM vahemälu

    MEELIS ROOS 16

  • OPERATSIOONISÜSTEEMID

    RAID 0

    • RAID 0 — Mitmest kettast ühe suure tegemine (striping)

    • Virtuaalne ketas koosneb vöötidest (stripe), igas vöödis k

    sektorit

    • Vöödid on jagatud n ketta vahel

    strip1

    strip3

    strip0

    strip2

    strip4 strip5

    disk1 disk2

    • Kõrvuti olevate vöötide lugemine võib toimuda paralleelselt

    • Parandab jõudlust, kuid kahandab töökindlust

    • Kui süsteem loeb ketast sektorhaaval, siis pole efektiivsuses

    võitu

    MEELIS ROOS 17

  • OPERATSIOONISÜSTEEMID

    RAID 1

    • RAID 1 — Peegeldamine (sama info mitme seadme peal)

    strip0

    strip1

    strip0

    strip1

    strip2 strip2

    disk1 disk2

    • Säilivad RAID0 eelised (paralleelselt lugemine on võimalik)

    • Vööt loetakse sellelt kettalt, kust parasjagu kiirem on

    • Kirjutamised peavad toimuma kõigil ketastel, aga saab teha

    korraga

    MEELIS ROOS 18

  • OPERATSIOONISÜSTEEMID

    RAID 2

    • RAID 2 — Mälu stiilis veaparanduskoodid (ECC)

    disk1 disk2 disk3 disk4 disk5

    b1 b2 b3 f0(b) f1(b)

    • Vöödid on väikesed (biti, baidi või sõna suurused)

    • Lisaks salvestatakse Hammingi kood

    • Ühe ketta veast suudab taastuda

    • Vajab log lisakettaid

    • Harva kasutusel

    MEELIS ROOS 19

  • OPERATSIOONISÜSTEEMID

    RAID 3

    • RAID 3 — Bitihaaval paarsuskontroll

    disk1 disk2 disk3 disk4

    P(b)b1 b2 b3

    • Vöödid on väikesed (biti, baidi või sõna suurused)

    • Kasutab ära seda, et lugemisveast saab ketas ise aru, mitte ei

    anna valesid bitte

    • Liiasuse saavutamiseks leitakse tegelike andmete XOR

    (paarsusinfo)

    • Paarsusinfo jaoks vaja lisaketast

    • Suudab taastuda ühe ketta veast

    MEELIS ROOS 20

  • OPERATSIOONISÜSTEEMID

    RAID 4

    • RAID 4 — Plokihaaval paarsuskontroll

    disk1 disk2 disk3 disk4 disk5

    strip1 strip2

    strip4 strip5 strip6

    strip8 strip9 strip10 strip11

    strip7

    strip3strip0 P(0−3)

    P(4−7)

    P(8−11)

    • Sarnane RAID 3-ga, kuid vöödisuurus suurem

    • Read-modify-write

    • Iga kirjutamisoperatsioon nõuab paarsusinfo korrigeerimiseks

    kõikide ketaste lugemist

    • Alternatiivselt arvutatakse paarsusinfo vanast andme- ja

    paarsusinfost (2 lugemist)

    • Paarsusketas võib osutuda pudelikaelaks

    MEELIS ROOS 21

  • OPERATSIOONISÜSTEEMID

    RAID 5

    • RAID 5 — Plokihaaval hajutatud paarsuskontroll

    disk1 disk2 disk3 disk4

    strip1 strip2

    strip4 strip5 strip6

    strip8

    strip3strip0

    disk5

    P(0−3)

    strip7

    P(8−11) strip11

    strip12

    strip9

    P(12−15)

    P(16−19)

    strip10

    P(4−7)

    strip19

    strip15

    strip18

    strip14strip13

    strip17strip16

    • Nagu RAID 4, aga paarsussektorid on hajutatud ketaste vahel

    • Väldib eraldi paarsuskettaga seotud jõudlusprobleemi

    • Read-modify-write endiselt jõudlusprobleemiks

    – Logiv RAID — žurnaal väikeste kirjutamiste jaoks

    MEELIS ROOS 22

  • OPERATSIOONISÜSTEEMID

    RAID 6

    • RAID 6 — Kahemõõtmeline paarsuskontroll

    disk1 disk2 disk3 disk4

    strip1 strip2

    strip4 strip5 strip6

    strip8

    strip3strip0

    P(8−11)

    strip12

    strip9

    P(12−15)

    P(16−19)

    P(4−7)

    strip17

    strip13

    strip16

    disk6

    Q(0−3)

    strip7

    strip11

    strip19

    strip15

    disk5

    P(0−3)

    strip10

    strip18

    strip14

    Q(4−7)

    Q(8−11)

    Q(16−19)

    Q(12−15)

    • Nagu RAID 5, aga liiasust arvutatakse kahe erineva funktsiooni

    abil

    • Vajab kahte lisaketast

    • Suudab taastuda kahe ketta vigade korral

    MEELIS ROOS 23

  • OPERATSIOONISÜSTEEMID

    RAID 0+1

    • RAID 0+1 — peegeldatud stripe’id

    strip1

    strip3

    strip0

    strip2

    strip4 strip5

    disk1 disk2

    strip1

    strip3

    strip0

    strip2

    strip4 strip5

    disk3 disk4

    • Kannatab ühest peegli poolest kasvõi mitme ketta viga, aga

    teine peegli pool peab terveks jääma

    MEELIS ROOS 24

  • OPERATSIOONISÜSTEEMID

    RAID 1+0

    • RAID 1+0 — stripe’itud peeglipaarid

    strip0

    strip2

    strip0

    strip2

    strip4 strip4

    disk1 disk2

    strip1

    strip3

    strip1

    strip3

    strip5 strip5

    disk3 disk4

    • Kannatab ühe ketta viga igast peeglipaarist

    • Keskmiselt kannatab vigu rohkem kui RAID 0+1, aga kaks

    veaga ketast võivad ka RAID 1+0 maha võtta

    MEELIS ROOS 25

  • OPERATSIOONISÜSTEEMID

    RAID riistvaras ja tarkvaras

    • Enamus RAID tasemeid saab realiseerida nii riistvaras kui

    tarkvaras

    – Missuguseid ei saa?

    • Riistvaras:

    – CPU koormust vähemaks

    – Liiasusega andmed liiguvad üle siini 1 korra

    • Tarkvaras:

    – CPU võib olla kiirem kui RAID kontrolleri protsessor

    – Opsüsteemi RAID on kergemini hallatav ja vähemate

    ühilduvusprobleemidega

    • HostRAID, BIOS RAID — tarkvaraline RAID draiveris

    – Võimalus bootida muudelt RAID-idelt kui 1

    – Hädalahendus kui opsüsteemi RAID-i ei saa kasutada

    MEELIS ROOS 26

  • OPERATSIOONISÜSTEEMID

    RAID failisüsteemi tasemel

    • Liiasust ei pea realiseerima plokkseadme tasemel, vaid võib

    teha ka failisüsteemi siseselt

    • Anname komponent-plokkseadmed otse failisüsteemi hallata

    • Failisüsteemi draiver jagab üksikute failide plokke laiali

    vastavalt liiasuspoliitikale

    • Pole fikseeritud vöödisuurust

    • Saame ellimineerida read-modify-write jõudlusprobleemi

    copy-on-write mehhanismi ja täisplokkide kirjutamisega

    • Pioneer: Sun ZFS

    • Tänapäeval on sarnane ka näiteks Linuxi Btrfs

    MEELIS ROOS 27

  • OPERATSIOONISÜSTEEMID

    LVM — Logical Volume Management

    • Idee: abstraheerida salvestussüsteemist välja füüsilised kettad

    • Algus: kogu füüsilise ketta peal oli üks failisüsteem

    • Areng: füüsilise ketta partitsioonideks jagamine

    • (RAID: peegeldamine, striping, . . . )

    • Samm edasi: peidame füüsilised kettad üldse ära, näitame

    ülespoole ainult loogilisi "köiteid"

    • Need köited võivad tegelike ketaste osade vahel suvaliselt

    jaguneda

    • Tegelikud kettad jagame väikesteks tükkideks, mida saab

    köideteks grupeerida

    MEELIS ROOS 28

  • OPERATSIOONISÜSTEEMID

    LVM: näited

    • Ketaste kokku ühendamine

    disk 2disk 1 disk 3

    volume

    • Peegeldamine

    disk 2

    volume

    disk 1 disk 3

    • ⇒ esialgu nagu RAID

    MEELIS ROOS 29

  • OPERATSIOONISÜSTEEMID

    LVM: näited

    • LVM plokkide migreerimine teisele kettale

    • Köidete suuruse muutmine käigu pealt

    • Krüptimine

    • Vahemälu SSD peal

    • Multipathing

    • Thin provisioning

    MEELIS ROOS 30

  • OPERATSIOONISÜSTEEMID

    LVM: näited

    • Snapshot

    MEELIS ROOS 31