gpart [was: ZFS root, boot selhal po update z 8.0 -> 8.1]
Dan Lukes
dan at obluda.cz
Fri Sep 10 20:03:37 CEST 2010
On 09/10/10 16:54, Miroslav Lachman:
>> 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 ...
>
> Ono to takhle ale v podstate je! Jenom misto /dev/da0.mujlabel se
> vytvori /dev/label/mujlabel. A tady bych klidne snesl to, ze bude o 1
> sektor mensi, bude se k nemu vyhradne pristupovat pres label a budu s
> nim pak pracovat klidne pomoci gpart / fdisk atd.
Pak by to ale fungovat melo - musis byt ale ukazneny a na existenci
nejakeho /dev/da0 opravdu dokonale zapomenout.
>> 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
>
> Tady bych si dovolil trochu nesouhlasit, on jim to v podstate nedovoli,
> dokud si uzivatele nepovoli zapis metadat na aktivni disk pomoci
> sysctl kern.geom.debugflags=16
To jsme se trochu zamotali do pojmu "zivy". Tenhle flag ti dovoli
zapisovat do objektu, ktery je aktivni v tom smyslu, ze ho prave ted
nekdo pouziva ("je otevreny"). A je tam proto, ze jakmile mas na te
partition nejake dalsi nadefinovane podrizene struktury, pak je
prakticky nemozne zaridit, aby se na ne prislusne GEOMy nepripojily -
takze se nedokazes k te partition dostat v "nepouzivanem" stavu.
To je, samozrejme, obecne take nebezpecny "override", ale neni to presne
ono co GEOMu vycitam ja.
Kdybyses dostal k partition v neotevrenem stavu (nebo dokazal presvedcit
consumery, aby ti tu partition na chvili "pujcily"), ten "override" flag
bys nastaveny nepotreboval a zapis by ti to dovolilo.
Jenze - ono je to i tak spatne a nemelo by. GLABEL by mel odmitnout
zapis na disk (alespon v te genericke variante kdy ubira sektor)
kdykoliv, kdy na te partition uz jsou nadefinovane jakekoliv dalsi
podobjekty - at jsou aktualne otevrene nebo nikoliv. Protoze nevi kam si
ty podobjekty co pisi a je mozne, ze jim svoji akci neco prepise.
Pripoustim, ze zjistit zda na partition jsou nebo nejsou nadefinovane
nadefinovane nejake dalsi (sub-)partition je obecne nemozne, ale
rekneme, ze by stacilo, kdyby rozeznaval alespon ty, ktere jsou aktualne
v systemu podporovane (to jest pred zapisem svych dat by nechal
partition "ochutnat" vsechny ostatni GEOMy a jakmile by se nejaky
"chytil" tak GLABEL uz musi akci odmitnout).
>> Jenze by meli o ten sektor zmensit prostor - coz take udela.
...
>> Mozna jsme tak prave prisli o obsah jednoho souboru. A system
>> pritom bezi jako by se nechumelilo.
> Na konci kazdeho disku, ktery jsem kdy
> rozdeloval sysinstallem / fdiskem je nekolik MB neobsazeneho mista a
> tudiz zapsany 1 sektor metadat nema zadny vliv na existujici oddily a
> jejich filesystem. V tomhle poslednim sektoru proste zadna informace
> (natoz soubor) nelezi.
To "volne misto na konci" je produktem algoritmu v sysinstalu. Nehledal
jsem ho, mam dojem, ze to nejak souvis se zaokrouhlovanim na hranice
stop nebo cylindru.
Mozna se mylim, ale predpokladam, ze pro vhodny pocet sektoru a
geometrii disku ten zbytek vyjde nulovy. Jo, pri nahodnem poctu sektoru
na disku je to spise nepravdepodobne. Sveris sva data statisticky platne
pravde a vire v neznamy neznamy algoritmus ? ;-)
> Nezbyva nez pridat aktualni problem z freebsd-geom:
> it's a race between gmirror and UFS labels
> http://lists.freebsd.org/pipermail/freebsd-geom/2010-September/004381.html
Hm, to me ani nenapadlo - ale je to dalsi pripad "cerne skladky dat" a
"lineho ochutnavani". Na rozdil od autora clanku, ja si nemyslim, ze tim
dablem je mixovani prefixove a postfixove identifikace. Zakladni problem
je, ze identifikace musi umoznit spolehlive rozeznavani "svoji"
partition a identifikacni kod musi takovou peclivou identifikaci
provadet. Pritom je to snadne - at uz mam svoje data na zacatku nebo na
konci - musim tam mit poznamenano jakou jsem mel delku, kdyz jsem
vznikal. A jakmile zjistim, ze aktualni ochutnavana partition delku
nemam - tak ej jasne, ze nejde o partition, ktera tehdy vznikala a tudiz
o partition ochutnavaneho typu.
Cely jeho problem by nevznikl, kdyby GEOM_PART_GPT neadoptoval jako
"svoji" partition, ktera jeho nebyla -a to nebyla, protoze to ve
skutecnosti byla partition patrici GEOM_MIRROR. Pritom GPT ma ve svych
datech ma pozici zalozni kopie hlavicky a z definice vi, ze tato pozice
ma byt LBA[-1]. Jakmile zjisti, ze ochutnava partition, ktera je delsi
(nebo kratsi) tak proste vi, ze tohle neni jeho partition.
Je sice hezke, ze se system rozhodl nam udelat radost, prekonat
postizeni a stejne nastartoval, jenze tahle prehnana aktivita nam ve
skutecnosti ohrozila ostatni data na disku. Je to proste nedobre
udelanej system, to at se na me jeho autor nezlobi.
Jenze to uz se zase jen zbytecne rozciluju. Open Source konovi na zuby
nehled a navzdory tomuhle jde stale jeste o dost dobry system.
Proste je potreba byt velice opatrny, vedet co a jak funguje a
nespolehat na to, ze system nas pred dusledky nasich vlastnich ukony
ochrani ...
Dan
More information about the Users-l
mailing list