Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Wer erkennt bei APS bei einer geänderten Datei die lediglich geänderten Blöcke?

Wer erkennt bei APS bei einer geänderten Datei die lediglich geänderten Blöcke?

virk
virk28.07.2208:58
Ich meine, bzgl. APFS folgendes verstanden zu haben: Eine bspw. 1-GB-grosse Datei belegt eben diesen Platz. Wenn diese Datei bearbeitet wird und neu (unter einem neuen Namen) gespeichert wird, werden nur die "geänderten Blöcke" neu geschrieben.
Wenn das so stimmt, wer ist dann für das Identifizieren der geänderten Blöcke verantwortlich? Muss das das "Bearbeitungsprogramm" dem macOS mitteilen, erkennt APFS das selbst, oder wie muss ich mir das vorstellen?
„Gaststättenbetrieb sucht für Restaurant und Biergarten Servierer:innen und außen.“
0

Kommentare

Stefanie Ramroth28.07.2211:52
Nein, die speichernde App fragmentiert die Daten nicht nach alt und neu. Das wäre ineffizient und würde ja zu einer Speicherverwaltung oberhalb der Speicherverwaltung führen. Versionierungs- und Revisionssysteme sind hier ein anderer Ansatz.

Das Dateisystem selbst kennt ja die Inhalte der Speicherzellen und wenn eine Zelle mit Daten beschrieben werden soll, die an anderer Stelle bereits vorhanden sind, wird eben nur darauf verwiesen. Die Größe eines solchen Speicherbereichs wird durch das Dateisystem festgelegt. Davon bekommt die App ja auch nichts mit, sonst müsste die sich ja auch darum kümmern, ob auf SSD oder HD gesichert wird und je nach Volumengröße variieren die Blockgrößen auch.

Zusammengefasst ist APFS bzw. das Dateisystem für den Anwender und die App eine Black Box. Es funktioniert einfach - meistens
+3
ssb
ssb28.07.2213:58
Genau genommen kümmert sich der Kernel oder der APFS-Treiber im Kernel genau darum. Die App sagt dem Kernel, schreibe an Stelle X diese Bytes in die Datei F. Der Kernel gibt das dann als Low-Level IO an den APFS-Treiber weiter, der das dann tatsächlich schreibt. Kernel oder APFS-Treiber entscheiden dann, was tatsächlich passiert. Da wird dann entsprechend auch ein Journal angelegt. Der frühere Block wird ja nicht mehr in der aktuellen Version verwendet, ist aber dennoch nicht frei.
+2
virk
virk28.07.2223:01
Ist mir noch nicht klar geworden.
Angenommen, eine CAD-Datei ist 1000MB gross. Ich öffne diese Datei im CAD-Programm, lösche eine Linie, ändere somit fast nichts, und weise das CAD-Programm an, zu speichern (Cmd-S). Jetzt könnte es doch passieren, dass diese Datei jetzt aufgrund der fehlenden Linie komplett anders aufgebaut ist, als die vorherige; es sind nicht bspw. 999/1000 Speicherblöcken/-bereichen identisch sondern jeder einzelne Block sieht anders aus, weil sich ein byte verschoben hat Oder werden solche Änderungen immer "hinten angehängt" an eine Datei.
Oder es gibt einen ellenlangen Text in einer Textverarbeitung. Jetzt lösche ich bspw. das zweite Wort und speichere die Datei unter einem anderen Namen. Wenn ich jetzt beide Dateien vergleiche, kann es dann nicht sehen, dass diese zwar eine identische Anzahl von Blöcken haben, jedoch keiner dem anderen gleicht.
Oder ich habe zwei identische Rechner auf denen ich identische Texte (ellenlang) schreibe. Bei einem Text lösche ich ein einziges Wort (am Anfang), dann speichere ich auf jedem Rechner den Text. Inwiefern gleichen sich jetzt die vom jeweiligen Text belegten Blöcke auf dem Speichermedium?
Ihr seht, da fehlt mir doch der Durchblick
„Gaststättenbetrieb sucht für Restaurant und Biergarten Servierer:innen und außen.“
0
Stefanie Ramroth28.07.2223:38
Hallo Virk,

bei Wikipedia gibt es einen Artikel über APFS. So wirklich erklärt wird die Technologie da auch nicht, aber die Beschreibung gibt in etwa wieder, was die Technologie leistet:
https://de.wikipedia.org/wiki/Apple_File_System
Klone sind sofort verfügbare Kopien von Dateien oder Verzeichnissen, die keinen weiteren Platz benötigen (Copy-On-Write). Beim Klonen wird nur der Verzeichniseintrag einer Datei kopiert. Beim Ändern einer geklonten Datei werden nur die geänderten Blöcke zusätzlich auf das Laufwerk geschrieben. Dadurch kann das Dateisystem verschiedene Versionen einer Datei vorhalten, und sie beansprucht dabei nur wenig zusätzlichen Platz.
Wenn Du dem Link zu Copy-on-write folgst, findest Du ein paar mehr Infos zum Hintergrund.

Vielleicht kann es hier noch jemand besser erklären. Aber im Grund ist es, als würdest Du in einem Aktenordner eine Seite austauschen müssen, weil ein Komma geändert wurde. Aber es ist eben nur diese Seite und nicht der ganze Ordner. Das Dateisysten "erkennt", dass diese Seite (der Block) neu zu schreiben ist, die anderen aber unverändert bleiben.

Wenn wie in Deinem Beispiel die eine geänderte Linie die komplette Datei verändert, muss dann natürlich auch die ganze Datei neu geschrieben werden. Aber mitbekommen tust Du das trotzdem nicht, die erwähnte "Black Box" APFS erledigt das für Dich bzw. die App.
0
long dong mac
long dong mac29.07.2208:37
Die Blöcke die nicht geschrieben werden müssen, werden dann durch einen Hashvergleich identifiziert, oder wie funktioniert das?
0
Deichkind29.07.2210:07
Meine Theorie zu diesem Thema:

Allein die App ist verantwortlich für Änderungen am Dokument. Und wenn die Änderung es mit sich bringt, dass kleine Änderungen über das ganze Dokument verstreut sind, dann kann auch APFS es nicht verhindern, dass viele Blöcke zu ändern sind.

Änderungen an einem Dokument kann eine App auf zweierlei Art ausführen:

1. Sie überschreibt die Ursprungsdatei und ändert dort nur einzelne Blöcke soweit erforderlich. Stürzen dabei die App oder der Rechner ab, ist keine intakte Version der Ausgangsdatei mehr vorhanden, und die geänderte Version existiert ohnehin noch nicht.

2. Das Zerstören der Ursprungsdatei wird vermieden, wenn die Änderung an einer Kopie der Ursprungsdatei vorgenommen wird. Und dabei kommt jetzt die Technik des APFS ins Spiel. Physisch geschrieben wird nur dort, wo etwas geändert wird.

Inspiriert durch Howard Oakleys Berichte:
What is copy on write...?:

Copy, move and clone files in APFS:

Nachtrag:
Ich habe noch keine rechte Vorstellung dazu, welchen Einfluss eine App auf die Verteilung der Daten auf die Dateiblöcke hat.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.