APFS

From ICO wiki
Jump to navigationJump to search

APFS (Apple File System) Autor: Madis Võrklaev AK21

Apple failisüsteem (APFS) on patendeeritud failisüsteem macOS, iOS, tvOS ja watchOS-ile, mis on loodud parandamaks senise failisüsteemi HFS+ puudusi.[1] APFS on 64-bitine failisüsteem, mis toetab üle 9 kvintiljoni (10^18) faili ühel kettajaol.[2] Ta on optimeeritud SSD- ja välkmäluseadmetele, kuid töötab ka traditsioonilistel pöörlevatel kõvaketastel.[3]

Ajalugu

Apple File System lansseeriti Apple arendajate konverentsil (WWDC) juunis 2016 asendamaks HFS+-i, mis oli kasutusel alates 1998.aastast. Kasutusele võeti see iOS-iga seadmetel 27.märtsil 2017 iOS 10.3 reliisiga ning macOS seadmetel 25.septembril 2017 macOS 10.13 reliisiga.[1]

Omadused[2]

Kloonimine (Clones)

Kloon on pea hetkeline koopia failist või kataloogist. Kloonid võimaldavad operatsioonisüsteemil teha kiireid ja energiatõhusaid koopiaid sama kettajao ulatuses, hõivamata selleks lisaruumi. Andmete muudatused kirjutatakse mujale, ning algseid, muutmata plokke jagatakse. Kui faili muudetakse, siis muutused salvestatakse algsest failist eraldi vaba koha peale. Neid muutusi nimetatakse faili deltadeks. Selline salvestusviis vähendab dokumendi koopiate ja versiooniuuenduste ruumikasutust.

Kuvatõmmis (Snapshots)

Kettajao kuvatõmmis on teatud hetkes tehtud read-only tõmmis failisüsteemist. Operatsioonisüsteem kasutab tõmmiseid efektiivsemaks varukoopiate tegemiseks ning vajadusel muutuste tagasipööramiseks.

Ruumijagamine (Space Sharing)

Ruumijagamine võimaldab erinevatel failisüsteemidel jagada ühist vaba kettaruumi. Erinevalt jäikadest partitsioneerimisskeemidest, mis eel-eraldavad kindla koguse ruumi kindlale failisüsteemile, suudavad APFS-vormindatud kettajaod kasvada ning kahaneda ilma kettajagude (volume) ringijagamiseta. APFS-i puhul luuakse konteiner, mis võib sisaldada mitut kettajagu. Kettaruum on jagatud kõigi kettajagude vahel. Vaikimisi näitab iga kettajagu APFS konteineris sama palju saadaolevat ruumi, kui on kogu konteineri ulatuses. Näiteks konteiner mahuga 100GB, mis sisaldab kettajagu A (mis kasutab 10GB) ja kettajagu B (mis kasutab 20GB), näitab mõlema kettajao puhul vaba ruumi 70GB (100GB-10GB-20GB). Konteineris saab vajadusel seadistada maksimaalse eraldatud ruumi iga kettajao jaoks, samuti ka reserveerida või garanteerida minimaalselt eraldatud ruumi kettajaole.

Krüpteerimine (Encrypting)

APFS toetab järgmisi krüpteeringuid:

  • Ilma krüpteeringuta
  • Ühe võtme krüpteering (Single-key encryption)
  • Mitme võtme krüpteering (Multi-key encryption) per-file võtmetega failidele ning eraldi võtmega tundlike metaandmete jaoks.

Mitme võtme krüpteering tagab andmete tervikluse. Ka juhul, kui kurjategijal on ligipääs füüsilisele seadmele ning seadmes olevale privaatvõtmele, ei saaks ta andmeid dekrüpteerida.

Sõltuvalt kasutuselolevast raudvarast kasutatakse AES-XTS või AES-CBC krüpteerimisvõtet.

Kirjutamisel kopeerimine (Copy-On-Write)

Tagamaks andmete säilimist kettale kirjutamisel, kasutatakse uudset copy-on-write (COW) süsteemi, mis erineb nn journaling-tüüpi meetodist, kus andmed kirjutatakse kõigepealt nn päevikusse, ja alles siis õigesse kohta kettal. COW puhul kirjutatakse failiuuendused suvalisele tühjale kohale kettal, ning neile viidatatakse metaandmestikus. Sel moel ei ole võimalik kettale kirjutamise ajal tekkinud voolukatkestuse või mõne muu vea korral sealolevaid andmeid rikkuda.[4]

Hõredad failid (Sparse files)

Tühjade plokkide efektiivsemaks kirjeldamiseks kasutatakse nn. hõredaid faile. Hõredate failide korral ei jäeta kettale tühje klastriosasid, vaid need kirjeldatakse metaandmestikus. Hõredate failide korral eraldatakse salvestusruum ainult siis, kui seda vajatakse. Sel moel saab failide loogiline suurus olla suurem kui füüsiliselt kasutatud kettaruum (teistes failisüsteemides on see võimatu).[5]

Kiire kataloogimahu arvutus (Fast Directory Sizing)

APFS võimaldab kiirelt arvutada kogu kataloogihierarhia poolt hõivatud mälumahu. Fast Directory Sizing (FDS) arvutab kasutatud mahu hetkel, kui sisu luuakse või eemaldatakse. See on sobilik kataloogidele, mis sisaldavad palju faile. FDS ei sobi kataloogidele, nagu /tmp, kus on palju ajutisi faile. FDS-i saab lubada tühjadele kataloogidele. Kataloogid, mis juba sisaldavad faile ning teisi katalooge, tuleb FDS-i kasutamiseks liigutada eelnevalt FDS-i võimekusega kataloogi.

Atomic Safe-Save

Atomic Safe-Save funktsioon teostab failide ümbernimetamist, liigutamist või kopeerimist üheainsa operatsioonina. See tähendab, et originaalandmeid ei puututa enne, kui operatsioon on edukalt lõpetatud. Seega kasutaja vaatenurgast operatsoioon kas lõpetati edukalt või seda ei teostatud üldse.

Failisüsteemi paigaldamine

Käivitatavatel kettajagudel pakub macOS High Sierra paigalduspakett turvalist uuendust HFS+ süsteemist APFS-ile. Väliste kettajagude konverteerimiseks tuleb kasutada Disk Utility-t. Paigaldatud APFS-iga kettajao saab muuta tagasi HFS+-iks, kuid sel juhul ei säili andmed.[3]

Uuendades operatsioonisüsteemi High Sierrale, vormindatakse SSD kettad automaatselt. Traditsioonilise kõvaketta ning Fusion-drive (Apple hübriidketas) puhul[6] tuleb APFS-iks konverteerimine eraldi märkeruudust lubada. Kui see jäi tegemata, või soovitakse failisüsteemi hiljem uuendada, tuleb alglaadimise käigus siseneda Recovery Mode-i (saates masina restardile, tuleb all hoida CMD+R). Sealt edasi Disk utility, kust tuleb valida boot volume ehk alglaadurti sisaldav kettajagu. Edit-menüüs on valik Convert to APFS. Kui see peaks olema mitteaktiivne, sai valitud vale kettajagu.

Väidetavalt kulub 256GB ketta konverteerimiseks umbes 2 minutit.

Kontrollimaks, kas protsess oli edukas, saab kasutada Finder->Preferences->General. Avanenud aknast tuleb valida õige ketas, ja CMD+I avab infoakna, kus on rida Format. [7]

Käsurealt konverteerimiseks tuleb alustuseks leida vajalik ketas

diskutil list

Haagi ketas lahti, kustuta partitsioon ning loo APFS konteiner:

diskutil apfs createContainer /dev/konverteeritavketas

Kui protsess on edukas, peaks lõpus olema teade

Created new APFS Container ketasX

Edasi tuleb luua APFS kettajagu

diskutil apfs addVolume ketasX APFS newAPFS

Protsessi lõpus peaks vormindatud ketas kasutatav olema.[8]

Kui kasutusel on SSD ketas, ja soovitakse automaatset APFSile vormindamist vältida, tuleb kasutada käsureaprogrammi

startosinstall

mis asub

Install macOS High Sierra.app/Contents/Resources

Automaatseks uuendamiseks ilma APFSi vormindamiseta võib kasutada käsku

/Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/startosinstall --applicationpath /Applications/Install\ macOS\ High\ Sierra.app --agreetolicense --converttoapfs NO --nointeraction[6]

APFS ja failinimed

APFS kasutab failide loomisel ainult kehtivaid UTF-8 kodeeringuga failinimesid. Nagu ka HFS+, on ka APFS tõstutundlik iOS-il ning valitava (mitte)tõstutundlikkusega macOS-il. Vaikimisi on macOS mittetõstutundlik.[3]

Puudused[9]

  • APFS ei toeta hetkel startup- ja hübriidkettaid (Fusion Drive). Time Machine varukoopiad ei ole samuti toetatud.
  • Failinimed on tõstutundlikud.
  • OS X 10.11 Yosemite ja sellest varasemad versioonid ei tööta APFS-iga vormindatud ketastega.
  • Toetatud on ainult 64-bitised seadmed.

Teiste failisüsteemide tugi

APFS-iga süsteem suudab lugeda HFS+-vormindatud kettaid.[10]

HFS+-iga süsteem suudab lugeda APFS-iga vormindatud kettaid, kui operatsioonisüsteemiks on macOS High Sierra.[10] Viimane võib olla ebatäpne, kuna ajakirja Macworld andmetel suudab lugeda APFS-vormindatud ketast ka Sierra.[11]

Teiste failisüsteemide tugi suuresti puudub, ning APFS-ketta lugemiseks tuleks kasutada võrgujagamise protokolle. APFS-is on toetatud SMB ja NFS protokollid.[10]

Linuxi jaoks on olemas tarkvara APFS for Linux, mis suudab APFSi vormindatud kettalt lugeda, kuid mitte sinna kirjutada[12]

Windowsi peal töötab UFS Explorer Standard Access, mis võimaldab samuti APFSi lugeda.

Allikad