zvetseni gmirroru a optimalizace newfs
Miroslav Lachman
000.fbsd at quip.cz
Mon Apr 18 14:47:24 CEST 2016
Dan Lukes wrote on 04/14/2016 23:20:
> Popsany problem nastaval jen u "prasacke konfigurace", kdy se nejdriv
> pokusis udelat GPT pres cely disk a pak nad nim udelat gmirror, takze se
> tyhle dve struktury prekryvaly.
>
> Kdyz se to udela korektne, tedy GPT se dela az uvnitr gmirroru, tak se
> to prekryvat nemuze.
>
> Jestli to z toho bootuje nevim, uz jsem to dost dlouho nezkousel.
Uz si matne vybavuju, ze ten problem neni tak uplne problem FreeBSD, ale
HW. I kdyz tu konfiguraci gmirroru udelas spravne a disky nejprve vlozis
do mirroru a pak je rozdelis GPT, tak disk ma v poslednim sektoru
metadata gmirroru, ale nektere motherboardy odmitnou nabootovat, pokud
se neshoduje obsah primarni i zalozni tabulky toho GPT. Takze i kdyz by
z toho system byl schopny nabootovat, tak se k tomu system vubec
nedostane a zarizne to hned "firmware" toho boardu.
>> Da se jeste neco udelat pro rychlejsi fsck?
>
> Zmensit pocet inode. Option -i. Defaultni hodnota vychazi z pomerne
> hodne male hodnoty prumerne velikoti souboru a vede k vysokemu poctu inode.
>
> Tohle nemusime resit jako teoretickou ulohu. i kdyz nemas 4TB disk na
> pokusy - staci pokud volnych mas cca 1.5GB.
Ty disky uz tady mam a zatim jsem je nenasadil, takze jsou v testovacim
stroji, abych si s tim pohral. Udelal jsem nad nima gmirror a pak
rozdelil na oddily, jake to bude mit i v produkci. Ten posledni oddil,
ktery bude slouzit pro ukladani dat, jsem pak zkousel potrapit ruznymi
kombinacemi options pro newfs
> Zkousel jsem to velice lehce, ale zda se mi, ze byses mel vratit k uvaze
> o zvetseni bloku na 64k/8k - z hlediska rychlosit pristupu na disk to
> sice asi az takovy vliv nema, ale na fsck to, zda se, vliv ma pomerne
> velky.
Ano, tohle ma na fsck prazdneho disku ten nejvetsi vliv ze vsech
zkousenych moznosti.
Pro zajimavost pridavam vysledky:
Defaultni 32k/4k - fsck za 43 sekund
Upraveno na 64k/8k - fsck za 14 sekund
Pak jsem jeste zkousel upravovat pocet inodu, protoze defaultne jich tam
je 482M (pri 32k/4k) nebo 241M (pri 64k/8k)
Zkusil jsem to pomoci -i 128k dostat na 30M inodu a fsck se zkratilo:
32k/4k -i 128k (30M inodu) fsck za 32 sekund (misto 43)
64k/8k -i 128k (30M inodu) fsck za 11 sekund (misto 14)
Soucasny produkcni FS vypada takto
# df -i -t ufs /vol1
Filesystem 1K-blocks Used Avail Capacity iused
ifree %iused Mounted on
/dev/mirror/gm0s2f 1870203712 1697619120 97776444 95% 9648452
109130426 8% /vol1
Pri zdvojnasobeni kapacity a casem i ulozenych dat bych se mel pohybovat
nekde okolo 20M inodu a tak by tech 30M melo stacit, ale nechci to zase
moc riskovat a tak jsem zkousel jeste "-i 96k" pro 40M inodu a to na
fsck nemelo prilis negativni vliv. Porad to byl cas kolem 11 sekund
(plus minus setina)
Posledni pokusy byly s optimalizaci podle prumerne velikosti souboru,
kterou jsem vzal podle vystupu "df". Tedy zabrane misto, deleno poctem
vyuzitych inodu:
# df -i -t ufs /vol1 | tail -n +2 | awk '{ print $3" / "$6" = "$3/$6 }'
1697619120 / 9648452 = 175.947
Z toho pak vzniklo tohle newfs
newfs -U -b 64k -f 8k -i 96k -g 176k /dev/mirror/gm1p8
Na cas fsck to nema zadny vliv. Predpokladam tedy, ze to bude spis
ovlivnovat fragmentaci. Je to tak?
V takovem pripade bych asi spis volil vetsi cislo, protoze do vypoctu
tech 176k se zapocitavaji i inody pro vsechny adresare, kterych je tu
opravdu hodne, protoze je to struktura v nekolika urovnich, na zpusob:
aa/aab/aabzakaznik/_soubory_uzivatele_aabzakaznik_.jpg
..
zz/zza/zaakaznik/_soubory_uzivatele_aabzakaznik_.mp3
A registrovanych uzivatelu je nekolik set tisic.
K tomu fsck - je mi jasne, ze fsck prazdneho oddilu dela neco uplne
jineho, nez fsck oddilu, ktery je plny dat, nejaka smazana data atd. ale
nevim, co presne se tam pak overuje. Zustanou tyto proporce zrychle
platit i pro zaplneny filesystem? Ze treba misto pul hodiny fsck to
probehne za 8 minut?
Mirek
More information about the Users-l
mailing list