YAFFS - YAFFS

YAFFS
Vývojáři Charles Manning
Celé jméno Ještě další systém souborů Flash
jiný
Podporované operační systémy Android , Firefox OS , Linux , Windows CE , pSOS , RTEMS , eCos , ThreadX

Yaffs ( Yet Another Flash File System ) je souborový systém navržený a napsaný Charlesem Manningem pro společnost Aleph One.

Yaffs1 byla první verzí tohoto souborového systému a byla navržena pro tehdy aktuální čipy NAND s velikostí stránky 512 bajtů (+ 16 bajtů náhradní (OOB; Out-Of-Band) oblast). Práce začaly v roce 2002 a poprvé byly vydány později v tomto roce. Počáteční práce sponzorovali Toby Churchill Ltd a Brightstar Engineering.

Tyto starší čipy také obecně umožňují 2 nebo 3 cykly zápisu na stránku. YAFFS to využívá: špinavé stránky jsou označeny zápisem do konkrétního bajtu náhradní oblasti. Novější flash čipy NAND mají větší stránky, nejprve 2K stránky (+ 64 bajtů OOB), později 4K, s přísnějšími požadavky na zápis. Každá stránka v rámci mazacího bloku (128 kilobajtů) musí být zapsána v postupném pořadí a každá stránka musí být zapsána pouze jednou.

Návrh úložného systému, který vynucuje „pravidlo jednorázového zápisu“ („vlastnost jednorázového zápisu“), má několik výhod.

YAFFS2 byl navržen tak, aby vyhovoval těmto novějším čipům. Byl založen na zdrojovém kódu YAFFS1, přičemž hlavní rozdíl spočívá v tom, že vnitřní struktury nejsou pevné, aby předpokládaly velikost 512 bajtů, a na každou zapsanou stránku je umístěno pořadové číslo bloku. Tímto způsobem lze logicky přepsat starší stránky, aniž by došlo k porušení pravidla „zapsat jednou“. To bylo propuštěno na konci roku 2003.

YAFFS je robustní souborový systém strukturovaný do protokolu, který má integritu dat jako vysokou prioritu. Sekundárním cílem YAFFS je vysoký výkon. YAFFS obvykle překoná většinu alternativ. Je také navržen tak, aby byl přenosný, a byl používán v systémech Linux , WinCE , pSOS , RTEMS , eCos , ThreadX a různých speciálních operačních systémech. Varianta „YAFFS / Direct“ se používá v situacích, kdy není k dispozici žádný operační systém, vestavěné operační systémy nebo bootloadery: má stejný základní souborový systém, ale má jednodušší rozhraní jak pro vyšší, tak pro nižší úroveň kódu a pro hardware NAND flash.

Kódová základna YAFFS je licencována jak na základě GPL, tak na základě licencí na jednotlivé produkty, které jsou k dispozici od společnosti Aleph One.

YAFFS1

Neexistuje žádný speciální postup pro inicializaci souborového systému YAFFS, kromě jednoduchého vymazání paměti flash. Když narazí na špatný blok, YAFFS se řídí inteligentním mediálním schématem označení pátého bajtu rezervní oblasti bloku. Bloky označené jako takové zůstanou od té doby nepřiděleny.

Chcete-li zapisovat data souboru, YAFFS zpočátku zapíše celou stránku (část v terminologii YAFFS), která popisuje metadata souboru , jako jsou časová razítka , název, cesta atd. Novému souboru je přiděleno jedinečné ID číslo objektu; každý datový blok v souboru bude obsahovat toto jedinečné ID objektu v náhradní oblasti. YAFFS udržuje v RAM stromovou strukturu fyzického umístění těchto bloků. Když blok již není platný (soubor je odstraněn nebo jsou části souboru přepsány), YAFFS označí konkrétní bajt v náhradní oblasti bloku jako „špinavý“. Když je celý blok (32 stránek) označen jako špinavý, může YAFFS blok vymazat a uvolnit místo. Když je volné místo v souborovém systému, YAFFS konsoliduje skupinu dobrých stránek do nového bloku. YAFFS poté uvolní místo použité špinavými stránkami v každém z původních bloků.

Když YAFFS systém montuje NAND flash zařízení, musí navštívit každý blok pro kontrolu platných dat snímáním tuto volnou plochu. S touto informací pak rekonstituuje stromovou datovou strukturu rezidentního v paměti.

YAFFS2

Koncept YAFFS2 je podobný konceptu jako YAFFS1 a sdílí většinu stejného kódu; kódová základna YAFFS2 podporuje datové formáty YAFFS1 díky zpětné kompatibilitě. Hlavní rozdíl spočívá v tom, že YAFFS2 musí procházet významnými obručemi, aby splnil požadavek moderního blesku NAND na „jednorázový zápis“.

YAFFS2 označí každý nově zapsaný blok pořadovým číslem, které se monotónně zvyšuje . Pořadí bloků lze odvodit z pořadového čísla bloku a posunu bloku v bloku. Když tedy YAFFS2 skenuje blesk a detekuje více bloků, které mají identické ID objektů a čísla bloků, může si vybrat, které použít, tím, že vezme největší pořadové číslo. Z důvodů efektivity YAFFS2 také zavádí koncept smršťovacích hlaviček. Například když je velikost souboru změněna na menší velikost, YAFFS1 označí všechny ovlivněné bloky jako špinavé - YAFFS2 to nemůže udělat kvůli pravidlu „jednorázově zapsat“. YAFFS2 místo toho píše „zmenšovací záhlaví“, což znamená, že určitý počet stránek před tímto bodem je neplatný. To umožňuje YAFFS2 rekonstruovat konečný stav souborového systému, když se systém restartuje.

YAFFS2 používá abstraktnější definici blesku NAND, což umožňuje jeho použití s ​​širší paletou částí blesku s různými geometriemi, pravidly pro manipulaci se špatnými bloky atd.

YAFFS2 později přidal podporu pro kontrolní bodování , které obchází normální skenování připojení, což umožňuje velmi rychlé časy připojení. Výkon se bude lišit, ale byly hlášeny časy připojení 3 sekundy pro 2 GB .

Viz také

Reference

externí odkazy