Чотири найцікавіші функції нової 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 не зможуть вміститися?