cache na diskovem poli

Dan Lukes dan at obluda.cz
Tue May 27 14:48:09 CEST 2008


Radomír Tománek wrote:
> Zajímalo by mě, tedy konkrétně - víte někdo přesně co dělá a jak se chová
> cache v discích, na raid řadičích a na logických polích? Dnes mají typicky
> běžné disky 8-16MB cache. Předpokládám, že v logice disků není příliž
> prostoru na nějaké propracované algoritmy a tak tyto cache slouží především
> jako "falešný zápis" - tedy data přitečou do disku a disk řekne rychle "OK,
> zapsáno", ale zapsáno jaksi bude až "za chvíli", až to disk fyzicky stihne.

Kdyz k "falesnemu" zapisu pridas "cteni z cache" (jednak data cekajici 
na zapis se, samozrejme, ctou z cache a ne stara verze z ploten; druhak, 
prectena data se ulozi do cache a druhy pozadavek na cteni tychz dat se 
uspokoji z cache), "zapis  inteligentnim poradi" - tj. data se z cache 
na plotny nezapisuji v tom poradi, v jakem prisla, ale tak, aby se 
minimalizovaly latence (seek, rotational delay a pod.) a nakonec 
read-ahead (z plotny se nectou jen pozadovana data, ale take nekolik 
sektoru po nich - predpoklada se, ze ty budou pravdepodobne pozadovany 
vzapeti) mas chovani celkem bezne diskove cache po kupe.

> Tedy u "bezpečného" systému bych rád viděl tuto cache zakázanou. Jde to?
> Jak? 

	Jde to. Prikazem disku - podobnym jako je prikaz pro cteni, format a 
podobne. Presny format prikazu pak zavisi na rozhrani, ktere disk ma.

	Ale nez to u "bezpecneho" systemu zakazes, je vhodne se zamyslet proti 
jakemu typu vypadku se tim snazis data chranit a zda je takovy vypadek u 
tveho systemu natolik pravdepodobny, ze to za tu ztratu vykomu stoji. 
Diskova cache je autonomni - takze na to, aby se na plotny nezapsala je 
treba bud' havarie disku jako takoveho (a tam je otazka, nakolik by ti 
pomohlo, ze by na mrtvem disku data na plotnach spolehlive byla) nebo 
vypadek napajeni. Pravdepodobnost vypadku napajeni vyznamne snizis 
UPSkou a prakticky eliminujes redundandnim zdrojem.

> Dále v konfiguraci pole na "běžných řadičích" (např. serveraidy od ibm) je
> položka "write cache" v konfiguraci řadiče - tady bych chápal, že je to něco
> podobného jako u cache disků, ale zálohováno baterií a možná už s nějakou
> "lepší" logikou

	Muze jit take o polozku, ktera riak, zda ma RAID prepnout cache 
pripojenych disku z write-back to write-thru rezimu. Pak je to neco, co 
jen prenastavi vlastnosti pripojenych disku (na zacatku) a pri vlastnim 
provozu uz to "nic nedela".

	Co presne takto oznacena polozka znamena v konfiguraci zcela 
konkretniho radice je treba si precist v manualu.

	A ta zalozni baterka neni "automaticka soucast". Casto je to volitelna 
komponenta.

	Pokdu by se jednalo o skutecnou cache pak by jeji logika byla velmi 
podobna logice cache radice disku. V nekterych ohledech by byla dokonce 
hloupejsi - logika RAID radice (coz je v tomhle pripade radic vyssiho 
radu - prvni radic uz je uz soucasti elektroniky disku) nezna skutecnou 
geometrii fyzickeho media ani aktualni polohu hlav a tudiz v podstate 
nemuze optimalizovat poradi zapisu dat s ohledem na geometrii media a 
aktualni polohu.
	

> (mimochodem, jak to funguje, když vypadne proud a data
> zůstanou v této cache? Prostě se po obnovení napájení zapíše sekvence dat z
> paměti a předpokládá se, že tímto budou data z hlediska vyšších vrstev (fs,
> os, aplikace) konzistentní?)

	Ano, az na ten predpoklad. Cache nic nepredpoklada. Ona jen dodatecne 
zapise co se po ni stejne zapsat chtelo. Jaky je vyznam takto zapsanych 
dat z hlediska vyssich vrstev je zalezitosti vyssich vrstev.

> Dále je v konfiguraci logických disků (volumes) položka read cache a write
> cache. Co je toto za cache? Jde o konfiguraci logických disků, tedy
> přepokládám, že jako cache bude použita "nějaká" fyzická ram (řadiče?,
> serveru?) a nějaký pokročileší algoritmus řízení cache. Víte někdo, jak to
> funguje?

	Ja si myslim, ze prave tohle je cache radice (a to, o cem byla rec pred 
chvili byla jen konfigurace cache na discich).

> Bohužel jsem nikde nenašel konkrétní informace o tom, jak to celé funguje.
> Vždy jsou to jen poměrně obecné informace, jenže abych se mohl zodpovědně
> rozhodnout jak provést konfiguraci při konkrétní aplikaci, tak potřebuji
> vědět jak to opavdu je. Předpokládám, že implementace logiky u různých
> výrobců bude velmi podobná.

	Ano a ne. Zalezi jakou konkretni vlastnost sledujes. Casy, kdy se pri 
zaklazani databaze vnitrni format optimalizoval podle fyzicke geometrie 
disku (aby se snizil cas seekovani pri ocekavane stridave praci s daty a 
indexy) jsou nenavratne pryc od te doby, co se skutecnou geometrii disku 
uz nedozvis.

	Opravdu zalezi ceho se snazis dosahnout. Nikdy nestaci pouzit magicke 
slovo "bezpecnost" - musis vedet proti jakym konkretnim utokum a zavadam 
se mas v planu branit. Na otazku "bezpecnost" opravdu neexistuje zadna 
obecne platna odpoved. Cim neme informaci v otazce, tim obecnejsi 
odpoved - a cim obecnejsi odpoved, tim bud' mensi bezpecnost nebo vyssi 
cena reseni. A ta cena reseni muze rust vysoko nade vsechny meze ceny 
dat, ktera se snazis chranit, cimz to ztrati rozumny smysl.

	Pokud ti jde o to pochopit jak to cele funguje - obecne principy 
nastudovat lze. Jiste nebude problem najit jak co je to "read-ahead", 
write-back a podobne terminy, se kterymi se setkas, kdyz budes 
zjistovat, co cache umi. Jestli ale doufas, ze najdes detailni informace 
o tom, jak tu-kterou vseobecne znamou vec konkretne implementoval ve 
zcela konkretnim radici zcela konkretni vyrobce, tak to se obavam, ze 
se nepodari - takove veci jsou, a to celkem logicky, soucasti obchodniho 
tajemstvi.

							Dan





More information about the Users-l mailing list