Speicher Anzeige

@leo1024 Ich zitiere mal kurz, was ich im Kopf hatte und was chatGPT bestätigt:

Wieviel Speicherplatz benötigt APFS, wenn ich eine 1GB grosse Datei dupliziere und dann am Duplikat nur eine kleine Änderung vornehme?


Die genaue Größe des zusätzlich benötigten Speicherplatzes hängt von mehreren Faktoren ab, einschließlich des Dateisystems und der Art der Änderung, die an der duplizierten Datei vorgenommen wird.
APFS (Apple File System) ist ein fortschrittliches Dateisystem, das in Apples Betriebssystemen wie macOS und iOS verwendet wird. Es verwendet Copy-on-Write-Mechanismen, was bedeutet, dass beim Duplizieren einer Datei ursprünglich nur die Metadaten und Verweise kopiert werden. Die tatsächlichen Daten der Datei werden erst dann kopiert, wenn eine der kopierten Versionen geändert wird.
Wenn du eine 1 GB große Datei duplizierst und dann nur eine kleine Änderung an einer der Kopien vornimmst, wird der zusätzlich benötigte Speicherplatz normalerweise nur so groß sein wie die geänderten Daten plus der Overhead für Metadaten und Verweise. Der genaue Betrag hängt von der Art der Änderung ab. Wenn du beispielsweise nur einige Bytes in der Datei änderst, wird der zusätzliche Speicherbedarf gering sein.
In APFS kann dieser Mechanismus effizient mit Änderungen umgehen, sodass der zusätzliche Speicherplatzbedarf im Vergleich zur erneuten Speicherung der gesamten Datei in der Regel recht klein ist.
 
  • Gefällt mir
Reaktionen: leo1024
Vorsicht, Hardlinks haben mit Backup zu tun. AFPS fürs MacOS arbeitet auf Blockebene. Blockebene ist die unterste logische Ebene für das Betriebssystem, mit dem es Daten auf die Festplatte schreiben kann. Ultimativ sind es dann diese Blöcke, die den tatsächlich belegten Speicherplatz ergeben. Ich bin mir nicht sicher ob APFS es schon kann, vermute aber ja, wenn du zwei idente Dateien hast die auf die gleichen Blöcke verweisen und du änderst eine davon, dann dürfte APFS nur dieses Delta der Änderung mit zusätzlichen Blöcken abspeichern.

Das heißt du hast 2 Dateien, die auf die gleichen Blöcke verweisen, und wenn du eine davon änderst besteht die Datei nun aus den ursprünglichen Blöcken plus dem Delta. So macht es zumindest ZFS das ähnlich wie APFS funktioniert aber bei den Features etwas fortgeschrittener ist.

Eine weitere so mögliche Optimierung ist es wenn eine Datei zwischendrin leer ist, also zB wenn du eine VM laufen hast mit 100GB Storage, wo das ganze Storage-File im Voraus die 100GB auf der Festplatte belegt/reserviert, obwohl das System in der VM erst einen kleineren Teil davon nutzt. Dann liegt zwar für dich sichtbar im Finder ein 100GB-File da, APFS speichert aber nur die tatsächlichen Daten ab und merkt sich dass der Rest leer ist. Eine Info abzulegen "50GB von 100GB sind noch leer" braucht ein paar Bytes Platz, sonst müssten auch 50GB an Nullern auf die Festplatte geschrieben werden - komplett sinnlos eigentlich und doch machen das andere Dateisysteme wie HFS+ oder NTFS. Weil die gar nicht entscheiden können wie die Blöcke auf die Festplatte geschrieben werden. Das können eben nur Dateisysteme die auf Blockebene arbeiten.
 
  • Gefällt mir
Reaktionen: leo1024
@lisanet, vielen Dank für ausführliche Erklärung. Ich muss es erst wirklich verarbeiten.
Nun bin ich etwas verunsichert von hard links und clones. Nehmen wir an ich kopiere eine Datei. Es wird in Finder eine Hardlink auf die Datei mit andere Name angelegt. Der zeigt aber auf gleiche Datei. Dann editiere ich die Kopie. Spätestens dann sollte es sich schon um zwei unterschiedliche Dateien handeln. Stimmt?
Unterschied zu Linux scheinbar wirklich darin, dass beim Kopieren Hardlink erzeugt wird.
Die alle sollten doch mit statt und find auffindbar sein? Zumindest ich gehe davon aus.

nee, nee.

Es werden keine Hardlinks erzeugt. Ich habe geschrieben, dass du es am ehesten damit vergleichen kannst.

Also:

Wenn du im Finder eine Datei duplizierst -> "cloning". Es wird nur ein weiterer Verweis erzeugt auf die Datei erezugt.

Wenn du in einer der beiden Dateien was änderst, wird _nur_ der geänderte Block (ist halt so, dass jede Platte immer in Blockgrößen arbeitet) an neuer Stelle erzeugt und die Verkettung der der Blöcke untereinandere (welche ja die gesamte Datei ergeben) wird für die geänderte Datei angepasst. Folge: nur die geänderten Blöcke verbrauchen zusätzlichen Speicher. Das nennt sich "de-duplication"

Mein Tipp: vergiss bei APFS dein Linux-Wissen. Bringt dich nicht weiter.

Anmerkung:

im Terminal cannst man mit "cp -c" anstelle nur "cp" ebenso eine clone-Datei erzeugen. Natürlich nur bei APFS
 
  • Gefällt mir
Reaktionen: leo1024
Ok, alles klar, Vielen Dank!
 
Bzw. Ich denke noch, das mir Alles klar ist 🤣
 
Zurück
Oben Unten