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

Dan Lukes dan at obluda.cz
Fri Sep 10 16:29:26 CEST 2010


On 09/10/10 14:23, Miroslav Prýmek:
>> Je celkem bezne, i kdyz zcela nespravne, ze lidi delaji "mirror" z jiz zivych disku. ... 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 ... o obsah jednoho souboru. A system pritom bezi jako by se nechumelilo.
>
> Ja jsem si vzdycky rikal, ze to je podivny postup. Ale je i v handbooku: http://www.freebsd.org/doc/handbook/geom-mirror.html
> - s tim, ze tam je varovani na to, ze v poslednim sektoru nesmi byt zadny data:

Jako bys to mohl ovlivnit nebo alespon snadno zjistit. To je trivialni 
otazka pro kod tech utility - ale ne pro cloveka, ktery je spousti.

>> Warning: ...This risk is reduced if creating the mirror is done promptly after a fresh install of FreeBSD.

Risk je predevsim zcela odstranen, kdyz se dodrzuje spravny postup "po 
vrstvach" - nejprve se pripravi uloziste sdruzenim tech disku - a pak se 
na nem delaji dalsi operace az po newfs a kopirovani dat.

Chapu, ze to muze byt problem pri instalaci na cisty stroj - 
'sysinstall' neni nastroj, ktery by ti s konfiguraci disku pred dalsimi 
kroky nejak zvlast pomohl. Ano, pokud vis jak veci funguji, tak si na 
konci nechas volne misto a pak z disku muzes udelat mirror az pozdeji.

Ono to tak nastesti vetsinou dopadne i nevedomky - sysinstall 
zaokrouhluje velikost disku na cele stopy a tim mu nakonci vetsinou 
potrebny "ocintek" zbude.

> dozvi se filesystem, ktery je pod tim, ze se zarizeni o jeden sektor zmensilo?

Kod, ktery zacina obsluhovat nejakou datovou oblast na disku dokaze 
zjistit velikost partition na ktere se obsluhovana struktura nachazi. A 
jestli je mensi nez struktura sama, tak je jasne, ze je neco sakra v 
neporadku. I kdyby to neslo jinak, tak proste precte posledni byte 
struktury - a jestli se mu to nepovede, ma jasny problem.

> Mam treba ad0 o velikosti X sektoru a na nem jedinou mbr slice o velikosti X-64 (zacina na sektoru 63) a na ni
> jedinou partition o velikosti Y (kolik si ukousne bsdlabel nevim) - ad0s1a.
> Na ad0s1a je ufs.
> Pote z celyho disku udelam mirror gm0.
> Kdyz primountuju mirror/gm0s1a, bude system nejak automagicky vedet, ze ufs na nem ma najednou velikost jenom Y-1?

Ne. Ale kod, ktery zacne zpracovavat MBR vi jak je velky cely disk (v 
tomto pripade gm0). Ze zaznamu v MBR vi, kde zacina slice a jak je 
velka. A jestli mu konec saha za konec gm0, tak to je fatalni chyba a 
vubec neni mozne s onou slice zacit pracovat. I kdyz v tomto bode se muj 
nazor s nazorem jadra rozchazi. Pravdu mam ale samozrejme ja ;-)

> Jinymi slovy: system sam od sebe tu ufs shrinkne o jeden sektor?!

To ani nahodou. Kdyz mas stesti, tak uz ona "jedna slice" nesahala kvuli 
zaokrouhlovani az do konce a ten volny sektor za ni je. A tak problem 
nevznikne (ani na dalsich vrstvach, protoze ty uz byly umistovany do 
mensi slice).

Mimochodem, to "zacinani na LBA 63" zacina byt docela problem. 
Prinejmensim na SSD discich, kde bys kvuli vykonu i zivotnosti 
potreboval, aby se alokacni bloky filesystemu dokonale prekryvaly s 
fyzickymi bloky na zarizeni ...

						Dan




More information about the Users-l mailing list