Flash-Friendly File System (F2FS): Difference between revisions
No edit summary |
|||
(53 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
Rühm: A21 | Rühm: A21 | ||
Esitamise kuupäev: | Esitamise kuupäev: 05.12.2016 | ||
Parandatud: 12.12.2016 | |||
==Sissejuhatus== | ==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 [https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. F2FS ehk välkmälusõbralik failisüsteem jõudis avalikkuseni 2012 aasta lõpus [https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. F2FS puhul on loomise algusest saadik eesmärgiks seatud jõudluse ja usaldusväärsuse tõstmine, mitte uute ilustatud funktsioonide lisamine [https://events.linuxfoundation.org/images/stories/pdf/klf2012_j_kim.pdf]. 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. | ''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 [https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. F2FS ehk välkmälusõbralik failisüsteem jõudis avalikkuseni 2012 aasta lõpus [https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. F2FS puhul on loomise algusest saadik eesmärgiks seatud jõudluse ja usaldusväärsuse tõstmine, mitte uute ilustatud funktsioonide lisamine [https://events.linuxfoundation.org/images/stories/pdf/klf2012_j_kim.pdf]. 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== | ==F2FS omadused== | ||
NAND tehnoloogial põhinevate välkmälude eripära avaldub pistelisel kirjutamisel mäluseadmele (võrrelda pistelist kirjutamist järjestikuse kirjutamisega)[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. Sagedane pisteline kirjutamine SSD mäluseadmele tekitab mäluseadmes sisemist killustatust ja langetab seadme võimekust [https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. Sealjuures on pisteline kirjutamine üpriski tavapärane, olles esile kutsutud näiteks selliste populaarsete rakenduste poolt nagu Facebook ja Twitter [https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. Tähelepanuväärne on asjaolu, et sagedane pisteline kirjutamine võib | NAND tehnoloogial põhinevate välkmälude eripära avaldub pistelisel kirjutamisel mäluseadmele (võrrelda pistelist kirjutamist järjestikuse kirjutamisega)[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. Sagedane pisteline kirjutamine SSD mäluseadmele tekitab mäluseadmes sisemist killustatust ja langetab seadme võimekust [https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. Sealjuures on pisteline kirjutamine üpriski tavapärane, olles esile kutsutud näiteks selliste populaarsete rakenduste poolt nagu Facebook ja Twitter [https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. Tähelepanuväärne on asjaolu, et sagedane pisteline kirjutamine võib oluliselt suurendada välkmälu sisend-väljund (I/O) kosteaega (latentsust) ja langetada seadme eluiga [https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. | ||
F2FS failisüsteemi eesmärgiks on optimeerida välkmäluseadme võimekust ja eluiga ning sellest tulenevalt omab järgnevaid eripärasid: | '''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. | *<span style="color:red">Välkmälusõbralik andmestruktuuride paigutus.</span> | ||
F2FS failisüsteemi andmestruktuuride paigutus mäluseadmel on viidud vastavusse NAND tehnoloogial põhinevate välkmäluseadmete ülesehituse ja toimimispõhimõtetega.[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] | F2FS failisüsteemi andmestruktuuride paigutus mäluseadmel on viidud vastavusse NAND tehnoloogial põhinevate välkmäluseadmete ülesehituse ja toimimispõhimõtetega.[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] | ||
*Tulutoov indeksite ülesehitus. | *<span style="color:red">Tulutoov indeksite ülesehitus.</span> | ||
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.“[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] F2FS failisüsteemis on antud probleem lahendatud meetodiga, mille kohaselt uuendatakse ainult üks otseste sõlmpunktide plokk ja sellele vastav sõlmpunkti adresseerimistabeli sissekanne [https://blog.acolyer.org/2015/02/26/f2fs-a-new-file-system-for-flash-storage/]. | 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.“[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] F2FS failisüsteemis on antud probleem lahendatud meetodiga, mille kohaselt uuendatakse ainult üks otseste sõlmpunktide plokk ja sellele vastav sõlmpunkti adresseerimistabeli sissekanne [https://blog.acolyer.org/2015/02/26/f2fs-a-new-file-system-for-flash-storage/]. | ||
*Mitmene logimine | *<span style="color:red">Mitmene logimine</span> | ||
F2FS on | F2FS puhul on aluseks võetud struktureeritud logidel põhinev failisüsteem (''Log-structured file system''), millele on lisatud omapoolsed täiendused. Varasematel struktureeritud logidel põhinevatel failisüsteemidel on üks suur logimisala, F2FS seevastu omab kuute logimisala, koos andmete jaotamisega kolme kategooriasse: kuum, soe ja külm.[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] Ü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 [https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]. | ||
*Kohanev logimine | *<span style="color:red">Kohanev logimine</span> | ||
F2FS | F2FS logimissü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.[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] Vastasel juhul rakendub lõimitud logimine, mis paraku võib esile kutsuda vähesel määral pistelist kirjutamist [http://elinux.org/images/1/12/Elc2013_Hwang.pdf]. 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 | *<span style="color:red">fsync´i kiirendamine taastumise edasilükkamisega</span> | ||
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.[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] | 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.[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] | ||
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.[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] 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. | 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.[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] 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.[https://events.linuxfoundation.org/images/stories/pdf/klf2012_j_kim.pdf][http://elinux.org/images/1/12/Elc2013_Hwang.pdf][https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] | 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.[https://events.linuxfoundation.org/images/stories/pdf/klf2012_j_kim.pdf][http://elinux.org/images/1/12/Elc2013_Hwang.pdf][https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] | ||
Line 36: | Line 39: | ||
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. | 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. | ||
[[File:Wai joonis1.jpg | [[File:Wai joonis1.jpg|frame|center|alt=Joonis 1: Kulumise kiirenemise test.|Joonis 1: Kulumise kiirenemise test.[http://elinux.org/images/1/12/Elc2013_Hwang.pdf]]] | ||
Joonis 1: Kulumise kiirenemise | |||
Ekperiment näitas F2FS failisüsteemi korral 2,7 korda madalamat mäluseadme kulumismäära võrreldes EXT4 failisüsteemiga. | 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 | 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 materjalidest). 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. | ||
[[File:NormalizedPerformance joonis2.jpg|frame|center|alt=Joonis 2: Võrdlev jõudlustest.|Joonis 2: Võrdlev jõudlustest.[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf]]] | |||
Seevastu failiserveri sisend/väljund mustrid on erinevad ning siin näitas F2FS 2,4 korda paremat tulemust võrreldes EXT4 failisüsteemiga. | 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 lõikes oli F2FS sooritusvõime EXT4-st 2,5 korda kõrgem. | E-kirjade (''varmail'') lõikes oli F2FS sooritusvõime EXT4-st 2,5 korda kõrgem. | ||
Võrguülekande töötluse töökoormaga tuli samuti F2FS kõige paremini toime, ületades EXT4-ja tulemust 16-ne protsendiga. | Võrguülekande töötluse (''oltp'') töökoormaga tuli samuti F2FS kõige paremini toime, ületades EXT4-ja tulemust 16-ne protsendiga.[https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf] | ||
==F2FS kasutamine== | |||
Allolev on näide, kuidas USB mälupulgale F2FS failisüsteemi paigaldada. F2FS partitsiooni loomiseks tuleb esmalt paigaldada vastavad vahendid. Järgnevaid käske tuleb käivitada <span style="color:#FAA741">juurkasutaja õigustes</span>. Samuti on vajalik kettahaldustarkvara [https://wiki.itcollege.ee/index.php/Fdisk '''fdisk'''] olemasolu. | |||
Ametlikust hoidlast F2FS failisüsteemi loomiseks vajalike vahendite allalaadimine ja paigaldamine: | |||
{|style="background:lightyellow;width:415px;margin:3px;border:1px solid lightgrey" align=centre | |||
| style="padding:5px 5px 5px 5px;" | <source lang="bash"> | |||
apt update && apt install f2fs-tools | |||
</source> | |||
|} | |||
Käsklusega [https://wiki.itcollege.ee/index.php/Lsblk '''lsblk'''] saab ülevaate ühendatud mäluseadmetest (v.a suvapöördusmälud) ja nendel olevatest partitsioonidest. Antud näite puhul tähistab mälupulka <span style="color:#0000FF">sdb</span>. Kettahaldustarkvarasse saab siseneda järgneva käsuga: | |||
{|style="background:lightyellow;width:415px;margin:3px;border:1px solid lightgrey" align=centre | |||
| style="padding:5px 5px 5px 5px;" | <source lang="bash"> | |||
fdisk /dev/sdb | |||
</source> | |||
|} | |||
Uue tühja GPT kettajao tabeli (antud käsklusega kaovad ka mälupulgal olevad andmed) ning seejärel uue primaarse kettajao loomine. Nõustuda vaikimisi väärtustega (jälgi, et vaikimisi kettajao tüüp oleks primaarne) kuni valikute lõpuni, vajutades iga kord enter-klahvi. Muudatuste salvestamiseks mälupulgale ja kettahaldustarkvarast väljumiseks sisestada viimasena '''w''' | |||
{|style="background:lightyellow;width:415px;margin:3px;border:1px solid lightgrey" align=centre | |||
| style="padding:5px 5px 5px 5px;" | <source lang="bash"> | |||
g | |||
n | |||
w | |||
</source> | |||
|} | |||
F2FS failisüsteemi olemasolu kontrollimiseks sisestada käsureale käsklus '''mkfs''' ning vajutada kaks korda tab-klahvi, tulemusena kuvatakse olemasolevad failisüsteemid. Nimekirjas peaks olema ka '''mkfs.f2fs'''. | |||
Vormindamine ehk failisüsteemi määramine kettajaole. Antud juhul saab kettajagu <span style="color:#0000FF">sdb1</span> (eelnevalt loodud primaarne kettajagu) failisüsteemiks F2FS. | |||
{|style="background:lightyellow;width:415px;margin:3px;border:1px solid lightgrey" align=centre | |||
| style="padding:5px 5px 5px 5px;" | <source lang="bash"> | |||
mkfs.f2fs -l ligipaasf2fspulgale /dev/sdb1 | |||
</source> | |||
|} | |||
Kontrolliks sisestada käsklus '''lsblk -f''', mis näitab lisaks mäluseadmetele ja nende partitsioonidele ka partitsioonidel olevaid failisüsteemi tüüpe. | |||
Käsitsi failisüsteemiga ühenduspunkti loomiseks tekitada kataloog ja ühendada see failisüsteemiga. | |||
{|style="background:lightyellow;width:415px;margin:3px;border:1px solid lightgrey" align=centre | |||
| style="padding:5px 5px 5px 5px;" | <source lang="bash"> | |||
mkdir /mnt/f2fspulk | |||
mount /dev/sdb1 /mnt/f2fspulk | |||
</source> | |||
|} | |||
F2FS failisüsteemiga mälupulgale (ühenduspunkti kataloogi) kirjutamiseks tuleb kataloogile määrata kirjutamisõigus. Antud juhul määratakse näitena kõigile kõik õigused. | |||
{|style="background:lightyellow;width:415px;margin:3px;border:1px solid lightgrey" align=centre | |||
| style="padding:5px 5px 5px 5px;" | <source lang="bash"> | |||
chmod 777 /mnt/f2fspulk | |||
</source> | |||
|} | |||
Ühenduspunkti lahtihaakimiseks. | |||
{|style="background:lightyellow;width:415px;margin:3px;border:1px solid lightgrey" align=centre | |||
| style="padding:5px 5px 5px 5px;" | <source lang="bash"> | |||
umount /dev/sdb1 | |||
</source> | |||
|} | |||
Mälupulgale paigaldatud F2FS failisüsteem toimis minul tõrgeteta. | |||
F2FS failisüsteemi seadistamine Ubuntus juurkettajaona kasutamiseks on keerukam, sest F2FS ei ole Ubuntus täielikult toetatud. Täielik F2FS failisüsteemi tugi on operatsioonisüsteemil OpenMandriva [https://f2fs.wiki.kernel.org/] [https://blog.openmandriva.org/2016/04/3244/]. | |||
==Kokkuvõte== | |||
F2FS on kõrge potentsiaaliga tulevikkuvaatav failisüsteem, mida tõendab eelnevalt välja toodud võrdlus teiste failisüsteemidega, kus F2FS näitas märgatavalt paremaid tulemusi. Samuti võib artiklis kirjeldatud F2FS omadusi lugedes tõdeda, et antud failisüsteem aitab NAND tehnoloogial põhinevate välkmälude parimad küljed esile tuua, sealjuures tegemata järeleandmisi mäluseadme kulumise osas. F2FS tagab võrreldes EXT4 failisüsteemiga märgatavalt kõrgema mäluseadme eluea. Samuti on võimalik failisüsteemi teatud määral seadistada, mis koos eelnevaga teeb antud failisüsteemist hea töövahendi süsteemiadministraatorile. | |||
F2FS puudustena mainin vähest operatsioonisüsteemide tuge, mis muudab failisüsteemi kasutamise keeruliseks või kohati võimatuks. Ühilduvuse probleemid on etteaimatavad, sest näiteks F2FS´il puudub täielikult ühilduvus Microsoft Windowsiga. Tegemist on siiski suhteliselt noore failisüsteemiga, mida üha enam täiustatakse ja loodetavasti tuleb peagi ka täielik ühilduvus Ubuntu ja teiste enimkasutatavate operatsioonisüsteemidega. | |||
==Kasutatud materjalide loetelu:== | |||
1. https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf<br> | |||
2. https://events.linuxfoundation.org/images/stories/pdf/klf2012_j_kim.pdf<br> | |||
3. http://elinux.org/images/1/12/Elc2013_Hwang.pdf<br> | |||
4. https://blog.acolyer.org/2015/02/26/f2fs-a-new-file-system-for-flash-storage/<br> | |||
5. https://f2fs.wiki.kernel.org/ | |||
6. https://blog.openmandriva.org/2016/04/3244/ | |||
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]] | [[Category:Operatsioonisüsteemide administreerimine ja sidumine]] |
Latest revision as of 19:51, 12 December 2016
Autor
Nimi: Veiko Villo
Rühm: A21
Esitamise kuupäev: 05.12.2016
Parandatud: 12.12.2016
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 oluliselt suurendada 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 puhul on aluseks võetud struktureeritud logidel põhinev failisüsteem (Log-structured file system), millele on lisatud omapoolsed täiendused. Varasematel struktureeritud logidel põhinevatel 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 logimissü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.
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 materjalidest). 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.
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
Allolev on näide, 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 olemasolu. Ametlikust hoidlast F2FS failisüsteemi loomiseks vajalike vahendite allalaadimine ja paigaldamine:
apt update && apt install f2fs-tools
|
Käsklusega lsblk saab ülevaate ühendatud mäluseadmetest (v.a suvapöördusmälud) ja nendel olevatest partitsioonidest. Antud näite puhul tähistab mälupulka sdb. Kettahaldustarkvarasse saab siseneda järgneva käsuga:
fdisk /dev/sdb
|
Uue tühja GPT kettajao tabeli (antud käsklusega kaovad ka mälupulgal olevad andmed) ning seejärel uue primaarse kettajao loomine. Nõustuda vaikimisi väärtustega (jälgi, et vaikimisi kettajao tüüp oleks primaarne) kuni valikute lõpuni, vajutades iga kord enter-klahvi. Muudatuste salvestamiseks mälupulgale ja kettahaldustarkvarast väljumiseks sisestada viimasena w
g
n
w
|
F2FS failisüsteemi olemasolu kontrollimiseks sisestada käsureale käsklus mkfs ning vajutada kaks korda tab-klahvi, tulemusena kuvatakse olemasolevad failisüsteemid. Nimekirjas peaks olema ka mkfs.f2fs.
Vormindamine ehk failisüsteemi määramine kettajaole. Antud juhul saab kettajagu sdb1 (eelnevalt loodud primaarne kettajagu) failisüsteemiks F2FS.
mkfs.f2fs -l ligipaasf2fspulgale /dev/sdb1
|
Kontrolliks sisestada käsklus lsblk -f, mis näitab lisaks mäluseadmetele ja nende partitsioonidele ka partitsioonidel olevaid failisüsteemi tüüpe.
Käsitsi failisüsteemiga ühenduspunkti loomiseks tekitada kataloog ja ühendada see failisüsteemiga.
mkdir /mnt/f2fspulk
mount /dev/sdb1 /mnt/f2fspulk
|
F2FS failisüsteemiga mälupulgale (ühenduspunkti kataloogi) kirjutamiseks tuleb kataloogile määrata kirjutamisõigus. Antud juhul määratakse näitena kõigile kõik õigused.
chmod 777 /mnt/f2fspulk
|
Ühenduspunkti lahtihaakimiseks.
umount /dev/sdb1
|
Mälupulgale paigaldatud F2FS failisüsteem toimis minul tõrgeteta. F2FS failisüsteemi seadistamine Ubuntus juurkettajaona kasutamiseks on keerukam, sest F2FS ei ole Ubuntus täielikult toetatud. Täielik F2FS failisüsteemi tugi on operatsioonisüsteemil OpenMandriva [23] [24].
Kokkuvõte
F2FS on kõrge potentsiaaliga tulevikkuvaatav failisüsteem, mida tõendab eelnevalt välja toodud võrdlus teiste failisüsteemidega, kus F2FS näitas märgatavalt paremaid tulemusi. Samuti võib artiklis kirjeldatud F2FS omadusi lugedes tõdeda, et antud failisüsteem aitab NAND tehnoloogial põhinevate välkmälude parimad küljed esile tuua, sealjuures tegemata järeleandmisi mäluseadme kulumise osas. F2FS tagab võrreldes EXT4 failisüsteemiga märgatavalt kõrgema mäluseadme eluea. Samuti on võimalik failisüsteemi teatud määral seadistada, mis koos eelnevaga teeb antud failisüsteemist hea töövahendi süsteemiadministraatorile.
F2FS puudustena mainin vähest operatsioonisüsteemide tuge, mis muudab failisüsteemi kasutamise keeruliseks või kohati võimatuks. Ühilduvuse probleemid on etteaimatavad, sest näiteks F2FS´il puudub täielikult ühilduvus Microsoft Windowsiga. Tegemist on siiski suhteliselt noore failisüsteemiga, mida üha enam täiustatakse ja loodetavasti tuleb peagi ka täielik ühilduvus Ubuntu ja teiste enimkasutatavate operatsioonisüsteemidega.
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/