obmedzenia filesystemu UFS2: Too many links

Lubomir Host rajo at platon.sk
Mon Jan 15 12:11:48 CET 2007


On Mon, Jan 15, 2007 at 11:27:40AM +0100, Dan Lukes wrote:
> Lubomir Host napsal/wrote, On 01/15/07 10:35:
> > chcem sa spytat, ci je mozne na nejakej verzii FreeBSD s nejakym
> > suborovym systemom (napr UFS alebo UFS2) mat v jednom adresari viac ako
> > 32766 podadresarov. Inymi slovami, aby presiel tento test (benchmark):
> 
> 	Aniz bych nahledl do zdrojaku, odhaduji, ze limit je ve skutecnosti 
> limitem postu jmen, ktere muze nejaky konkretni inode mit. Adresar ma 
> vzdy nejmene dve jmena (jmeno v nadrazenem adresaru a '.' v sobe samem) 
> a kazdy podadresar k tomu prida dalsi jmeno ('..' v takovem 
> podadresari), to je, u 32766 podaadresaru celkem 32768 jmen, coz by, 
> pokdu se pocet linku uklada do dvou bajtu znamenkove byl presne nas limit.
> 
> 	Jak jsem rikal, do zdrojaku jsme nekoukal, takze nevim, jestli se UFS2 
> v tomto ohledu od UFS1 lisi. Pokud ani, tak pomuze prechod na UFS2, 
> pokud nikoli, tak to samo o sobe resenim nebude.
> > Dalsia podotazka: ako zistim, ze mam naozaj UFS2 a nie UFS? Vo vypise
> > prikazu mount je stale napisane 'ufs', aj ked to je pravdepodobne UFS2.
> 
> 	dumpfs <device|moutpoint>
> 
> 	Je to hned na prvnim radku.
> 

Skusal som to na roznych verziach FreeBSD. Na spominanej 6.0-RELEASE-p2
mi dumpfs pise toto:

# dumpfs /home | head -n 1     
magic   19540119 (UFS2) time    Mon Jan 15 11:48:14 2007

Na 4.11-RELEASE-p19 mi to zase pise:

# dumpfs /home | head -n 1 
magic   11954   time    Mon Jan 15 11:52:14 2007

U mna test neprejde ani na jednej z tychto masin. Cize som si overil, ze mi
prechod z UFS na UFS2 nepomoze.

> > Je tento problem riesitelny bez zmeny platformy?
> 
> 	Jak uz vyse padlo, mozna je a mozna neni resenim prechod na UFS2. 
> Teoreticky moznym dalsim resenim je preklad worldu s predefinovanym 
> typem pro ukadani teto polozky an neco vetsiho. Jednak je potreba (pote) 
> preformatovat disk, jednak je i jakekoliv dalsi programu treba prelozit 
> na takto upravenem stroji, ale ani to zdaleka nezarucuje, ze nebudou 
> zadne problemy.

Takuto zmenu si fakt netrufam spravit a uz vobec nie nasadit len tak do
produkcie. Taketo riesenie by bolo najskor neudrziavatelne do buducna.

Zdrojaky k UFS som nasiel v /usr/src/sys/ufs/, zatial co ostatne
podporovane filesystemy som nasiel v /usr/src/sys/fs/. Prijde mi to
trochu zmatocne, kedze to sluzi na to iste. V /usr/src/sys/fs vidim
tieto filesystemy:

deadfs devfs fdescfs fifofs hpfs msdosfs ntfs nullfs nwfs portalfs
procfs pseudofs smbfs udf umapfs unionfs

Ktore z nich by som teoreticky mohol pouzit ako nahradu za nativny UFS?

> 	Zmena platformy to vyresi po ujisteni se, ze na dane vybrane platforme 
> je limit vyssi.

Linux 2.6.x jadro s XFS s vytvorenim 35000 adresarov (cize nad limitom
FreeBSD s UFS1/UFS2) nemalo problem. Navyse sa mi ten moj jednoduchy
benchmark zdal 2x rychlejsi na linuxe, aj ked je to tazko porovnavat
(rychlejsie disky vo FreeBSD s ukoncenim na 32676 polozke, IDE disky
v linuxe a koniec az na 35000 polozke).

> 	No a pak jeste muze reseni koukat ze strany, kterou je tezke posoudit, 
> protoze vubec nevime PROC je potreba mit v adresari tolik podadresaru. 
> Vetsina aplikaci, ktere znam ja, si existenci takovych limitu uvedomuji 
> a maji pro tyto pripady nejaky mechanismus, ktery umoznuje data rozdelit 
> do slozitejsi struktury s mensim poctem polozek v jednom adresari - 
> treba vycleneneim nekolika prvnich znaku ze jmena pro prvni uroven 
> vnoreni a ostatnich znaku nazvu pro dalsi uroven vnoreni adresaru (pocet 
> urovni byva take nekdy konfigurovatelny).
> 
> 	Samozrejme, pokud sama aplikace nepocita s tim, z eby byla nasazena pro 
> "takhle velkou ulohu", nemusi to umet. Pak jeste muze byt resenim 
> upravit aplikaci (stejne lze takove chovani povazovat za chybu navrhu) 
> nebo s epodivat po nejake jine, ktera dela totez, ale je lepe napsana.
> 
> 	Tezko ovsem posoudit, co muze byt resenim v tomto konkretnim pripade.

Aplikacia je v podstate frontend k databaze obrazkov. Na vyvoji
aplikacie som sa podielaj aj ja. Priznavam sa. ;-)  Informacie
o obrazkoch su ulozene v databaze, subory su na filesysteme. Kedze kazdy
obrazok ma niekolko "podverzii", zdalo sa mi logicke zoskupit tieto
verzie obrazkov do jedneho adresara a mena adresarov vytvarat podla ID
zaznamu v databaze.

Ano, nevravim, ze sa to nedalo navrhnut inac, ale zial ma vtedy
obmedzenie na pocet podadresarov nenapadlo testovat. Najma nie kvoli
tomu, ze pocet suborov v jednom adresari vysoko prekracuje pocet 100
tisic suborov.

Kedze znova upravit aplikaciu na pouzivanie viacerych urovni adresarov
nie je prave najjednoduchsie a stary produkcny server aj tak treba
upgradnut, vysledkom bude asi migracia na linux. Vlastne je aplikacia na
linuxovom desktope dokonca vyvijana, takze by to nemalo byt
komplikovane.

rajo

-- 
  ,''`.  Lubomir Host 'rajo' <rajo AT platon.sk>    ICQ #:  257322664
 : :' :  Jabber: rajo AT jabber.platon.sk      VoIP: callto://rajo207
 `. `'   WWW: http://rajo.platon.sk/  Platon Group: http://platon.sk/
   `-    GnuPG key: DC0C C7EA 55C8 B089 C41D 944A F251 A93A 2361 A82F



More information about the Users-l mailing list