Чатыры самыя цікавыя функцыі новай Apple File System
На якая прайшла WWDC Apple прадставіла новую файлавую сістэму - Apple File System, або APFS. Хоць HFS + выкарыстоўваецца на ўсіх прадуктах Apple (і будзе выкарыстоўвацца яшчэ як мінімум год, рэліз APFS запланаваны на 2017), патрабаванням сучасных файлавых сістэм HFS + не адказвае. Ёй ужо больш за 30 гадоў, яна была створана для часоў, калі дыскеты і жорсткія дыскі лічыліся апошнім словам тэхнікі. Каб выкарыстоўваць HFS + на iOS, tvOS і watchOS, Apple прыйшлося дадаць зусім іншы, не падтрымоўваны на macOS функцыянал: напрыклад, шыфраванне для кожнага асобнага файла.
У новай APFS дадалі столькі функцый, што вочы разбягаюцца: аптымізацыя для Flash і SSD, абарона ад страты дадзеных пры аварыйным завяршэнні працы за кошт павелічэння колькасці атомарных аперацый , Убудаваная падтрымка некалькіх тыпаў шыфравання, моцна паменшаны час водгуку, хуткая адзнака памеру файлаў і тэчак - спіс можна працягваць і працягваць. У гэтым артыкуле мы разгледзім чатыры, як нам здаецца, самыя цікавыя функцыі новай файлавай сістэмы.
Бяспечнае Copy-on-write
Для пачатку нам прыйдзецца разабрацца, з некалькімі ключавымі тэрмінамі. Атамарнага аперацыі - гэта такія аперацыі, якія выконваюцца ў файлавай сістэме або базе дадзеных непадзельна, і спрасціць іх немагчыма. Атамарнага аперацыя не можа застацца няскончанай, калі будзе перапыненая. Такая аперацыя альбо выконваецца цалкам, альбо не выконваецца зусім. POSIX-сумяшчальнае бяспечнае атамарнага захаванне файла выконваецца наступным чынам - калі мы працуем з дадаткам і захоўваем файл, дадзеныя з памяці выгружаюцца ў часовы файл на дыску. Калі праграма ўпэўнена, што дадзеныя былі выгружаны цалкам і без памылак, прыкладанне запытвае файлавую сістэму аб перайменаванні. Аперацыя перайменавання - атамарнага, яна будзе або выканана цалкам, альбо не выканана зусім. Пры перайменаванні адбываецца наступнае: файлавая сістэма перамяшчае часовы файл на месца захавання (скажам, з /var/tmp/Batcave_shopping.pages ў ~ fedor / Documents / Batcave_shopping.pages), а затым выдаляе стары файл.
Выявы тут і ніжэй: WWDC 2016 - Session 701 - Introducing Apple File System
Аднак, што калі мы захоўваем ня файл, а тэчку або Bundle (напрыклад, .rtfd або .app, таксама, па сутнасці сваёй, папкі)? Выкажам здагадку, мы працуем з дакументам ~ fedor / Documents / AlfredHappyBirthday.rtfd. Гэта - Bundle, у нас у ім утрымліваецца тэкст і некалькі малюнкаў. Калі мы ўносім змяненні і захоўваем іх, прыкладанне перазапісвае Bundle цалкам, а не толькі зменены тэкст ці малюнак. Патрабаванні POSIX не дазваляюць перайменаваць тэчку кудысьці, дзе ўжо ёсць дадзеныя, таму даводзіцца звяртацца да хітрыкаў. Дакумент перамяшчаецца з ~ fedor / Documents /, вызваляючы прастору, затым часовы файл з /var/tmp/AlfredHappyBirthday.rtfd пераймяноўваецца ў пустое месца. Такая аперацыя - неатомарная і небяспечная. Калі здарыцца памылка сістэмы або кампутар пазбавіцца харчавання падчас выканання аперацыі - дакумент будзе згублены.
Відавочна, што такое рашэнне непажадана. Таму ў APFS была ўведзена новая, POSIX-несумяшчальная атамарнага бяспечная аперацыя захавання тэчак. Калі праграма запытвае захаванне тэчкі, часовы і пастаянны файлы мяняюцца месцамі. Гэта выконваецца сіламі файлавай сістэмы, і такая аперацыя - атамарнага.
Гэта і ёсць функцыя бяспечнага Copy-on-write - аднаго з найважнейшых новаўвядзенняў у APFS.
Кланаванне і snapshots
Калі вам патрэбна копія нейкага файла або тэчкі - вы пстрыкае па ім правай кнопкай мышы і выбіраеце Duplicate. У HFS + гэта азначае, што файлавая сістэма счытвае ўсе дадзеныя, а потым запісвае іх у вольны прастору. Такі падыход неэфектыўна расходуе прастору і дарма нагружае дыск і працэсар. У APFS, калі вы дублируете дадзеныя - праз Duplicate ці проста ⌘C, ⌘V - файлавая сістэма капіюе толькі спасылку на іх (так званы hard link ), А змесціва не дублюецца. Такая аперацыя называецца кланаваннем. Дзякуючы кланаванні дублікат дадзеных або тэчкі з'яўляецца практычна маментальна, і займае занядбана малая колькасць вольнай прасторы. Калі вы занясеце змены ў арыгінал або клон, файлавая сістэма запіша змены і перанакіруе спасылку адпаведней, а арыгінальная частка дадзеных застанецца некранутай. У APFS аперацыя кланавання - атамарнага.
Snapshots - гэта спецыфічны здымак тома, які захоўвае інфармацыю пра дадзеныя на гэтым томе ў пэўны момант часу. Прасцей за ўсё зразумець прынцып яго працы на прыкладзе. Выкажам здагадку, што ў нас ёсць том (скажам, флэшка) з двума прэзентацыямі. Мы ствараем Snapshot гэтай флэшкі, у ім запісана: два файла Joker.key і Riddler.key, файлаў належаць наступныя блокі дадзеных. Сам Snapshot дадзеных з флэшкі не ўтрымлівае - толькі тое, якія файлы знаходзіліся на ёй у момант стварэння здымка і якія ім належалі блокі. Асаблівасць Snapshot заключаецца ў тым, што блокі, запісаныя ў яго, аказваюцца зачыненыя. Іх нельга выдаліць, перамясціць або перазапісаць. Таму, напрыклад, калі мы занясем змены ў Joker.key, а Riddler.key наогул выдалім - арыгінальныя блокі дадзеных застануцца некранутымі. Хоць такі падыход займае дадатковае свабоднае прастору, ён дазваляе APFS практычна маментальна вярнуць тым у часе да моманту стварэння любога здымка.
Space sharing
Space sharing - яшчэ адна вельмі цікавая функцыя APFS. У чарговы раз, прасцей за ўсё яе зразумець на прыкладзе. Выкажам здагадку, у вас ёсць ноўтбук, у ім усталяваны SSD на 256 ГБ (вельмі можа быць, што ў вас сапраўды ёсць такі ноўтбук) і вы хочаце ўсталяваць на яго OS X El Capitan і бэта-версію macOS Sierra. Нажаль, Apple пакуль не дазваляе загружаць аперацыйную сістэму з тома APFS (або выкарыстоўваць яго для Time Machine, калі на тое пайшло), таму вам трэба стварыць два часткі HFS +. Вы запускаеце Disk Utility і перад вамі ўстае дылема - якога аб'ёму зрабіць раздзелы? Можна проста разбіць дыск напалову, але што калі вам не хопіць месца для камфортнай працы ў El Capitan? Ці, наадварот, вы перабераце і патрэбныя вам прыкладання ў Sierra не змогуць змясціцца?
APFS вырашае гэтую праблему з дапамогай Space sharing. На дыску з APFS-тамамі узроўнем вышэй ствараецца кантэйнер, які змяшчае ўсе тамы. Яны могуць свабодна і дынамічна павялічвацца або памяншацца ў межах такога кантэйнера, не патрабуючы ад карыстальніка выбіраць, якога аб'ёму яны павінны быць. Вернемся да нашага гіпатэтычнаму ноўтбука. Калі замест HFS + выкарыстоўваць APFS для абодвух тамоў, абедзве аперацыйныя сістэмы паведамлялі б, што для кожнай даступна 256 ГБ прасторы. Пры гэтым прастору, занятае файламі адной сістэмы, аказалася б недаступна для іншай. Такое рашэнне моцна спрашчае працу з некалькімі тамамі і дазваляе атрымаць з іх выкарыстання максімальную выгаду без вялікіх цяжкасцяў.
Міграцыя з HFS +
Нарэшце, як жа мы можам міграваць на APFS? Працэс пераходу на файлавую сістэму звычайна цяжкі, доўгі і не заўсёды бяспечны. Даводзіцца рабіць рэзервовую копію дадзеных на знешні носьбіт, сціраць жорсткі дыск кампутара, запісваць новую файлавую сістэму, ўсталёўваць АС, аднаўляць свае дадзеныя з копіі і спадзявацца, што нічога не знікла са сваіх месцаў.
На шчасце, Apple пра гэта паклапацілася. Інжынеры кампаніі правялі вялікую працу над працэсам міграцыі. Працэс практычна цалкам складаецца з атомарных аперацый, але галоўнае - дадзеныя аб новай файлавай сістэме запісваюцца толькі ў пустое прастору на томе HFS +. А значыць, нават калі нешта пойдзе не так, гэта не пашкодзіць ні вашых дадзеных, ні структуры вашай ўжо існуючай файлавай сістэмы. І, па словах інжынераў Apple, уся міграцыя займае ўсяго некалькі хвілін.
Вось мы і падышлі да канца. Мы паспелі пагаварыць толькі пра чатыры функцыях, але ў APFS іх нашмат больш. Калі вы хочаце пагрузіцца ў дэталі, афіцыйная дакументацыя змяшчае ўсе падрабязнасці. Новую файлавую сістэму, як мы ўжо згадвалі вышэй, нельга выкарыстоўваць для загрузнага дыска ці Time Machine, і яна не будзе падтрымлівацца на OS X Yosemite і старэй. Афіцыйны рэліз APFS прызначаны на 2017 год.
Вы запускаеце Disk Utility і перад вамі ўстае дылема - якога аб'ёму зрабіць раздзелы?Можна проста разбіць дыск напалову, але што калі вам не хопіць месца для камфортнай працы ў El Capitan?
Ці, наадварот, вы перабераце і патрэбныя вам прыкладання ў Sierra не змогуць змясціцца?