Die technische Dokumentation von Apple im Apple File System Guide beschreibt, dass einige Verzeichnisse wie /tmp
keine guten Kandidaten für die schnelle Verzeichnisgrößenanpassung sind.
Die schnelle Verzeichnisgröße funktioniert, indem die Größe des Verzeichnisses vorab berechnet wird, wenn Inhalte hinzugefügt und entfernt werden. Daher ist es am besten für Verzeichnisse geeignet, die viele Dateien enthalten und relativ wenig Abwanderung aufweisen. Beispielsweise ist der Ordner „Dokumente“ eines Benutzers ein guter Kandidat für eine schnelle Verzeichnisgröße, während das
/tmp
Verzeichnis dies nicht wäre.
Wie kann ich feststellen, ob dies in einem bestimmten Verzeichnis aktiviert oder deaktiviert ist, damit ich auswählen kann, wo ich geschwindigkeitsintensive "Churn" -Arbeiten ausführen möchte und wo diese Art von Arbeit nicht ausgeführt werden soll?
Wir wissen jetzt, dass die vorherige Antwort etwas daneben liegt, da Apple kürzlich weitere technische Details zu APFS veröffentlicht hat. Die schnelle Verzeichnisgröße ist tatsächlich pro Verzeichnis aktiviert und kann vom Benutzer überprüft werden (wenn auch nicht einfach). Es kann nur aktiviert werden, wenn ein Verzeichnis leer ist, und muss auch für jedes neue Unterverzeichnis aktiviert werden. Einzelheiten: https://developer.apple.com/support/apple-file-system/Apple-File-System-Reference.pdf
Relevantes Zitat
Sie können Fast Directory Sizing nicht direkt für Verzeichnisse aktivieren, die Dateien oder andere Verzeichnisse enthalten; Sie müssen stattdessen zuerst ein neues Verzeichnis erstellen, die schnelle Verzeichnisgröße darauf aktivieren und dann den Inhalt des vorhandenen Verzeichnisses in das neue Verzeichnis verschieben
Wir wissen jetzt, dass Sie dieses Flag setzen müssen, um FDS zu aktivieren
INODE_MAINTAIN_DIR_STATS: Der Inode verfolgt die Größe aller seiner Kinder
Obwohl mir immer noch unklar ist, ob macOS dieses Flag gegebenenfalls automatisch aktiviert oder nicht, aber einige anfängliche Experimente lassen mich glauben, dass es noch nicht verwendet wird. Ich gehe davon aus, dass es in kommenden macOS-Updates verwendet wird.
Kurze Antwort
FDS ist ein grundlegender Bestandteil des Dateisystems in APFS-formatierten Laufwerken. Es ist nichts, was Benutzer aktivieren/deaktivieren müssen, und es kann nicht auf ein Verzeichnis angewendet werden und nicht auf ein anderes.
Da es sich um ein All-in-Szenario handelt, gibt es keine Terminalbefehle, um festzustellen, ob für ein Verzeichnis FDS aktiviert ist. Wenn ein Laufwerk stattdessen im APFS-Format formatiert ist, wird FDS aktiviert. Wenn es nicht im APFS-Format formatiert ist, ist FDS nicht verfügbar.
Lange Antwort
Leider sind die Informationen, die Sie aus der technischen Dokumentation von Apple zitiert haben, schlecht formuliert, daher der Grund für Ihre Frage.
Wenn ein Laufwerk im APFS-Format formatiert ist, wird Fast Directory Sizing durchgängig angewendet. FDS kann ein Benutzer nicht pro Verzeichnis aktivieren/deaktivieren.
Aus diesem Grund kann ein Benutzer den Status auch nicht auf Verzeichnisbasis ermitteln. Das heißt, wenn das Laufwerk als APFS formatiert ist, haben alle Verzeichnisse FDS aktiviert .
Woher die Verwirrung kommt (und in diesem Fall verständlicherweise), ist die schlechte Wortwahl in Apples Dokumentation und die daraus resultierende Mehrdeutigkeit. Was diese Informationen vermitteln wollten, ist, dass ein Benutzer in den Verzeichnissen, die viele Dateien haben, aber wenig ändern (z. B. der Dokumentenordner eines Benutzers), am meisten von FDS profitiert, während er in Verzeichnissen nicht viel (wenn überhaupt) von FDS profitiert wie der /tmp
Ordner.
Nebenbei bemerkt, die Dokumentation, auf die Sie verwiesen haben, wurde inzwischen durch die Seite About Apple File System ersetzt . Die einzige Erwähnung von FDS auf dieser Seite lautet wie folgt:
Apple File System bietet verbesserte Dateisystemgrundlagen sowie mehrere neue Funktionen, darunter Klonen, Snapshots, Speicherplatzfreigabe, schnelle Verzeichnisgröße, Atomic Safe-Save und Sparse-Dateien.
Es gibt keinen Versuch, weiter zu erklären, was FDS bedeutet, abgesehen von der Tatsache, dass es sich um eine grundlegende (lesen Sie zugrunde liegende ) Funktion handelt. Wenn Sie jedoch an Hintergrundinformationen interessiert sind:
In komplexen und tiefen Verzeichnisstrukturen in HFS+ sind wir mit der Zeit vertraut, die das Dateisystem für die Berechnung der Größe des Dateisystembaums aufwenden könnte. Dies ist einer der häufigsten Gründe, warum das System hängen bleibt. Apple hat mit APFS Fast Directory Sizing (FDS) eingeführt, bei dem das Dateisystem den von einer Verzeichnishierarchie belegten Speicherplatz schnell berechnen kann, um dieses Problem zu beseitigen.
Quelle: Hansen, KH, Toolan, F., Decoding the APFS file system, Digital Investigation (2017)
Greg Hurell
Feuermurmel
j_inode_flags
in der Apple File System Reference . Die Verzeichnis-Inode-Datenstruktur ermöglicht es tatsächlich, diese Funktion auf einer verzeichnisspezifischen Instanz zu aktivieren oder zu deaktivieren. Nichts dort besagt, dass diese Funktion automatisch für alle Verzeichnisse aktiviert ist, wie in dieser Antwort angegeben.Mathias Winkelmann