Flash-Friendly File System (F2FS)

From ICO wiki
Jump to navigationJump to search

Autor

Nimi: Veiko Villo

Rühm: A21

Esitamise kuupäev: xx.xx.xxxx

Sissejuhatus

Flash-Friendly File System (F2FS) on Samsungi poolt loodud välkmäludele suunatud Linuxi failisüsteem, mis on Linuxi tuumas saadaval alates tuuma versioonist 3.8 [3]. F2FS ehk välkmälusõbralik failisüsteem jõudis avalikkuseni 2012 aasta lõpus [4]. F2FS puhul on loomise algusest saadik eesmärgiks seatud jõudluse ja usaldusväärsuse tõstmine, mitte uute ilustatud funktsioonide lisamine [5]. F2FS on loodud laiatarbekasutuses olevate NAND tehnoloogial põhinevate välkmälude (sealhulgas SSD) omadusi silmas pidades ning on adresseeritud probleemide lahendamisele, mis tekkisid pöörlevatele ketastele mõeldud failisüsteemide kasutamisel välkmälul põhinevatel andmekandjatel.

F2FS omadused

NAND tehnoloogial põhinevate välkmälude eripära avaldub pistelisel kirjutamisel mäluseadmele (võrrelda pistelist kirjutamist järjestikuse kirjutamisega)[6]. Sagedane pisteline kirjutamine SSD mäluseadmele tekitab mäluseadmes sisemist killustatust ja langetab seadme võimekust [7]. Sealjuures on pisteline kirjutamine üpriski tavapärane, olles esile kutsutud näiteks selliste populaarsete rakenduste poolt nagu Facebook ja Twitter [8]. Tähelepanuväärne on asjaolu, et sagedane pisteline kirjutamine võib tugevalt langetada välkmälu sisend-väljund (I/O) kosteaega (latentsust) ja langetada seadme eluiga [9].

F2FS failisüsteemi eesmärgiks on optimeerida välkmäluseadme võimekust ja eluiga ning sellest tulenevalt omab järgnevaid eripärasid:

  • Välkmälusõbralik andmestruktuuride paigutus.

F2FS failisüsteemi andmestruktuuride paigutus mäluseadmel on viidud vastavusse NAND tehnoloogial põhinevate välkmäluseadmete ülesehituse ja toimimispõhimõtetega.[10]

  • Tulutoov indeksite ülesehitus.

Andmeploki uuendamisel tuleb uuendada ka sellele vastavat otsest indeksite plokki. Otsese indeksi ploki uuendamine tekitab omakorda vajaduse uuendada vastavat kaudsete indeksite plokki. Taoline rekursiivne indeksite uuendamine kutsub esile ahelkirjutamise, mis tekitab „uitamisprobleemi.“[11] F2FS failisüsteemis on antud probleem lahendatud meetodiga, mille kohaselt uuendatakse ainult üks otseste sõlmpunktide plokk ja sellele vastav sõlmpunkti adresseerimistabeli sissekanne [12].

  • Mitmene logimine

F2FS on omaks võtnud struktureeritud logidel põhineva failisüsteemi (LFS) omadused, kuid on lisanud sellele omapoolsed täiendused. Varasematel LFS failisüsteemidel on üks suur logimisala, F2FS seevastu omab kuute logimisala, koos andmete jaotamisega kolme kategooriasse: kuum, soe ja külm.[13] Üldiselt allub jaotus põhimõttele, et sagedamini kasutatavad andmed jagunevad kuuma kategooriasse ning harvemini kasutatavad andmed külma kategooriasse. Kuum/külm andmete jaotusskeem rakendub logimise ajal, käivitades samaaegselt mitu aktiivset logimislõiku, lisades andmed ja metaandmed eraldiseisvatesse logimislõikudesse vastavalt nende oodatavale uuendamissagedusele [14].

  • Kohanev logimine

F2FS logimisüsteem muudab pistelised kirjutamised järjestikusteks (normaalne logimine), kuid mäluseadme kõrge kasutusastme korral kohandab F2FS failisüsteem logimisstrateegia normaalselt logimiselt lõimitud logimisele, mis aitab vältida mäluseadmele kirjutamise kosteaja pikaks muutumist. F2FS jälgib failisüsteemi staatust, täpsemalt muutujat k, mis iseloomustab teatud protsenti puhastest lahtritest (vaikimisi väärtuseks 5% kõigist puhastest lahtritest). Juhul, kui vabade lahtrite arv on üle 5%, siis rakendatakse normaalset logimist.[15] Vastasel juhul rakendub lõimitud logimine, mis paraku võib esile kutsuda vähesel määral pistelist kirjutamist [16]. Muutuja k väärtust saab süsteemiadministraator vastavalt soovile ise muuta, leides enda jaoks sobiva tasakaalu kiiruse ja mäluseadme eluea pikendamise vahel. Antud muutuja väärtus muutub oluliseks enamasti vaid suure koormusega süsteemides, kus kettaruumi täitumise tõenäosus on kõrge ning sealjuures ei tohi kirjutamiskiirus oluliselt langeda.

  • fsync´i kiirendamine taastumise edasilükkamisega

Andmebaasirakendused kirjutavad sagedasti faili väikesemahulisi andmeid ja kasutavad andmete säilivuse garanteerimiseks fsync´i. F2FS kasutab fsync´i jõudluse tõstmiseks efektiivset taastumise edasilükkamise mehhanismi. Võtmeideeks on kirjutada andmeplokid ja ainult nende otsesed sõlmpunktide plokid, jättes kirjutamata ülejäänud sõlmpunktid ja F2FS metaandmete plokid. Stabiilse seisu taastamise vajadusel leiab failisüsteem vajalikud andmeplokid kiiresti üles tänu otseste sõlmpunktide plokki jäetud lippudele.[17]

F2FS heaks omaduseks on veel ka äkilise elektrikatkestuse korral tagatav taastumisvõime. Elektrikatkestuse korral pöördub F2FS tagasi viimase tervikliku kontrollpunkti juurde. Selleks, et tagada alati vähemalt ühe tervikliku kontrollpunkti olemasolu, hoiab F2FS alal kahte kontrollpunkti paketti.[18] Kontrollpunkti paketi uuendamise korral kirjutab F2FS ainult ühte kontrollpunkti paketti, tänu millele on elektrikatkestuse korral andmekao ja rikete tekkimise tõenäosus väiksemaks viidud. Kirjeldatud meetod tagab ka failisüsteemi kiirema toimimise. Lisaks on F2FS-is laialipaisatud ja kehtetuks muutunud plokkide uuesti kasutuselevõtuks ning logimiseks vabade lõikude tagamiseks olemas automaatne puhastussüsteem. F2FS teostab puhastamist kahel viisil: esiplaanil ja tagaplaanil puhastamine. Esiplaanil puhastamine rakendub ainult olukorras, kus enam ei ole piisaval hulgal vabasid lahtreid. Automaatne tagaplaanil puhastamine jõustub süsteemi tegevuseta oleku ajal.[19][20][21]

F2FS võrdluses

Samsung viis F2FS testimiseks läbi mitmeid eksperimente ja võrdlevaid katsetusi. F2FS´i väidetavale välkmälu eluea pikendamise lubadusele lisab kandepinda joonisel 1 esitatud eksperimendi tulemus (võrdlus EXT4 failisüsteemiga), mille arvnäitajad iseloomustavad mäluseadme kulumise kiirenemise indeksit. Kõrgem indeks märgib kiiremat kulumist.

Joonis 1: Kulumise kiirenemise test.
Joonis 1: Kulumise kiirenemise test.[1]

Ekperiment näitas F2FS failisüsteemi korral 2,7 korda madalamat mäluseadme kulumismäära võrreldes EXT4 failisüsteemiga.

F2FS toimetulekut serverisüsteemides testiti võrdluses EXT4, BTRFS ja NILFS2 failisüsteemidega, võttes aluseks SATA SSD välkmäluseadme (test sisaldas ka PCIe SSD-d ja Galaxy S4 nutitelefoni, millest saab soovi korral lähemalt lugeda viidatud materjale lugedes). Testis (vt. joonis 2) ei näidanud F2FS üleolekut teiste failisüsteemide suhtes vaid videoserveri puhul, sest videoserver tekitab peamiselt järjestikku lugemist ja kirjutamist, mis ei ole failisüsteemidele komistuskiviks.

Joonis 2: Võrdlev jõudlustest.
Joonis 2: Võrdlev jõudlustest.[2]

Seevastu failiserveri sisend/väljund mustrid on erinevad ning siin näitas F2FS 2,4 korda paremat tulemust võrreldes EXT4 failisüsteemiga. E-kirjade (varmail) lõikes oli F2FS sooritusvõime EXT4-st 2,5 korda kõrgem. Võrguülekande töötluse (oltp) töökoormaga tuli samuti F2FS kõige paremini toime, ületades EXT4-ja tulemust 16-ne protsendiga.[22]

F2FS kasutamine

Järgnevalt toon näite, kuidas USB mälupulgale F2FS failisüsteemi paigaldada. F2FS partitsiooni loomiseks tuleb esmalt paigaldada vastavad vahendid. Järgnevaid käske tuleb käivitada juurkasutaja õigustes. Samuti on vajalik kettahaldustarkvara fdisk (viita Kolledži wikile) olemasolu. Ametlikust hoidlast F2FS failisüsteemi loomiseks vajalike vahendite allalaadimine ja paigaldamine.

apt update && apt install f2fs-tools


apt update && apt install f2fs-tools
apt update && apt install f2fs-tools

Kokkuvõte

Kasutatud materjalide loetelu

1. https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf

2. https://events.linuxfoundation.org/images/stories/pdf/klf2012_j_kim.pdf

3. http://elinux.org/images/1/12/Elc2013_Hwang.pdf

4. https://blog.acolyer.org/2015/02/26/f2fs-a-new-file-system-for-flash-storage/