Chyba cteni disku

Dan Lukes dan at obluda.cz
Tue Sep 2 15:38:39 CEST 2014


On 2.9.2014 8:07, Vilem Kebrt:
> splasily se mi nedavno na serveru zalozni disky tak ze ani geom si  s tim neporadi,
> nicmene smart nehlasi problem, asi je to ve filesystemu.

No, tak to ti ta "moje" utilita moc nepomuze. Ta provadi proste linearni 
precteni vsech datovycy bloku disk. Logickou strukturou (filesystemem) 
se nijak nezabyva. Chyby v ni tak uplne mine a skoro jiste nenapravi.

> Asi jsem natvrdlej, Dane neni nekde "nakres" jak se to sklada za sebou
> napriklad v pripade geomu ? strycek google vyhodi spoustu hlasek, ale
> nakres jsem nenasel, stacilo by mi jak jdou ty vrstvy za sebou a v
> kterych syscallech se to pohybuje, pak bych treba konecne pochopil
> freebsd pristup na fs :)

To jsou DVE otazky, a obe maji tu vlastnost, ze detailni odpoved by byla 
radove delsi nez otazka.

Jen jako nastin ...

GEOM je blokove orientovane datove uloziste. Rekneme, ze zobecneny disk. 
Vynechame managementovy interface (ten, ktery umoznuje vrstvy 
konfigurovat) a soustredme se jen na "provozni" interface - to, pres 
ktery behaji data. No a to je dost jednoduche - ma funkce 
precti/zapis/smaz blok a dale poskytuje informaci o jmenu, velikosti 
bloku a jejich celkovemu poctu.

No a tyhle filtry lze skladat na sebe. Filtr N zada od jednoho nebo vice 
spodnich filtru datove bloky a poskytuje je "nad sebe".  Rozhrani nahoru 
i dolu je stejne. Podl ejake logiky se ten-ktery filtr rozhodne na jaky 
pozadavek odpovi kterymi daty, odkud je vezme a zda (a jak) je 
modifikuje - no to je prave vlastni funkce toho filtru a u kazdeho je jina.

Priklad trivialniho filtru je filtr, ktery "vyrabi" partition. Ten kdyz 
dostane pozadavek na data z bloku N, tak t cislu N pricte offset 
odpovidajici pocatku partition, ktere se dotaz tyka a posle pozadavek 
dal dolu. V opacnem smeru jen prehodi data na ktera nijak nesaha.

Prikladem slozitejsiho filtru je RAID5 ovladac, ktery se pri prichodu 
pzoadavku na blok N rozhodne z jakeho z podrizenych zdroju ten blok 
vlastne chce ziskat a pri zpatecni ceste mozna nebude data jen tak 
propoustet, protoze mozna bude muset data dopocitavat s pomoci bloku z 
paritniho disku (taze aby vratil jeden blok nahoru bud eptorebovat dva 
bloku ze dvou podrizenych poskytovatelu).

GEOM je "in-kernel" rozhrani. Jeji rozhrani se do uzivatelskeho prostoru 
neprezentuji, krome toho nejsvrchnejsiho. Ten se prezentuje blokovym 
zarizenim v /dev, ktere umoznuje taky v podstate jen cteni/zapis bloku, 
zjisteni velikosti sektoru a celeho media.

No, a kdyz nam kupicka GEOMu konecne vypropaguje nejaky ten 
datove-ulozny prostor, muzeme zacit premyslet jak na na nem budeme psat 
- tedy - jaky na nem bude filesystem.

A to je ta druha kratka otazka s potencialne moc dlouhou odpovedi.

Filesystemu je spousta. Neni dokonce ani dano, ze filesystem musi 
existovat nad datovym ulozistem o kterem byla rec pred chvili. Takovej 
procfs pod sebou nic takovyho nema. nullfs nakonec taky ne a memfs se 
odehrava celej v pameti a taky zadny blokovy datovy uloziste nepotrebuje.

Takze FS je proste neco, co smerem "nahoru" poskytuje domluvenou sadu 
funkci. Odkud pro ne bere data je jeho vec. Ano, jedna z moznosti je, ze 
si je nejakym, pro dany FS specifickym, zpusobem zaznamenava na nejake 
datove uloziste. Treba zrovna GEOM.

I filesystem je "in-kernel" zalezitost. Ruzne filesystemy ziji (a to i 
soucasne) uvnitr kernelu, ktery jim dela "zastreseni" a propaguje jejich 
sluzby ven, k uzivatelskym aplikacim. A to pres radu syscally (tech 
"zakladnich" funkci je daleko vic nez u GEOMu).

Bez naroku na uplnost jde o syscally open, read, write, close, creat, 
link, unlink, chdir, fchdir, mknod, chmod, chown, chflags, fchflags, 
symlink, readlink, readv, writev, fchown, fchmod, rename, mkdir, rmdir, 
quotactl, stat, fstat, lstat, getdirentries, undelete, lchown, funkce z 
tridy exattr a acl - a urcite i mnohe dalsi.

Teda, ty syscally v podstate patri VFS subsystemu a ten se rozhodne 
kteremu FS (pokud vubec nejakemu) konkretni volani doruci. To zalezi 
taky na tom, ktereho souboru se dane volani tyka, protoze z toho se 
pozna, ktereho FS se tyka.

No, tak ti nevim, jestli je sance, ze jsem to alespon trochu osvetlil ...

Dan



More information about the Users-l mailing list