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