UBIFS: következő generációs flash filerendszer a Nokia és a Szegedi Egyetem munkája nyomán

A beágyazott rendszerek - mint például a PDA-k, GPS vevők, mobiltelefonok, digitális kamerák - jelentős hányada flash eszközöket használ adattárolásra. A flash adattárolók működése eltér a merevlemezekétől. A mindennapi, általános célú filerendszereket - például a vfat-ot, ntfs-t, ext2/ext3-at, stb. - merevlemezek számára fejlesztették ki. Ezen filerendszerek felhasználása flash adattárolók filerendszereként nem előnyös, mert ha mégis megtesszük, idő előtti elhasználódással és jelentős teljesítménybeli hátránnyal kell számolnunk. A fejlesztők, hogy megkerüljék ezeket a nemkívánatos mellékhatásokat, flash filerendszereket fejlesztettek ki. Napjaink legfejlettebb és legnépszerűbb linuxos flash filerendszere a JFFS2.
Számos trükk és erőfeszítés ellenére a JFFS2 nem használható 512MB-nál nagyobb méretű flash eszközökön. A probléma a filerendszer dizájn szintjén található. Olyan adatstruktúrákat használ, amely kisméretű eszközök esetén ideális, azonban nagyobb eszközök esetén nagymennyiségű memóriát igényel és jelentősen lelassul. Ebből kifolyólag szükség volt egy új flash filerendszer kifejlesztésére.

A Nokia szakemberei a Szegedi Egyetemmel összefogva jelentős erőfeszítéseket tettek annak érdekében, hogy előálljanak egy olyan, flash eszközök számára kifejlesztett filerendszerrel, amely még a JFFS2-nél is jobb tulajdonságokkal rendelkezik. A munka eredményeként megszületett az UBI File System, más néven az UBIFS.

A legfontosabb különbségek a JFFS2 és az UBIFS közt:

JFFS2 UBIFS
Indexelés a flash-en Nincs B+ fa "vándorlási" (wandering) algoritmussal
Indexelés a memóriában Láncolt lista, információt tartalmaz minden node-ról, folyamatosan a memóriában tartja TNC (Tree Node Cache) amely képes zsugorodni, ha a Linux VM-nek memóriára van szüksége
Írási művelet Write through (nincs gyorsítótárazás íráskor) Write back (van gyorsítótárazás íráskor)

Az UBI egy wear-levelling (technika, amely megnöveli egyes törölhető számítógépes adattárolók, például a flash eszközök élettartamát), bad-block lekezelő, kötetkezelő réteg, amely már jelenleg is része a mainline Linux kernelnek. Az UBIFS az UBI felett működik, a kritikus feladatokat - például a szemétgyűjtést (garbage collection) vagy a bad eraseblock lekezelést az UBI-ra bízza.

Az UBIFS-t Artem Bityutskiy jelentette be tegnap az LKML-en. A bejelentésben Artem az UBIFS-t stabil, éles felhasználásra közeli állapotúként jellemezte. Az UBIFS teljesítménye kiváló. Írási műveletek esetén ~ százszor gyorsabb (egyértelműen a gyorsítótárazásnak köszönhetően) a JFFS2-nél, szinkron műveletek esetén pedig nagyjából hozza a JFFS2 sebességét.

Referenciák:
[RFC PATCH] UBIFS - new flash file system
UBIFS: The New Generation Flash File System
UBIFS - UBI File-System
UBIFS FAQ and HOWTO
UBIFS Whitepaper
UBI - Unsorted Block Images
UBI FAQ and HOWTO

Hozzászólások

de vajon ugyanazon eszközön egy merevlemezre kifejlesztett "jó" filerendszerhez (pl XFS, JFS, etc...) képest mennyivel jobb/gyorsabb stb. ...?

Linux kernel. (Almost) Made in Hungary. :))))

--
trey @ gépház

A finn-magyar rokonság a 60-as években ötlött ki és ugyan akkor kötelezően ez volt az irányvonal, azóta korántsem elfogadott és a mértékadó kutatók sem igazán állítanak konkrétat.

Csak szólok, nehogy így maradjon és egy világkatasztrófa utáni párezredik évben ha valaki kiásná a szervert, ezt lássa.

gondolom a nokia használni is kívánja majd okostelefonjaiban. vajon mennyi időnek kell eltelnie ahhoz, hogy általános támogatással rendelkezzen? más pda, mobil gyártók támogassák, windows támogassa, stb.. Én személy szerint a flash memóriákat eléggé mobil módon kezelem, és elég kellemetlen lenne ha szinte csak a saját készülékemmel lenne kompatibilis...

wikipedia szerint "Removable flash memory cards and USB flash drives have built-in controllers to perform wear-levelling and error correction so use of a specific flash file system does not add any benefit."

aztán lehet hogy az olcsóbbak nem igazi wear leveling algoritmusokat használnak hanem csak mezei bad block management-et. az viszont tuti, hogy nem olyan lineáris blokk eszköznek látszik ami direktben a belső flash memóriára képződik le. (akkor nem sokáig bírná fat fájlrendszerrel)

"a windows-os natív támogatásról meg kár beszélni..."

Tényleg, van olyan filerendszer, ami iso szabvány? Bár gondolom nincs. Pedig lenne értelme, csak kérdés, hogy melyiket tennék meg iso szabványnak. Én a mostanában készülő/elkészült általános filerendszerek valamelyikét tenném meg annak, miután stabilizálódnak. (zfs, brtfs, hammerfs) Vélemény?

És akkor az ubifs-t az ubuntu fogja először támogatni? Mert milyen jól hangzik már. :)

Gratulalok a szegedi fejlesztoknek! Csak igy tovabb!

Lehet hogy hülye kérdés de ez SSD-kre is vonatkozhat?

Én eddig ubit csak uzsira csomiztam a szenyába. :)

--
Sokan nincsenek tudatában annak, / hogy egyszer mindenki meghal. / Akik ráébrednek erre, / azonnal abbahagyják az ellenségeskedést.

"nem használható 512MB-nál nagyobb méretű flash eszközökön"
Ezt nem ugy ertettek, hogy retek lassu lesz ? mkfs.jffs2 csinalt nekem nagyobbat.

Hany megatol eri meg UBIFS -t hasznalni, ha mount ido nem erdekel.Memoria hasznalat viszont erdekel.

Lehet -e valami raid0-szeru mukodest elerni ket/tobb chip kozott ?

Valószínűleg igen. Én is utánanáztem, mert nem volt egyértelmű, de nem találtam konkrétat, csak annyit, hogy:

"David Woodhouse has pushed the limit that jffs2 can reasonably used to 512MB, which is the size used in the OLPC XO laptop. If there are ways to get beyond that (which I find unlikely), there will be a hard limit 2GB or 4GB because of limitations in the fs layout."

--
trey @ gépház