Четыре самые интересные функции новой Apple File System. Файловая система Apple File System (APFS)

На вчерашней компания Apple показала новые версии операционных систем macOS (Sierra) 10.12, iOS 10, tvOS 10, watchOS 3, приложение для обучения детей программированию Swift Playgrounds и новые эмодзи.

Казалось бы, ничего интересного. Однако, Apple всё-таки выкатила кое-что фундаментальное. Самая значительная разработка из всего упомянутого на презентации - это файловая система нового поколения Apple File System (APFS) в операционной системе macOS (Sierra) 10.12.

На сайте для разработчиков вскоре после презентации опубликована документация с основными характеристиками и описанием файловой системы, которая повторяет отдельные функции мощной свободной файловой системы ZFS.

Сейчас в компьютерах Apple используется файловая система HFS+, расширенная версия HFS (Hierarchical File System, иерархическая файловая система), созданной более 30 лет назад. Подобно своей предшественнице, HFS+ использует древовидную структуру, называемую B*-дерево, для хранения большей части метаданных. Отсюда и название «иерархическая файловая система».

Официальное представление HFS+ состоялось 19 января 1998 года, вместе с MacOS 8.1. С 2002 года в системе реализовано журналирование для повышения надёжности хранения информации. С версии OS X 10.3 журналирование включено по умолчанию, появилась возможность работать в режиме с учётом регистра имён.

Вплоть до версии OS X 10.7 разработчики продолжали дорабатывать HFS+ и реализовывать на уровне файловой системы новые функции для OS X. Но факт остаётся фактом: HFS изначально разрабатывалась во времена флоппи-дисков и крутящихся винчестеров, когда размеры файлов измерялись в килобайтах или мегабайтах. Сегодня многие работают с накопителями SSD, где хранятся миллионы файлов - гигабайты или терабайты данных. К файловой системе выдвигаются совершенно иные требования. Вместо доработки старого кода компания Apple решила наконец-то написать новую файловую систему с нуля.

Файловая система APFS нового поколения пока находится на стадии developer preview , то есть её не планируется выкатывать в массовое использование в ближайшее время. В данный момент нельзя использовать том APFS как загрузочный диск, его также нельзя применять в системе резервного копирования Time Machine, в Fusion Drive или с шифрованием File Vault. Но можно для обычного незагрузочного тома.

Предстоит ещё долгая доработка и тестирование, но уже потом APFS станет основной файловой системой Apple на десятилетия вперёд.

APFS, в отличие от HFS+, изначально различает регистр символов в названиях файлов и папок, и эту функцию нельзя отключить. Это следует иметь в виду всем, кто решит использовать APFS.

Основные характеристики

В официальной документации перечислены общие характеристики файловой системы APFS в сравнении с HFS+.

Контейнеры и тома

Контейнер - это основной объект для хранения данных в APFS. Конейнеры обычно полностью совпадают с записями GUID Partition Table (GPT), у них собственная схема защиты от сбоев и распределения дискового пространства. Каждый контейнер содержит один или больше томов или файловых систем, в каждой из которых есть собственное пространство имён , то есть набор файлов и директорий.

APFS напрямую не поддерживает программный RAID, но её можно использовать с томами Apple RAID для поддержки Striping (RAID 0), Mirroring (RAID 1) и Concatenation (JBOD).

64-битные индексные дескрипторы (inode)

64-битные иноды значительно увеличивает пространство имён, по сравнению с 32-битными индентификаторами в HFS+. В 64-битной файловой системе APFS поддерживается более 9 квинтиллионов файлов на каждом томе. Этого должно хватить каждому, как говорил Билл Гейтс.

Наносекундные метки времени

В APFS значительно увеличена точность меток времени (таймстампов). APFS поддерживает установку меток времени с точностью до наносекунды. Для сравнения, в HFS+ метки времени выставлялись с точностью до секунды.

Наносекундные таймстампы очень важны в современных файловых системах, потому что они помогают реализовать атомарности и атомарных транзакций - одного из основных требований ACID к транзакционной системе (например, к СУБД). Атомарность гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.

Защита от сбоев

В APFS реализована инновационная схема метаданных copy-on-write, которую Apple называет «защитой от сбоев» (“Crash Protection”). Она гарантирует, что изменения в файловой системе и записи в журнал остаются в синхронизированном виде, если что-то происходит во время записи - например, пропадает электропитание.

Схема copy-on-write в ZFS

Разреженные файлы (sparse files)

Файл с атрибутом «разреженный» предполагает содержание блоков нулевых байт, не хранимых на накопителе, а подразумеваемых. В HFS+ не было поддержки разреженных файлов.

Расширенные атрибуты

APFS имеет встроенную поддержку расширенных файловых атрибутов, которая в HFS+ реализовалась через файл Attributes, то есть через B-дерево.

Шифрование

Apple заявляет, что шифрование является фундаментальным свойством, которое встроено в APFS на уровне файловой системы. Для каждого тома в контейнере APFS устанавливается одна из моделей шифрования: без шифрования, шифрование с одним ключом, шифрование с несколькими ключами. В последнем случае отдельные ключи применяются для шифрования файлов и метаданных. В зависимости от оборудования, APFS использует режим шифрования AES-XTS или AES-CBC.

Клонирование файлов и директорий

Клонирование - практически мгновенное копирование файла или директории, при котором не требуется дополнительное место для хранения данных. При модификации клона файловая система записывает только изменение данных. Таким образом, новая файловая система может хранить много версий больших файлов, отнимая меньше дискового пространства.

Снапшоты

Снапшоты - открытые только для чтения «слепки» файловой системы в томе. Операционная система может использовать снапшоты для более эффективной процедуры резервного копирования. То есть наконец-то Time Machine будет работать нормально (быстро).

Конечно, по своим возможностям APFS значительно уступает 128-битной файловой системе ZFS , которую поддерживают Linux, FreeBSD и другие свободные ОС, но со стороны Apple это шаг в правильном направлении.

Странно, что в предварительной документации не упомянута функция компрессии, которую HFS+, кстати, поддерживает.

Apple долго пыталась перенести ZFS на систему OS X, по этому поводу велась активная дискуссия в списках рассылки ZFS, были опубликованы предварительные снапшоты для следующей версии OS X. Позже была сделана реализация OpenZFS для OS X (O3X) и MacZFX .

Файловая система ZFS распространяется с открытым исходным кодом, и Apple вполне могла позаимствовать некоторые идеи для файловой системы APFS. Реализация open source для APFS пока не готова, компания Apple планирует опубликовать задокументировать и опубликовать формат APFS в 2017 году.

На конференции WWDC сегодня вечером состоится первая формальная сессия, где разработчикам более подробно продемонстрируют новые возможности APFS.

Самые вкусные новости часто остаются за кулисами презентаций Apple. Причина в том, что некоторые из них подходят преимущественно для разработчиков, а на другие банально не хватает времени — немудрено, при таких-то масштабных анонсах iOS 10! Появление новой файловой системы от Apple под названием APFS (The Apple File System) прошло без шума и пыли, однако утечка просочилась Интернет, и теперь ничего не мешает внимательно изучить её.

APFS представляет собой файловую систему нового поколения, которая может работать на всех устройствах, начиная с Apple Watch и заканчивая Mac Pro. The Apple File System оптимизирована под SSD/Flash-накопители, то есть ставка делается уже не на жёсткие диски, а максимальный приоритет присваивается шифрованию. На сегодняшний день широкое распространение получила более старая купертиновская разработка – HFS+, с которой стоит сравнить APFS. Но сначала, как ни странно, опишем список ограничений APFS:

  • Отформатированные в APFS разделы не могут быть использованы в качестве загрузочных дисков.
  • APFS чувствительна к большим и маленьким буквам в названиях файлов.
  • Резервные копии Time Machine не поддерживаются в APFS.
  • Отформатированные в APFS разделы не подходят для шифрования через FileVault.
  • Конструкция Fusion Drive пролетает мимо APFS.

Кроме того, сейчас APFS не является проектом с открытым кодом, да и сама Apple вряд ли имеет на неё подобные планы. Тем более, что купертиновцы только в следующем году собираются публично заявить о своей файловой системе нового поколения.

Расписав недостатки, способные отпугнуть рядового пользователя, стоит обозначить и достоинства APFS :

  • Конечно же, плодотворная работа с твердотельными накопителями.
  • Использование так называемых контейнеров в качестве ячеек хранения, которые сильнее защищены от сбоев. Кроме того, каждый контейнер может экспортировать один или несколько разделов, или файловых систем, имеющих собственные имена, файлы и директории. Заметьте , что изначально не заявлена прямая поддержка RAID, однако APFS может быть объединена с разделом Apple RAID, чтобы работали RAID 0, RAID 1 и JBOD. Подключаемые RAID-массивы также смогут подружиться с APFS.
  • APFS поддерживает 64-битные индексные дескрипторные числа, в то время как файловые идентификаторы HFS+ сосредоточены на 32-х битах. APFS в состоянии уместить квинтиллион файлов в одном разделе. Поверьте, это много:)
  • Временные интервалы в APFS делятся по наносекундам, а не секундам, как в HFS+.
  • APFS поддерживает разреженные файлы, структура которые позволяет экономить пространство на диске.
  • Распределитель блоков устроен более умным образом: в APFS он определяет размер объём хранилища, в то время как в HFS+ всегда привязан к жёстким рамкам.
  • APFS обладает серьёзной защитой от потери данных вследствие сбоя.
  • APFS поддерживает расширенные атрибуты файлов.
  • TRIM в файловой системе APFS работает несинхронно при удалении и распределении свободного пространства, из-за чего метаданные изменяются единожды и обеспечивается высокая стабильность системы
  • Шифрование — заключительная и ключевая составляющая The Apple File System. Файловая система использует полноценное шифрование AES-XTS или AES-CBC (в зависимости от «железа»), объединяет принципы, заложенные со времён OS X 10.7 Lion и iOS 4, и работает с множеством ключей.

Подытожить данную новость-статью следует информацией о совместимости , так как с APFS смогут работать только OS X Yosemite, El Capitan и Sierra — более старые версии банально её не распознают. Отформатированные в APFS разделы могут быть раскрыты через SMB, но протокол AFP окажется недоступным. И, наконец, сторонним разработчикам придётся провести масштабное обновление своих продуктов ради поддержки файлового системы нового поколения от Apple.

На прошедшей 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), а затем удаляет старый файл.

Однако, что если мы сохраняем не файл, а папку или 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 год.

На вчерашней презентации WWDC 2016 компания Apple показала новые версии операционных систем macOS (Sierra) 10.12, iOS 10, tvOS 10, watchOS 3, приложение для обучения детей программированию Swift Playgrounds и новые эмодзи.

Казалось бы, ничего интересного. Однако, Apple всё-таки выкатила кое-что фундаментальное. Самая значительная разработка из всего упомянутого на презентации - это файловая система нового поколения Apple File System (APFS) в операционной системе macOS (Sierra) 10.12.

На сайте для разработчиков вскоре после презентации опубликована документация с основными характеристиками и описанием файловой системы, которая повторяет отдельные функции мощной свободной файловой системы ZFS.

Сейчас в компьютерах Apple используется файловая система HFS+, расширенная версия HFS (Hierarchical File System, иерархическая файловая система), созданной более 30 лет назад. Подобно своей предшественнице, HFS+ использует древовидную структуру, называемую B*-дерево, для хранения большей части метаданных. Отсюда и название «иерархическая файловая система».

Официальное представление HFS+ состоялось 19 января 1998 года, вместе с MacOS 8.1. С 2002 года в системе реализовано журналирование для повышения надёжности хранения информации. С версии OS X 10.3 журналирование включено по умолчанию, появилась возможность работать в режиме с учётом регистра имён.

Вплоть до версии OS X 10.7 разработчики продолжали дорабатывать HFS+ и реализовывать на уровне файловой системы новые функции для OS X. Но факт остаётся фактом: HFS изначально разрабатывалась во времена флоппи-дисков и крутящихся винчестеров, когда размеры файлов измерялись в килобайтах или мегабайтах. Сегодня многие работают с накопителями SSD, где хранятся миллионы файлов - гигабайты или терабайты данных. К файловой системе выдвигаются совершенно иные требования. Вместо доработки старого кода компания Apple решила наконец-то написать новую файловую систему с нуля.

Файловая система APFS нового поколения пока находится на стадии developer preview , то есть её не планируется выкатывать в массовое использование в ближайшее время. В данный момент нельзя использовать том APFS как загрузочный диск, его также нельзя применять в системе резервного копирования Time Machine, в Fusion Drive или с шифрованием File Vault. Но можно для обычного незагрузочного тома.

Предстоит ещё долгая доработка и тестирование, но уже потом APFS станет основной файловой системой Apple на десятилетия вперёд.

APFS, в отличие от HFS+, изначально различает регистр символов в названиях файлов и папок, и эту функцию нельзя отключить. Это следует иметь в виду всем, кто решит использовать APFS.

Основные характеристики

В официальной документации перечислены общие характеристики файловой системы APFS в сравнении с HFS+.

Контейнеры и тома

Контейнер - это основной объект для хранения данных в APFS. Конейнеры обычно полностью совпадают с записями GUID Partition Table (GPT), у них собственная схема защиты от сбоев и распределения дискового пространства. Каждый контейнер содержит один или больше томов или файловых систем, в каждой из которых есть собственное пространство имён , то есть набор файлов и директорий.

APFS напрямую не поддерживает программный RAID, но её можно использовать с томами Apple RAID для поддержки Striping (RAID 0), Mirroring (RAID 1) и Concatenation (JBOD).

64-битные индексные дескрипторы (inode)

64-битные иноды значительно увеличивает пространство имён, по сравнению с 32-битными индентификаторами в HFS+. В 64-битной файловой системе APFS поддерживается более 9 квинтиллионов файлов на каждом томе. Этого должно хватить каждому, как говорил Билл Гейтс.

Наносекундные метки времени

В APFS значительно увеличена точность меток времени (таймстампов). APFS поддерживает установку меток времени с точностью до наносекунды. Для сравнения, в HFS+ метки времени выставлялись с точностью до секунды.

Наносекундные таймстампы очень важны в современных файловых системах, потому что они помогают реализовать атомарности и атомарных транзакций - одного из основных требований ACID к транзакционной системе (например, к СУБД). Атомарность гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.

Защита от сбоев

В APFS реализована инновационная схема метаданных copy-on-write, которую Apple называет «защитой от сбоев» (“Crash Protection”). Она гарантирует, что изменения в файловой системе и записи в журнал остаются в синхронизированном виде, если что-то происходит во время записи - например, пропадает электропитание.

Схема copy-on-write в ZFS

Разреженные файлы (sparse files)

Файл с атрибутом «разреженный» предполагает содержание блоков нулевых байт, не хранимых на накопителе, а подразумеваемых. В HFS+ не было поддержки разреженных файлов.

Расширенные атрибуты

APFS имеет встроенную поддержку расширенных файловых атрибутов, которая в HFS+ реализовалась через файл Attributes, то есть через B-дерево.

Шифрование

Apple заявляет, что шифрование является фундаментальным свойством, которое встроено в APFS на уровне файловой системы. Для каждого тома в контейнере APFS устанавливается одна из моделей шифрования: без шифрования, шифрование с одним ключом, шифрование с несколькими ключами. В последнем случае отдельные ключи применяются для шифрования файлов и метаданных. В зависимости от оборудования, APFS использует режим шифрования AES-XTS или AES-CBC.

Клонирование файлов и директорий

Клонирование - практически мгновенное копирование файла или директории, при котором не требуется дополнительное место для хранения данных. При модификации клона файловая система записывает только изменение данных. Таким образом, новая файловая система может хранить много версий больших файлов, отнимая меньше дискового пространства.

Снапшоты

Снапшоты - открытые только для чтения «слепки» файловой системы в томе. Операционная система может использовать снапшоты для более эффективной процедуры резервного копирования. То есть наконец-то Time Machine будет работать нормально (быстро).

Конечно, по своим возможностям APFS значительно уступает 128-битной файловой системе ZFS , которую поддерживают Linux, FreeBSD и другие свободные ОС, но со стороны Apple это шаг в правильном направлении.

Странно, что в предварительной документации не упомянута функция компрессии, которую HFS+, кстати, поддерживает.

Apple долго пыталась перенести ZFS на систему OS X, по этому поводу велась активная дискуссия в списках рассылки ZFS, были опубликованы предварительные снапшоты для следующей версии OS X. Позже была сделана реализация OpenZFS для OS X (O3X) и MacZFX .

Файловая система ZFS распространяется с открытым исходным кодом, и Apple вполне могла позаимствовать некоторые идеи для файловой системы APFS. Реализация open source для APFS пока не готова, компания Apple планирует опубликовать задокументировать и опубликовать формат APFS в 2017 году.

На конференции WWDC сегодня вечером состоится первая формальная сессия, где разработчикам более подробно продемонстрируют новые возможности APFS.

В 2014 году в компании Apple начали разрабатывать новую файловую систему Apple File System (APFS), которая спустя три года была анонсирована на WWDC 16 и будет использоваться в компьютерах Mac, iPhone, iPad, Apple TV и других продуктах. Первыми устройствами с APFS стали компьютеры под управлением macOS Sierra - разработчики получили возможность использовать developer preview новой файловой системы на незагрузочных дисках. А начиная с iOS 10.3 в мобильных устройствах компании Apple – iPhone и iPad - будет использоваться APFS. Первые уже получили разработчики и , точной даты финального релиза обновления операционной системы пока нет, однако можно предположить, что это произойдет в ближайшие месяцы. Но что же представляет собой Apple File System и насколько важным является переход на новую файловую систему для компании и пользователей устройств?

Сам по себе стандарт файловой системы достаточно долговечен и крайне редко подвергается радикальным изменениям. Компания Apple использовала в своих компьютерах иерархическую файловую систему HFS начиная с 1985 года и лишь в 1998 году реализовала переход на обновленную версию HFS+, которая использовалась вплоть до 2016 года, а теперь будет постепенно уступать место APFS. Возникает закономерный вопрос: если все и так отлично работает, действительно ли нужно переходить на новую файловую систему или же это окажется изменением ради самого изменения? На самом деле действительно нужно. В отличие от разработчиков, для среднестатистического пользователя анонс APFS прошел практически незамеченным, однако новую файловую систему можно назвать знаковым и даже революционным изменением.

Проблема HFS и HFS+ заключается в том, что эти файловые системы были разработаны в то время, когда флеш-память была слишком дорогой для массового рынка. Теперь же SSD-накопители очень популярны и доступны, однако их поддержка в HFS+ реализована за счет дополнительного модуля, изначально созданного для плееров iPod. Фактически за время своего развития HFS+ обросла слишком большим количеством дополнительного кода и «костылей», так что вместо ее модернизации намного более простым и логичным шагом было создание новой файловой системы - такой, чтобы она изначально соответствовала особенностям актуальных устройств, имела большой запас прочности на будущее и решала многие проблемы предшественника.

Шифрование

Защиту пользовательских данных в компании Apple считают одним из приоритетных направлений, поэтому в новой файловой системе шифрование является фундаментальным свойством. Для каждого тома в контейнере APFS устанавливается одна из моделей шифрования: без шифрования, шифрование данных пользователя одним ключом, шифрование метаданных и данных пользователя несколькими ключами. В зависимости от оборудования, APFS использует режим шифрования AES-XTS или AES-CBC.

Клонирование файлов и директорий

В APFS изменился принцип работы с дублирующимися файлами. Если в HFS+ два одинаковых документа занимали удвоенный объем дискового пространства, то в новой файловой системе место на накопителе будет занимать только один файл из двух. И даже при модификации клона APFS не будет дублировать файлы и запишет только изменение данных.

Разреженные файлы (sparse files) и расширенные атрибуты

Файл с атрибутом «разреженный» предполагает, что содержание блоков нулевых байт, хранится не на накопителе, а в виде информации об этих последовательностях в метаданных файловой системы. В отличие от APFS, в HFS+ не было поддержки разреженных файлов. Для пользователей это означает большую экономию дискового пространства, увеличение быстродействия за счет отсутствия временных затрат на запись нулевых байт и увеличение срока службы накопителей. Кроме того, APFS имеет встроенную поддержку расширенных файловых атрибутов, которая в HFS+ была реализована через дополнительный файл Attributes.

Защита от сбоев

В APFS реализована инновационная схема метаданных copy-on-write, которая гарантирует, что изменения в файловой системе и соответствующие им записи в журнал остаются в синхронизированном виде даже при возникновении непредвиденной ситуации, например отключении электричества. Кроме того, APFS в принципе записывает данные по шаблонам другого типа, которые лучше распознаются флеш-дисками, и поддерживает команду TRIM, которая обеспечивает корректную работу операционной системы с удаленными файлами и свободным дисковым пространством.

Наносекундные метки времени

В APFS значительно увеличена точность меток времени. В отличие от HFS+, где время выставлялось с точностью до секунды, новая файловая система расставляет метки с указанием наносекунд. Это помогают реализовать так называемую атомарность и атомарные операции. Это гарантирует, что никакая операция не будет зафиксирована в системе частично: будут либо выполнены все ее подоперации, либо не выполнено ни одной.

64-битные индексные дескрипторы

64-битные индексные дескрипторы значительно увеличивает пространство имен, по сравнению с 32-битными идентификаторами в HFS+. APFS поддерживает более 9 квинтиллионов файлов на каждом томе.

Снапшоты и резервные копии

Снапшоты - открытые только для чтения «слепки» файловой системы в томе. Операционная система может использовать их для более эффективной процедуры резервного копирования, поскольку APFS добавляет в образ только изменившиеся файлы или части файлов, не дублируя одни и те же данные в разных резервных копиях. Впрочем, в настоящий момент macOS Sierra, сторонние приложения и даже Time Machine не поддерживают новый механизм резервного копирования. Его анонс - это в первую очередь задел на будущее.

Работа с разделами дискового пространства

Любопытная особенность APFS касается работы накопителей, разделенных на два и более раздела. При использовании HFS+ пользователь мог оперировать только указанным для отдельно взятого раздела объемом памяти, тогда как APFS позволяет записывать данные сверх лимита за счет другого раздела. Новая файловая система не делит общий объем накопителя на независимые части, а выставляет условные границы, которые в случае необходимости могут быть немного изменены для выполнения задач пользователя.