Открыть сервисСервис

Файловая система APFS

APFS (Apple File System) — это проприетарная файловая система, разработанная компанией Apple Inc. для использования в операционных системах macOS, iOS, iPadOS, tvOS и watchOS. Она была представлена в 2016 году как замена устаревшей файловой системе HFS+ (Mac OS Extended), которая использовалась с 1998 года. APFS оптимизирована для работы с твердотельными накопителями (SSD) и флеш-памятью, обеспечивая высокую производительность, надёжность и безопасность данных.

История

Разработка APFS началась в 2014 году, когда Apple осознала, что HFS+, созданная в эпоху жёстких дисков и малых объёмов данных, не соответствует современным требованиям. Основные проблемы HFS+ включали неэффективное управление пространством, слабую поддержку шифрования и отсутствие механизмов для работы с большими файлами и томами. В июне 2016 года на конференции Worldwide Developers Conference (WWDC) Apple анонсировала APFS как новую файловую систему, которая будет внедряться поэтапно.

Первая публичная версия APFS появилась в macOS Sierra 10.12.4 (март 2017 года). В iOS 10.3 (март 2017 года) APFS стала основной файловой системой для iPhone и iPad, заменив HFSX (вариант HFS+ для iOS). В macOS High Sierra 10.13 (сентябрь 2017 года) APFS была установлена по умолчанию на всех устройствах с SSD, а для традиционных жёстких дисков (HDD) и гибридных накопителей (Fusion Drive) оставалась HFS+ до macOS Mojave 10.14 (2018 год), где APFS стала поддерживаться и для них.

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

APFS построена на принципах современной файловой системы, ориентированной на флеш-память. Её ключевые особенности включают:

  • 64-битная адресация inode: поддерживает до 9 квинтиллионов (9 × 10¹⁸) файлов на том, что значительно превышает возможности HFS+ (4,3 миллиарда).
  • Оптимизация под SSD: использует алгоритмы TRIM и команды NVMe для продления срока службы накопителей.
  • Клонирование файлов: позволяет создавать копии файлов без дублирования данных на диске, используя механизм copy-on-write (COW). При изменении одного из клонов изменяются только изменённые блоки.
  • Снимки (snapshots): создание моментальных копий тома для резервного копирования, отката изменений или работы с версиями данных.
  • Шифрование: встроенная поддержка шифрования на уровне файлов (FileVault 2) с возможностью использования нескольких ключей для разных пользователей или приложений.
  • Пространственная экономия (space sharing): позволяет создавать несколько томов (контейнеров) в одном разделе диска, которые динамически делят свободное пространство.
  • Быстрое изменение размера тома: возможность увеличивать или уменьшать размер тома без переформатирования.
  • Устойчивость к сбоям: использование журналирования (журнал метаданных) и механизма COW для предотвращения повреждения данных при внезапном отключении питания.

Архитектура

APFS использует иерархическую структуру, основанную на контейнерах (container). Контейнер — это логический раздел диска, который может содержать один или несколько томов (volumes). Каждый том имеет собственное корневое дерево каталогов и файлов, но все они совместно используют свободное пространство контейнера.

Ключевые компоненты

  • Суперблок (Superblock): хранит метаданные контейнера, включая размер, версию и указатели на корневые деревья томов.
  • Объекты (Objects): все данные в APFS представлены в виде объектов — файлов, каталогов, расширенных атрибутов, снимков и т.д. Каждый объект имеет уникальный идентификатор (OID).
  • B-деревья (B-trees): для индексации и поиска объектов используются сбалансированные B-деревья, что обеспечивает быстрый доступ даже при большом количестве файлов.
  • Copy-on-Write (COW): при записи данных новые блоки не перезаписывают старые, а создаются в новом месте. Старые блоки остаются доступными до тех пор, пока не будут освобождены (например, при удалении снимка).

Версии и форматы

APFS имеет несколько версий, которые различаются в зависимости от операционной системы и поколения устройств:

  • APFS 1.0: первая версия, использовалась в iOS 10.3 и macOS Sierra 10.12.4.
  • APFS 2.0: улучшенная версия для macOS High Sierra 10.13, добавила поддержку снимков и шифрования.
  • APFS 3.0: версия для macOS Mojave 10.14, включала оптимизации для HDD и Fusion Drive.
  • APFS 4.0: представлена в macOS Catalina 10.15, улучшила производительность и добавила поддержку томов с раздельными данными (например, системный том и том данных).
  • APFS 5.0: версия для macOS Big Sur 11.0, оптимизирована для процессоров Apple Silicon (M1).

Формат APFS использует 64-битные указатели и поддерживает размеры блоков от 4 КБ до 1 МБ. По умолчанию для SSD используется блок 4 КБ, для HDD — 16 КБ.

Применение

APFS является основной файловой системой для всех современных устройств Apple:

  • macOS: начиная с High Sierra 10.13, APFS используется по умолчанию на SSD; на HDD и Fusion Drive — с Mojave 10.14.
  • iOS / iPadOS: с iOS 10.3 (2017) все устройства используют APFS.
  • tvOS: с tvOS 10.2 (2017).
  • watchOS: с watchOS 3.2 (2017).

APFS также используется в Apple File System (APFS) для внешних накопителей, отформатированных в macOS (например, для Time Machine или переноса данных).

Преимущества и недостатки

Преимущества

  • Высокая производительность: благодаря оптимизации под SSD и COW, операции копирования, перемещения и удаления выполняются быстрее, чем в HFS+.
  • Экономия пространства: клонирование и снимки позволяют избежать дублирования данных.
  • Надёжность: COW и журналирование минимизируют риск повреждения данных.
  • Гибкость: возможность динамического изменения размера томов и создания снимков.
  • Безопасность: встроенное шифрование с поддержкой нескольких ключей.

Недостатки

  • Несовместимость с Windows и Linux: APFS не поддерживается нативно в Windows (требуется стороннее ПО, например, Paragon APFS или MacDrive) и в большинстве дистрибутивов Linux (существует экспериментальная поддержка через модуль ядра).
  • Проблемы с HDD: на традиционных жёстких дисках APFS может работать медленнее, чем HFS+, из-за особенностей COW и фрагментации.
  • Сложность восстановления данных: при повреждении метаданных восстановление данных может быть затруднено из-за сложной структуры B-деревьев.
  • Ограниченная поддержка старых устройств: APFS не поддерживается на компьютерах Mac с процессорами Intel до 2012 года (некоторые модели требуют обновления прошивки).

Критика

APFS подвергалась критике за следующие аспекты:

  • Проблемы с Time Machine: в ранних версиях macOS High Sierra резервные копии на APFS-томах могли быть повреждены или не создаваться корректно. Apple исправила эти ошибки в обновлениях.
  • Фрагментация на HDD: из-за COW и динамического распределения блоков на жёстких дисках может возникать значительная фрагментация, что снижает производительность.
  • Отсутствие поддержки сжатия: в отличие от HFS+, APFS не поддерживает прозрачное сжатие файлов (хотя в macOS есть отдельные механизмы сжатия для системных файлов).
  • Сложность для разработчиков: из-за проприетарного характера APFS документация ограничена, что затрудняет создание сторонних утилит для работы с файловой системой.

Интересные факты

  • APFS поддерживает до 2^63 (9,22 × 10¹⁸) файлов на том, что теоретически позволяет хранить больше файлов, чем атомов во Вселенной.
  • Механизм клонирования APFS используется в macOS для быстрого создания копий файлов в Finder (например, при перетаскивании с зажатой клавишей Option).
  • В iOS APFS используется для разделения системного раздела и раздела данных, что позволяет выполнять обновления системы без потери пользовательских данных.
  • APFS не поддерживает создание загрузочных томов на внешних накопителях с версией macOS ниже High Sierra.

Источники

  • Apple Inc. (2016). "Apple File System Guide". Apple Developer Documentation.
  • Apple Inc. (2017). "macOS High Sierra: Technical Overview". Apple Press.
  • Apple Inc. (2019). "APFS: The Next Generation File System". WWDC 2019 Session Notes.
  • "APFS: A Technical Overview" (2017). Ars Technica.
  • "APFS vs HFS+: Performance and Reliability" (2018). MacWorld.
  • "Apple File System (APFS) Reference" (2020). GitHub: apfs-fuse.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru