gpart [was: ZFS root, boot selhal po update z 8.0 -> 8.1]

Dan Lukes dan at obluda.cz
Fri Sep 10 12:27:48 CEST 2010


On 09/10/10 11:17, Miroslav Lachman:
>> Je to uz nekolik let, co jsem do kodu GLABEL koukal - a pokud si to
>> vybavuju spatne, tak on je GLABEL docela mrska. Nektere datove
>> struktury, ktere pojmenovava, proste originalne zadny prostor pro text
>> jmena nemaji. A tak si je strka "nakonec".
>>
>> Je to ale tak trochu "divoka skladka"

> Je to porad tak, ze se metadata zapisuji nakonec

> Metadata na konec providera uklada kazdy GEOM modul, ktery si
> neco musi ulozit

Jen pro poradek - zdaleka ne kazdy. Takovy geom_part_mbr si nic na konec 
neuklada. A dokonce i ten, ktery ani, tak ne vzdy. Coz je pripad zrovan 
napriklad glabel
U "znamych typu partition", ktere uz samy o sobe nejaky label maji to 
glabel uklada tam.

 > ale zaroven by pak mel vzhledem k dalsim GEOM modulum
> exportovat mensi velikost toho "zarizeni", takze dalsi metadata by se
> mela zapsat o sektor drive atd. A vetsinou to tak i funguje, ale zrovna
> v tomhle pripade dochazi k nejake kolizi a jelikoz ja si to ze zdrojaku
> neprectu, tak nevim, jestli je na vine glabel, nebo gpart a jestli
> skutecne dojde k prepsani tech metadat, nebo dojde k chybnemu cteni
> metadat (zacne se cist jinde, nez na uplnem konci?)

Na vine je glabel - jenze - neni to bug, ale feature. Tedy - ona to 
chyba je - ale chyba v prvotni myslence, nikoliv v jeji implementaci..

Uvedom si, co glabel ma delat - on ma pracovat s textovym oznacenim 
nejaek partition. Kdyby (logicky a bezpecne) delal to, co popisujes ty, 
byl by vysledek jeho cinnosti neco uplne jineho.

Konkretne:

da0 zadne jmeno nema. Takze zavolame glabel, ktery si z da0 ukousne 
posledni sektor, do ktereho da jmeno a soucasne vytvori pododdil o 
sektor mensi. Tim jsme ziskali:

da0, ktery je stale bezejmenny

da0.withlabel - ktery ma jmeno. V nem bys pri[padne mohl delat dalsi 
kouzla (jako rozdelit na slice a podobne). Vznikala by tak jmena jako 
"da0.withlabels1a" a dalsi podobna. Ale da0 - to by bylo stale 
nepojmenovane ...

"Vsezahrnujici" zamereni glabel, ktere si jako cil vytycilo "pojmenujeme 
i to, co s zadnym jmenem proste nepocitalo" je proste spatne zadani - a 
nelze ho implementovat ciste.

glabel mel byt "centralnim mistem pro spravu jmen" - ale mel by s 
eomezit na spravu jmen tech partition, ktere pojem "jmena" maji a 
nepokouset se pojmenovat i objekty, ktere k tomu nejsou uzpusobeny bud' 
bubec, nebo, pripadne, koncept jmena sice maji, ale nikoliv jmena 
uzivatelsky volne volitelneho.

glabelu budiz utechou, ze neni jedinny, kdo ma "maslo na hlave".

Trochu podobna instance stejne chyby v uvaze se vaze k gmirroru. Je 
celkem bezne, i kdyz zcela nespravne, ze lidi delaji "mirror" z jiz 
zivych disku. Proste maji disk s funkcnim filesystemem, tak vezmou druhy 
disk a udelaji "mirror". je prakvapive, ze jim to system dovoli a nutne 
se vnucuje otazka - kam si napsali sva data. No jasne - napsali si je do 
posledniho sektoru. To je v poradku. Jenze by meli o ten sektor zmensit 
prostor - coz take udela. Hacek je, ze UFS (pokdu ej tam UFS) najednou 
sidli v prostoru o sektor mensim. Mozna jsme prave prisli o jeden sektor 
a protoze prostor se spravuje po alokacnich blocich, tak o cely alokacni 
blok. Mozna jsme tak prave prisli o obsah jednoho souboru. A system 
pritom bezi jako by se nechumelilo. Jedine v pripade, ze jsme takto 
zmirorovali GPT disk trosicku nadava - tim zkracenim o sektor jsme ho 
pripravili o zalozni kopii GPT a o tom se on smutne zmini - ale stejne 
bezi. Pritom by ruzne geomy v ramci "ochutnavani" partition meli 
zjistit, jestli to je regulerni partition, nebo jen nahodne zabloudily 
sektor, ktery nahodou vypada jako by partition definoval. Test na to, 
zda udavana delka partition je vubec k dispozici je to minimum, ktere by 
se melo udelat. Vetsina modulu ale nic takoveho nedela a klidne se 
rozjede i kdyz vi (mohla a mela by vedet) ze na svem konci ma par 
virtualnich sektoru, ktere ve skutecnosti neexistuji.

Dusledkem je pak to, ze obcas, kdyz chcete nejaky jiz pouzivany disk 
kompletne predelat, tak vam nezbyva nez vzit 'dd' a zacatek prepsat 
nulami - protoze prilis liny GEOM vam po predelani nachazi na disku 
jeste zbytky puvodniho deleni a protoze si neoveri, ze uz nemohou byt 
platne, tak vam vytvari naprosto nesmylna jmena zarizeni, ktera nelze 
ani pouzit ani zrusit.

No, to jsem se trosku rozcilil. Proste - na to, ze geom je kriticka cast 
systemu je docela zparchantely. Neco jsou napravitelne chyby 
implementacni, neco jsou bohuzel, tezko odstranitelne chyby v samotnem 
navrhu ...

> Jelikoz se jedna o iSCSI a muze mit libovolne cislo v zavislosti na tom, kdy se pripoji, chtel jsem pouzit "jmeno
> zarizeni" udelane glabelem. No nevyslo to...

Tohle je skutecne treba vyresit. Ale glabel v soucasne podobe dobre 
reseni neni.  Je potreba prestat cpat jmena kde nativne nejsou a neni je 
kam ulozit a zacit pouzivat ta oznaceni, ktera k dispozici jsou. Fyzicke 
disky maji napriklad seriove cislo. PCI zarizeni se zas daji 
identifikovat polohou ve sbernici. Ano - prisli bychom o vlastnost "muzu 
to rozkopat na soucastky, nahodne slozit a ono to stejne bdue fungovat". 
Kterou stejne nemame, protoze to nefunguje spolehlive. U zasahu do 
hadrwaru by se proste obcas muselo prekonfigurovat i neco softwaroveho. 
No boze - zasahy do hardware snad nedela zadny "pojidac kolacu" a my 
jsme profesionalni spravci.

Zato v soucasnem stavu to poradne nefunguje vubec nikomu ...

Jo, GEOM, ten mi fakt pije krev ;-)

						Dan




More information about the Users-l mailing list