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