Podcast on Computer I/O and Storage Systems
Computer I/O & Storage Systems: A Student's Guide
Podcast
Úložiště a I/O: Od disků po RAID
Délka: 19 minut
Kapitoly
Spolehlivost a dostupnost
Jak fungují disky
Flash úložiště vs. disky
Propojování komponent
Správa I/O
RAID: Redundance a výkon
Mýty a omyly
Přepis
Ben: … počkej, takže skutečný průměrný čas hledání na disku je ve skutečnosti mnohem kratší, než co uvádí výrobce? To je neuvěřitelné.
Sara: Přesně tak! Je to jeden z těch malých „triků“, o kterých výrobci nemluví, ale operační systémy je chytře využívají. Vítejte zpět u Studyfi Podcast.
Ben: Dobře, jsem rád, že jsi to zmínila, protože si myslím, že to musíme probrat. Bavíme se o úložištích a I/O – což zní jako hodně technický termín, ale je to naprosto klíčové pro to, jak rychle váš počítač funguje.
Sara: Přesně. I/O znamená vstup/výstup (Input/Output). Je to v podstatě cokoliv, co dostává data do počítače nebo z něj. Klávesnice je vstup, monitor je výstup.
Ben: A úložiště, jako pevný disk, je tak trochu obojí, že? Zapisuje data a čte je.
Sara: Přesně tak. A u těchto zařízení nás zajímají tři věci: jejich chování – jestli jsou vstupní, výstupní nebo úložné. S kým komunikují – s člověkem nebo s jiným strojem. A jejich datová rychlost – kolik dat dokážou přenést za sekundu.
Ben: A předpokládám, že ne všechna zařízení jsou si rovna, pokud jde o to, co je pro ně nejdůležitější.
Sara: Ani náhodou. U stolních počítačů a vestavěných systémů nám záleží hlavně na rychlosti odezvy – latenci. Jak rychle systém zareaguje, když kliknu na ikonu.
Ben: Chci, aby se to stalo hned. Nechci čekat.
Sara: Přesně. Ale u serverů, které obsluhují tisíce uživatelů najednou, je nejdůležitější propustnost neboli šířka pásma. Kolik dat dokážou zpracovat celkově za určitý čas. Je to jako rozdíl mezi autem formule 1 a nákladním vlakem.
Ben: Formule 1 je super rychlá, ale moc toho neuveze. Nákladní vlak je pomalejší, ale přepraví obrovské množství zboží. To dává smysl!
Ben: Kromě rychlosti je tu ale ještě jedna věc, která je u úložišť možná ještě důležitější – spolehlivost.
Sara: Absolutně. Zvlášť u úložišť. Nikdo nechce přijít o svá data. Proto se v informatice bavíme o spolehlivosti a dostupnosti. Musíme si definovat pár pojmů.
Ben: Dobře, jdeme na to.
Sara: První je porucha. To je, když selže nějaká komponenta – třeba jeden čip na pevném disku. To ale ještě nemusí znamenat selhání celého systému.
Ben: Aha, takže porucha je problém, ale systém to ještě může ustát?
Sara: Přesně. K selhání systému dochází až ve chvíli, kdy systém přestane poskytovat službu tak, jak má. Tomu se říká přerušení služby. A čas mezi selháním a obnovením služby je doba opravy.
Ben: Dobře, to dává smysl. A jak se to měří?
Sara: Používáme několik metrik. První je MTTF – Mean Time To Failure neboli střední doba do selhání. To je průměrná doba, po kterou zařízení funguje bezchybně.
Ben: Takže jak dlouho můžu očekávat, že můj disk poběží, než se rozbije.
Sara: Přesně tak. Pak máme MTTR – Mean Time To Repair neboli střední doba opravy. To je průměrná doba potřebná k opravě zařízení po selhání.
Ben: A z toho se dá něco spočítat?
Sara: Ano, dohromady nám MTTF a MTTR dávají MTBF – Mean Time Between Failures, střední dobu mezi selháními. A nejdůležitější metrikou je dostupnost, což je prostě podíl MTTF a celkové doby, tedy MTTF plus MTTR.
Ben: Takže čím delší je doba do selhání a kratší doba opravy, tím vyšší je dostupnost. Logické.
Sara: Přesně. A my se neustále snažíme dostupnost zvyšovat. Buď tím, že zvyšujeme MTTF – pomocí lepších komponent, odolnosti proti chybám – nebo tím, že zkracujeme MTTR – pomocí lepších nástrojů pro diagnostiku a opravu.
Ben: Pojďme se podívat na klasiku. Starý dobrý rotační pevný disk. I když jsou dnes populární SSD, tyhle se stále používají.
Sara: Stále jsou velmi důležité, hlavně kvůli ceně za gigabyte. Je to energeticky nezávislé, rotující magnetické úložiště. Data jsou uložena v malých úsecích zvaných sektory na rotujících plotnách.
Ben: A hlava nad nimi létá a čte je, že?
Sara: Přesně tak. Každý sektor má své ID, samotná data – typicky 512 bytů nebo dnes už i 4096 bytů – a také ECC, což je kód pro opravu chyb. Ten pomáhá skrýt drobné defekty na povrchu disku.
Ben: Takže co všechno se musí stát, když chci přečíst jeden ten sektor?
Sara: Je to proces o několika krocích. Zaprvé, může tam být zpoždění ve frontě, pokud disk zrovna zpracovává jiné požadavky. Potom následuje hledání – seek – kdy se čtecí hlavy musí přesunout na správnou stopu. To je fyzický pohyb a trvá nejdéle.
Ben: A pak musíme počkat, až se ten správný sektor dotočí pod hlavu?
Sara: Správně, tomu se říká rotační latence. A teprve potom dochází k samotnému přenosu dat, což je ve srovnání s hledáním a rotací velmi rychlé. Nakonec je tu ještě malá režie řadiče disku.
Ben: Dejme si příklad. Řekněme, že máme disk s 15 000 otáčkami za minutu, průměrným časem hledání 4 milisekundy a přenosovou rychlostí 100 megabajtů za sekundu.
Sara: Dobře. Průměrná doba čtení by byla: 4 ms za hledání. Rotační latence je v průměru půl otáčky, což při 15 000 otáčkách za minutu dělá 2 ms. Přenos 512 bytů při 100 MB/s je zanedbatelných 0,005 ms. A připočtěme třeba 0,2 ms režii řadiče.
Ben: Takže 4 plus 2 plus skoro nic plus 0,2... to je 6,2 milisekundy.
Sara: Přesně. Ale teď ta zajímavá část, o které jsme mluvili na začátku. Výrobci uvádějí průměrný čas hledání na základě všech možných přesunů hlavy. Ale v reálu operační systém chytře plánuje požadavky tak, aby hlava nemusela skákat z jednoho konce disku na druhý.
Ben: Aha, takže požadavky, které jsou blízko sebe, zpracuje najednou!
Sara: Přesně! Díky tomu může být skutečný průměrný čas hledání třeba jen 1 ms místo 4 ms. A najednou je celková doba čtení jen 3,2 ms místo 6,2 ms. To je obrovský rozdíl.
Ben: To je skoro dvakrát rychlejší! Takže chytré plánování v operačním systému je klíčové.
Sara: A nejen to. Moderní disky mají i vlastní cache paměť. Předem načítají sektory, o kterých si myslí, že je budete brzy potřebovat. Tím se úplně eliminují seek a rotační latence. Je to všechno o tom, jak se vyhnout tomu pomalému mechanickému pohybu.
Ben: Dobře, od mechaniky k elektronice. Flash úložiště. SSD disky, USB klíčenky. Co je na nich tak skvělého?
Sara: Jsou to energeticky nezávislá polovodičová úložiště. A jsou neuvěřitelně rychlá. Až 100 až 1000krát rychlejší než mechanické disky, protože nemají žádné pohyblivé části.
Ben: Žádné hledání, žádná rotace. Jen čistá elektronika.
Sara: Přesně. Jsou také menší, spotřebují méně energie a jsou odolnější proti otřesům. Nevýhodou je samozřejmě vyšší cena za gigabyte, která je někde mezi cenou klasického disku a operační paměti DRAM.
Ben: Existují různé typy flash pamětí, že?
Sara: Ano, dva hlavní jsou NOR a NAND. NOR flash umožňuje náhodný přístup pro čtení i zápis, takže je skvělá pro paměť s instrukcemi ve vestavěných systémech. Ale NAND flash je hustší a levnější, proto se používá ve všem ostatním – USB klíčenky, SSD disky, paměťové karty.
Ben: Ale slyšel jsem, že flash paměti mají jednu velkou nevýhodu – opotřebovávají se.
Sara: To je pravda. Každá paměťová buňka se po několika tisících zápisů opotřebuje a stane se nespolehlivou. Není to tedy vhodné jako přímá náhrada za RAM, kde se data mění neustále.
Ben: Jak se to řeší u SSD disků? Přece je nechceme vyhodit po roce používání.
Sara: To rozhodně ne. Řeší se to technikou zvanou „wear leveling“ neboli rozkládání zátěže. Řadič disku chytře přemapovává data tak, aby se všechny paměťové bloky opotřebovávaly rovnoměrně.
Ben: Takže když ukládám soubor pořád na stejné „místo“, řadič ho ve skutečnosti pokaždé zapíše do jiného, méně použitého fyzického bloku?
Sara: Přesně tak! Je to jako byste měli notýsek a místo toho, abyste psali pořád na první stránku, dokud ji úplně nezničíte, píšete rovnoměrně na všechny stránky. Tím prodloužíte životnost celého notýsku.
Ben: To je geniální!
Ben: Takže máme procesor, paměť, disky, grafickou kartu... Jak se to všechno propojí, aby to spolu mohlo komunikovat?
Sara: K tomu slouží sběrnice. Sběrnice je v podstatě sdílený komunikační kanál – sada paralelních drátů pro přenos dat a jejich synchronizaci.
Ben: Představuju si to jako dálnici uvnitř počítače.
Sara: To je dobrá analogie. A stejně jako dálnice se může stát úzkým hrdlem, pokud je provoz příliš hustý. Výkon sběrnice je omezený fyzikálními faktory – délkou drátů, počtem připojení.
Ben: Existují různé typy těchhle „dálnic“?
Sara: Ano. Máme sběrnice propojující procesor a paměť, které jsou krátké a velmi rychlé. A pak máme I/O sběrnice, které jsou delší, umožňují připojení více zařízení a jsou standardizované, aby spolu fungovala zařízení od různých výrobců. Ty se k procesorové sběrnici připojují přes takzvaný můstek.
Ben: A jak se zařizuje, aby si data nepřekážela? Jak ví, kdy mají „jet“?
Sara: Jsou dva hlavní způsoby synchronizace. Synchronní sběrnice používá hodinový signál. Všechny komponenty se řídí stejným taktem. Je to jako dirigent v orchestru.
Ben: A co ten druhý způsob?
Sara: Asynchronní sběrnice nepoužívá hodiny. Místo toho používá řídicí linky pro takzvané „handshaking“. Jedno zařízení pošle signál „Mám data k odeslání“ a druhé odpoví „Jsem připraveno přijmout“. Je to flexibilnější, ale může to být složitější.
Ben: Kdo vlastně řídí celý tenhle provoz na dálnicích? Kdo rozhoduje, které zařízení může kdy komunikovat?
Sara: To je klíčová role operačního systému. Protože více programů sdílí I/O zdroje, operační systém musí zajistit ochranu a plánování, aby si navzájem nelezly do zelí.
Ben: A jak procesor ví, že třeba disk dokončil čtení dat?
Sara: Jsou dva hlavní přístupy. První se jmenuje polling. To je, jako když se děti na zadním sedadle auta pořád ptají: „Už tam budem?“ Procesor se periodicky ptá I/O zařízení: „Jsi hotové? Jsi hotové? Jsi hotové?“
Ben: To zní strašně neefektivně. Musí to plýtvat výkonem procesoru.
Sara: Přesně. Plýtvá to spoustou času. Používá se to u malých, jednoduchých systémů, kde je předvídatelnost důležitější než výkon. Ale pro většinu systémů je tu lepší metoda.
Ben: A to je…?
Sara: Přerušení, neboli interrupts. To je spíš přístup „vzbuď mě, až tam budem“. Procesor dá zařízení úkol a věnuje se jiné práci. Když je zařízení hotové, pošle procesoru signál – přerušení.
Ben: Procesor pak přeruší, co zrovna dělá, obslouží I/O zařízení a vrátí se ke své původní práci. To zní mnohem chytřeji.
Sara: Je to mnohem efektivnější. Ale i tak musí procesor data mezi pamětí a I/O zařízením přenášet sám. U velmi rychlých zařízení, jako jsou síťové karty nebo rychlé disky, by to procesor stále příliš zatěžovalo.
Ben: Takže existuje ještě třetí, nejlepší možnost?
Sara: Ano, a tou je DMA – Direct Memory Access, přímý přístup do paměti. Tady operační systém řekne speciálnímu DMA řadiči: „Tady máš data v paměti, přenes je na toto zařízení.“ A DMA řadič to udělá úplně sám, bez účasti procesoru.
Ben: Takže procesor je z toho úplně venku. Může se věnovat výpočtům a jen dostane zprávu, když je vše hotovo.
Sara: Přesně tak. Je to nejefektivnější způsob pro přenos velkých objemů dat. Samozřejmě to přináší pár komplikací, třeba jak zajistit, aby data v cache procesoru a v paměti byla stejná, ale to už jsou detaily, které řeší OS a hardware společně.
Ben: Dobře, pojďme se bavit o něčem, co často slýcháme v souvislosti se servery a úložišti – RAID. Co to přesně je?
Sara: RAID je zkratka pro Redundant Array of Inexpensive Disks, což znamená redundantní pole levných disků. Základní myšlenka je použít více menších, levnějších disků místo jednoho velkého a drahého.
Ben: Proč? Jen kvůli ceně?
Sara: Nejen. Přináší to dvě obrovské výhody. Zaprvé, paralelismus. Když zapisujete soubor, můžete ho rozdělit a zapisovat na více disků najednou. To dramaticky zvyšuje výkon.
Ben: Jako mít více pokladen v supermarketu. Všechno jde rychleji.
Sara: Perfektní přirovnání. A druhou, ještě důležitější výhodou je redundance. Použitím extra disků pro záložní data můžeme vytvořit systém odolný proti poruchám. Když jeden disk selže, data se neztratí.
Ben: A to je ten důvod, proč se to tolik používá v serverech, kde je dostupnost klíčová.
Sara: Přesně. Existuje několik úrovní RAID, které se liší v tom, jak vyvažují výkon, kapacitu a redundanci. Nejzákladnější je RAID 0.
Ben: Ten má nulu v názvu, tak asi nebude moc bezpečný.
Sara: Máš pravdu! RAID 0 nemá žádnou redundanci. Jen rozděluje data napříč disky – tomu se říká prokládání neboli striping. Získáte úžasný výkon, ale pokud selže jediný disk, ztratíte všechna data. Někdy se mu vtipně říká „AID“, protože písmeno R pro redundanci tam chybí.
Ben: Dobře, takže to je pro hráče a nadšence, ne pro seriózní práci. Co dál? RAID 1?
Sara: RAID 1 je zrcadlení (mirroring). Je to nejjednodušší forma redundance. Vše, co zapíšete na jeden disk, se přesně zkopíruje na druhý. Pokud jeden disk selže, prostě pokračujete v práci s tím druhým. Máte 100% redundanci, ale využijete jen polovinu celkové kapacity disků.
Ben: To zní bezpečně, ale draze.
Sara: Ano, je to tak. Proto existují chytřejší úrovně, jako RAID 5. Ten používá prokládání jako RAID 0, ale přidává k tomu paritní informaci.
Ben: Parita? Co to je?
Sara: Představ si to jako jednoduchou kontrolu. Pokud máš data na třech discích, na čtvrtý disk se uloží paritní blok, který se vypočítá z dat na těch prvních třech. Pokud jeden z datových disků selže, pomocí zbývajících dat a paritního bloku dokáže systém ztracená data dopočítat a obnovit.
Ben: Wow! Takže potřebuju jen jeden extra disk pro ochranu několika dalších?
Sara: Přesně tak! RAID 5 je mnohem efektivnější z hlediska kapacity než RAID 1 a je to velmi populární volba. Jeho chytrost spočívá v tom, že paritní bloky nejsou na jednom specializovaném disku, ale jsou rozprostřeny napříč všemi disky v poli. Tím se zabrání tomu, aby se jeden paritní disk stal úzkým hrdlem při zápisech.
Ben: A existují ještě vyšší úrovně?
Sara: Ano, například RAID 6, který používá dvě sady paritních informací, takže dokáže přežít selhání dvou disků najednou. Je to ještě bezpečnější, ale o něco pomalejší při zápisu. Ale pro většinu nasazení je RAID 5 skvělý kompromis.
Ben: Na závěr, pojďme vyvrátit pár mýtů o úložištích. Často vidím u disků údaj MTTF, třeba 1,2 milionu hodin. To je skoro 140 let. Znamená to, že můj disk tak dlouho vydrží?
Sara: To je skvělá otázka a naprosto běžný omyl. MTTF je střední doba do selhání, což je statistický průměr. Neznamená to, že každý disk vydrží 140 let. Některé selžou po roce, jiné po deseti letech. Je to průměr napříč obrovským množstvím disků.
Ben: A když mám těch disků hodně, třeba v datacentru, tak se ta statistika projeví mnohem dříve.
Sara: Přesně. Pokud máte 1000 disků s tímto MTTF, můžete statisticky očekávat, že vám jich každý rok selže asi sedm. Studie z reálného světa od firem jako Google navíc ukázaly, že skutečná míra selhání je často mnohem vyšší, než uvádějí výrobci – klidně 2 až 4 % ročně.
Ben: To je velký rozdíl. Další věc – výkon. Když mám sběrnici s propustností 133 MB/s, můžu očekávat, že takovou rychlostí budu přenášet data?
Sara: Bohužel ne. To je špičkový, teoretický výkon. V praxi ho téměř nikdy nedosáhnete. Vždycky tam jsou nějaké režie, arbitráž, kolize s jinými zařízeními. Reálně u takové sběrnice můžete být rádi za 80 MB/s.
Ben: Takže vždycky počítat s tím, že reálný výkon bude nižší než ten papírový. To je dobré vědět.
Sara: A poslední mýtus: že zálohování na pásku je stále nejlepší. Dříve to platilo, pásky byly levné a měly velkou kapacitu. Ale dnes, s cenami pevných disků, dává mnohem větší smysl replikovat data na jiné disky, ať už lokálně pomocí RAID, nebo vzdáleně do jiného datacentra.
Ben: Děkuji moc, Saro. Bylo to neuvěřitelně poučné. Myslím, že teď se na úložiště a I/O budu dívat úplně jinak.
Sara: Rádo se stalo, Bene. Klíčové je pamatovat, že rychlost počítače není jen o procesoru. I/O systém je často ten skutečný hrdina – nebo padouch – který rozhoduje o celkovém výkonu.
Ben: Děkujeme, že jste poslouchali Studyfi Podcast. Uvidíme se u dalšího dílu!