У новій APFS додали стільки функцій, що очі розбігаються: оптимізація для Flash і SSD, захист від втрати даних при аварійному завершенні роботи за рахунок збільшення кількості атомарних операцій. вбудована підтримка декількох типів шифрування, сильно зменшений час відгуку, швидка оцінка розміру файлів і папок - список можна продовжувати і продовжувати. У цій статті ми розглянемо чотири, як нам здається, найцікавіші функції нової файлової системи.
Для початку нам доведеться розібратися, з кількома ключовими термінами. Атомарні операції - це такі операції, які виконуються в файлової системі або базі даних нероздільно, і спростити їх неможливо. Атомарна операція не може залишитися незакінченою, якщо буде перервана. Така операція або виконується повністю, або не виконується зовсім. POSIX-сумісний безпечне атомарному збереження файлу виконується наступним чином - коли ми працюємо з додатком і зберігаємо файл, дані з пам'яті вивантажуються в тимчасовий файл на диску. Коли додаток впевнене, що дані були вивантажені повністю і без помилок, програма запитує файлову систему про перейменування. Операція перейменування - атомарна, вона буде або виконана повністю, або не виконана зовсім. При перейменування відбувається наступне: файлова система переміщує тимчасовий файл на місце збереження (скажімо, з /var/tmp/Batcave_shopping.pages в
fedor / Documents / Batcave_shopping.pages), а потім видаляє старий файл.
Однак, що якщо ми зберігаємо не файл, а папку або Bundle (наприклад. Rtfd або .app, теж, по суті своїй, папки)? Припустимо, ми працюємо з документом
fedor / Documents / AlfredHappyBirthday.rtfd. Це - Bundle, у нас в ньому міститься текст і кілька зображень. Коли ми вносимо зміни і зберігаємо їх, додаток перезаписує Bundle цілком, а не тільки змінений текст або зображення. Вимоги POSIX не дозволяють перейменувати папку кудись, де вже є дані, тому доводиться вдаватися до хитрощів. Документ переміщається з
fedor / Documents /, звільняючи простір, потім тимчасовий файл з /var/tmp/AlfredHappyBirthday.rtfd перейменовується в порожнє місце. Така операція - неатомарная і небезпечна. Якщо трапиться помилка системи або комп'ютер втратить харчування під час виконання операції - документ буде загублений.
Очевидно, що таке рішення небажано. Тому в APFS була введена нова, POSIX-несумісна атомарна безпечна операція збереження папок. Коли додаток запитує збереження папки, тимчасовий і постійний файли міняються місцями. Це виконується силами файлової системи, і така операція - атомарна.
Клонування і 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, вся міграція займає всього кілька хвилин.