Neues Dateisystem für iOS, macOS, tvOS und watchOS

Das bringt das Apple File System (APFS)

18.07.2016
Von   
Mark Zimmermann leitet hauptberuflich das Center of Excellence (CoE mobile) zur mobilen Lösungsentwicklung bei der EnBW Energie Baden-Württemberg AG in Karlsruhe. Er weist mehrere Jahre Erfahrung in den Bereichen Mobile Sicherheit, Mobile Lösungserstellung, Digitalisierung und Wearables auf. Der Autor versteht es, seine Themen aus unterschiedlichsten Blickwinkeln für unternehmensspezifische Herausforderungen darzustellen. Neben seiner hauptberuflichen Tätigkeiten ist er Autor zahlreicher Artikel in Fachmagazinen.
Apple hat ein neues Dateisystem angekündigt, das in den nächsten Jahren seinen Weg in alle OS-Varianten machen wird (macOS, tvOS, iOS, watchOS). Hier ein Überblick und eine Analyse über die möglichen Einsatzzwecke von APFS innerhalb des Apple-Ökosystems.
APFS: Das neue Dateisystem für iOS, macOS, tvOS und watchOS ist für SSDs optimiert.
APFS: Das neue Dateisystem für iOS, macOS, tvOS und watchOS ist für SSDs optimiert.
Foto: Sorapop Udomsri / Shutterstock.com

Dateisysteme sind die Schnittstellen zwischen dem Betriebssystem und den Datenträgern. Ein Dateisystem organisiert dabei unter anderem:

  • die physische Belegung von Speichereinheiten,

  • die Zuordnung der physischen Speicherblöcke zu logischen Dateien und deren Namen,

  • das Verwalten von Datei-Metadaten (z.B. Größe, Dateityp) und Datei-Attributen (z.B. Zugriffskontrolle),

  • das Bereitstellen standardisierter Zugriffsschnittstellen auf Dateien (read, write, open, close, ...)

Dateisysteme sind im Vergleich zu der Entwicklung von immer leistungsfähigeren Festplatten (schnellerer Zugriff, höhere Kapazität) immer noch auf dem Stand von vor ca. 30 Jahren. Genauso alt ist das Konzept des Dateisystems HFS+ und seines Vorgängers HFS (Hierarchical File System), das in verschiedenen Abwandlungen in iOS- und macOS-Geräten seinen Dienst vollzieht.

Das erste von Apple entwickelte Dateisystem - HFS - wurde 1985 eingeführt, als der Mac 512K Apples Aushängeschild war. HFS+ war 1998 ein bedeutender Schritt und erblickte auf dem G3 PowerMac erstmalig das Licht der Welt. Seit dieser Zeit (HDD-Kapazität 4 GB) hat sich die Speicherkapazität um das Zigfache vergrößert und viele Rechner haben keine Speichermedien mehr, die auf "drehendem Rost" basieren (Festplatten). Anders gesagt: HFS wurde geschaffen, als 400-KB-Disketten die Erde regierten

Volumen- und Dateigrößen, Anzahl an Dateien und Dateien pro Verzeichnis sind hier meist in der Anzahl/Gro?ße beschränkt. Locking, feste Blockgrößen, langsame Schreibvorgänge von nicht zusammenhängenden Dateien bremsen weiterhin die I/O-Performance aus.

HFS+ wurde durch verschiedene Abspaltungen für unterschiedliche Geräte und Features (z.B. Journaling, Case-insensitive, Crypto) in mehrere konkurrierende Richtungen entwickelt. So hat auch iOS eine eigene Version von HFS. APFS (Apple File System) soll hier eine Vereinheitlichung bringen, sowohl für eine Apple Watch als auch einen OSX Server Pro.

Die Verfügbarkeit von SSD (Solid State Disks) bedingt, dass Dateisysteme von damals an die heutigen Speicherbedürfnisse angepasst werden, um den heutigen Anforderungen gerecht zu werden. Dies brachte Apple 2014 dazu, mit der Entwicklung des APFS, dem Apple Dateisystem, zu beginnen. Die Feature-Liste ist enorm und orientiert sich sehr stark an ZFS. Ein Feature wird jedoch (noch) schmerzlich vermisst: Kompression.

Trotzdem sollen die im Folgenden aufgelisteten Funktionen aufzeigen, dass Apple einige Hauptziele wie:

  • zufriedene Konsumenten (macOS, iPhone, iPad, Apple TV, Apple Watch);

  • Verschlüsselung für alle;

  • ein modernisiertes Backup für alle sowie

  • ein Dateisystem mit Optimierungen für alle Plattformen

effizient angehen will.

Effizienter Speicherplatz

Ein moderner Trend in Dateisystemen ist das effiziente Speichern der Daten, um die tatsächliche Größe des Speichermediums effektiv zu vergrößern. Übliche Ansätze beinhalten Kompression (wie erwähnt bislang nicht in APFS enthalten) und Deduplizierung.

Oft werden Daten doppelt auf Datenträgern bzw. Dateisystemen gespeichert. Dies geschieht einerseits absichtlich aus Redundanzgründen, oft aber auch unabsichtlich und ungewollt. Manchmal ist es dem Anwender auch gar nicht klar, dass Daten doppelt abgelegt werden, beispielsweise halten manche Applikationen bestimmte Daten nochmal separat in einem eigenen (versteckten) Verzeichnis vor. Diese mehrfach gespeicherten Daten nehmen natürlich auch durch jede Kopie zusätzlichen Speicherplatz in Anspruch. Deduplizierung ist ein Ansatz, das doppelte Vorhalten von Daten zu reduzieren. Es kann als Gegenstück zur Datenredundanz angesehen werden.

Wenn man eine Datei innerhalb eines Dateisystems kopiert, dann werden in APFS keine Daten tatsächlich kopiert. Stattdessen wird eine konstante Menge von Metadaten aktualisiert und die Daten auf der Festplatte sind geteilt. Änderungen an jeder Kopie bewirken, dass neuer Speicher allokiert wird (sogenanntes "Copy On Write" oder COW).

COW soll dafür sorgen, dass Schreibvorgänge in das Dateisystem auch dann nachvollziehbar bleiben, wenn der Vorgang unerwartet abbricht. Also wenn zum Beispiel die Stromversorgung des Rechners ausfällt.

Diese Klone führen möglicherweise zu Verwirrung. Während das Kopieren von Dateien keinen Platz verbraucht, so wird durch das Löschen von Dateien möglicherweise kein Festplattenplatz frei. Man stelle sich vor, man müsse für das Freigeben von Speicherplatz den letzten Klon einer großen Datei aufspüren, um den Platz tatsächlich zurückzubekommen. Es wird spannend zu sehen, wie Apple dies löst.

Dies hat noch einen Effekt, APFS entfernt den üblichen Weg eines Anwenders, lokale Redundanzen von Dateien vorzuhalten. Ein Defekt der zugrundeliegenden Speichereinheit bedeutet, dass alle Klone unbrauchbar sind, während bei vollständigen Kopien und lokalen Defekten nur eine der Dateien betroffen ist.

Dateien zwischen Speichermedien zu kopieren (z.B. auf einen USB Stick, um sie zu teilen) dauert natürlich noch immer eine Zeit proportional zu der Menge der zu kopierenden Daten.

Dieses Verfahren ist auf einem Computer zwar bereits mit Effizienzen verbunden, auf kleinen Computern mit stark beschränktem Speicher, wie ein iPhone oder iPad dürfte dieses Verfahren Gold wert sein. Eine Datei an zwei Orten verbraucht nur einmal Platz. APFS hat damit das Potential, eine Art "Time Machine Backup" pro Datei zu erzeugen. Eine Änderungsverfolgung für beliebige Dateien wird damit möglich. Man könnte zu vorherigen Versionen navigieren, die Historie reduzieren, oder den ganzen Stapel von Versionen auf einmal löschen.

Snapshots

Apple File System bringt die Möglichkeit mit, einen Zustand (State) eines Dateisystems "einzufrieren". Dies wird nicht durch eine 1:1-Kopie erzeugt. Viel mehr geht APFS sehr platzsparend vor.

Snapshots sind schreibgeschützte Kopien, die sehr schnell erstellt werden können. Anfänglich belegen diese keine zusätzliche Speicherkapazität. Mit zunehmender Änderung von Daten innerhalb des produktiv genutzten Datenbestandes durch den Anwender nehmen diese jedoch schrittweise mehr Kapazität, da sie Verweise auf die älteren Daten speichern und so ein Löschen dieser Daten verhindern.

Snapshots sind nur auf ganzen Dateisystemen mo?glich, nicht auf einzelnen Dateien. Es wird also immer der übergeordnete Dateisystemeintrag verwendet und dieser beinhaltet automatisch die darin enthaltenen Dateien und Verzeichnisse.

Es wird spannend sein zu beobachten, wie sich diese Snapshots nicht nur auf den Computern wiederfinden. Snapshots eignen sich besonders gut als schnelles Backup vor riskanten Aktionen. Ein fehlgeschlagenes iOS-Update würde sich so problemfrei zurücknehmen lassen.

Starke Verschlüsselung

HFS+ bot mit CoreStorage eine Full-Disk-Verschlüsselung. iOS auf der anderen Seite arbeitet mit AES-Hardware auf File-Based-Verschlüsselung. Native Unterstützung von Verschlüsselung ist ein Hauptmerkmal von APFS. Dies resultiert aus den diversen Voraussetzungen der verschiedenen Verfahren, zum Beispiel Multi-Schlüssel-Verschlüsselung (Multi-key) innerhalb des Dateisystems auf dem iPhone oder User-spezifische Verschlüsselung (Single-key) auf dem Laptop. APFS unterstützt die folgenden verschiedenen Möglichkeiten der Verschlüsselung:

  • Unverschlüsselte Ablage;

  • ein einzelner Schlüssel für das Volume; sowie

  • mehrere Schlüssel für Metadaten, Dateien oder sogar Sektionen einer Datei ("extents")

Multi-Key-Verschlüsselung ist vor allem relevant für mobile Endgeräte, wo alle Daten verschlüsselt sein könnten. Dies wird an iOS deutlich. Die NSFileProtection-Klasse erlaubt es Daten zu klassifizieren, also festzulegen, wann diese entschlüsselt vorliegen sollen. So erlaubt beispielsweise das Entsperren des Handys erst den Zugang zu einem zusätzlichen Schlüssel und somit zu zusätzlichen Daten. Andere Daten sind nach der erstmaligen Anmeldung bis zum Ausschalten des Gerätes verfügbar.

Etwas das APFS ebenfalls von iOS lernen wird, ist die Tatsache, dass der "geheime Schlüssel" zur Verschlüsselung das Einzige ist, was gelöscht werden muss, um die Daten "quasi" zu entfernen. So unterstützt APFS (anscheinend) die Löschung eines Dateisystems durch Constant-Time-Kryptographie, was in der diskutil Ausgabe "effaceable" genannt wird.

Das wird vermutlich durch einen geheimen Schlüssel realisiert, der nicht aus APFS extrahiert werden kann und der für die Verschlüsselung des Dateisystems genutzt wird. Für eine sichere Löschung braucht man dann nur den Schlüssel zu löschen anstatt die komplette Festplatte zu scramblen und re-sramblen, um eine vollständige Löschung zu gewährleisten.

In Abhängigkeit von der Hardware sollen dafür die Verfahren AES-CBC oder AES-XTS verwendet werden können. Letzteres wird unter anderem auch von OpenBSD, Veracrypt oder DM-Crypt genutzt.

Es wird spannend zu sehen, wie sich diese Eigenschaften auf den mobilen Computern auswirken wird. Es bleibt jedoch noch ergänzend festzuhalten, dass gerade für das Thema spezialisierte Hardware, damit auch in macOS-Geräten, benötigt wird.

Erweiterbarkeit

APFS unterstützt das Konzept sogenannter Inodes und ist ein 64-Bit-Dateisystem, das bis zu 9 Trillionen einzelne Dateien pro Festplatte verarbeiten kann. APFS soll außerdem sogenannte Sparse-Dateien unterstützen. Datenstrukturen sind in APFS nun flexibel. Neue Attribute können jederzeit einer Datei hinzugefügt werden.

Das System kann außerdem viel genauer festhalten, wann Änderungen in einer Datei vorgeführt wurden. Darüber hinaus unterstützt APFS nun Zeitstempel im Abstand von 1 Nanosekunde, statt der derzeitigen Grenze in HFS+ von 1 Sekunde. Attribute können sogar als "optional" deklariert werden, falls diese keinen Bedarf haben.

APFS unterscheidet bei Dateinamen, wie andere unixoide Dateisysteme, immer zwischen Groß- und Kleinschreibung.

Für die Einbindung ins Netzwerk soll mit APFS nicht mehr die Eigenentwicklung AFP (Apple Filing Protocol) verwendet werden, sondern das von Windows genutzte SMB (Server Message Block).

APFS unterstützt aktuell weder Boot-Festplatten noch Apple's Fusion Drives. Es gibt noch keine offiziellen Aussagen, wie sich dies mit Release verhalten wird.