Diese auf der offiziellen MiniTool-Webseite illustrierte Wissensdatenbank zeigt Ihnen hauptsächlich, was Copy-on-Write ist, wie es funktioniert und wo es angewendet wird. Weitere Informationen finden Sie im folgenden Inhalt.

Was ist Copy-on-Write?

Copy-on-Write, auch copy-on-write (COW) geschrieben, wird manchmal auch als implizites Sharing oder Shadowing bezeichnet. Es handelt sich um eine Technologie zur Verwaltung von Ressourcen, die in der Computerprogrammierung eingesetzt wird, um eine „Kopie“ oder ein „Duplikat“ auf veränderbare Ressourcen effizient zu implementieren.

Wenn eine Ressource dupliziert, aber nicht verändert wird, ist es nicht notwendig, eine neue Ressource zu erstellen, damit die Ressource von der Kopie und der ursprünglichen Ressource gemeinsam genutzt werden kann. Bei Änderungen muss jedoch eine Kopie erstellt werden. Die Technik – der Kopiervorgang wird also bis zum ersten Schreibvorgang aufgeschoben.

Durch diese gemeinsame Nutzung von Ressourcen ist es möglich, den Ressourcenverbrauch von unveränderten Kopien erheblich zu reduzieren und gleichzeitig einen geringen Overhead für ressourcenverändernde Operationen zu erzeugen.

Snapshot vs. Backup: Die Unterschiede zwischen Backup und Snapshot
Snapshot vs. Backup: Die Unterschiede zwischen Backup und Snapshot

Was ist ein Snapshot? Was ist ein Backup? Was sind die Unterschiede zwischen Snapshot und Backup? Dieser Artikel vergleicht sie sowohl in VMware als auch in SQL-Servern.

Mehr lesen

Anwendungen der Copy-on-Write Technologie

Im Allgemeinen kann die Copy-on-Write Technologie in drei Bereichen eingesetzt werden.

1. Copy-on-Write in der Verwaltung des virtuellen Speichers

Copy-on-Write wird hauptsächlich bei der gemeinsamen Nutzung des virtuellen Speichers von Betriebssystemprozessen verwendet, und zwar bei der Implementierung des Systemaufrufs fork. Der Prozess verändert normalerweise keinen Speicher und führt sofort einen neuen Prozess aus, der den Adressraum vollständig ersetzt.

Copy-on-Write kann auch mit Hilfe der Seitentabelle implementiert werden, indem bestimmte Speicherseiten als schreibgeschützt markiert werden und die Anzahl der Verweise auf die Seite festgehalten wird. Sie kann erweitert werden, um eine effiziente Speicherzuweisung zu unterstützen, indem eine Seite des physischen Speichers mit Nullen gefüllt wird.

Copy-on-Write Seiten werden auch im Dienstprogramm des Linux-Kernels zum Zusammenführen gleicher Seiten verwendet. Das Laden der Bibliotheken für eine Anwendung macht sich die COW-Technik ebenfalls zunutze.

2. Copy-on-Write in Software

Außerdem kann Copy-on-Write sowohl in Bibliotheken, Anwendungen als auch im Systemcode angewendet werden. In Multithreading-Systemen kann COW ohne traditionelles Locking eingesetzt werden und stattdessen Compare-and-Swap zum Inkrementieren oder Dekrementieren des internen Referenzzählers verwenden.

In der Programmiersprache PHP sind alle Typen außer Referenzen als Copy-on-Write implementiert. Im Qt-Framework sind viele Typen COW. Da die Kopien billig sind, können Qt-Typen häufig sicher von mehreren Threads verwendet werden, ohne dass Sperrmechanismen wie Mutexe (wechselseitige Ausschlüsse) erforderlich sind. Die Vorteile von Copy-on-Write gelten also sowohl für Single- als auch für Multithreading-Systeme.

3. Kopieren beim Schreiben in Computerspeichern

Copy-on-Write kann als zugrunde liegender Mechanismus für Snapshots verwendet werden, wie sie von der logischen Datenträgerverwaltung, von Dateisystemen wie ZFS und Btrfs sowie von Datenbankservern wie Microsoft SQL Server angeboten werden.

Normalerweise werden bei Snapshots nur die geänderten Daten gespeichert. Sie werden in der Nähe des Hauptarrays gespeichert. Sie sind also nur eine schwache Form der inkrementellen Sicherung und können eine vollständige Sicherung nicht ersetzen.

Vollständiges vs. inkrementelles vs. differentielles Backup: Was ist besser?

Einige Systeme verwenden auch Copy-on-Write, um unscharfe Backups zu vermeiden, die sonst entstehen, wenn sich eine Datei in der Gruppe der gesicherten Dateien während des Backups ändert.

Tipp:
Ein sogenanntes Fuzzy-Backup ist eine Sekundärkopie (oder Sicherungskopie) von Dateien oder Verzeichnissen, die sich zu Beginn des Backups in einem bestimmten Zustand befanden, nach Abschluss des Backups jedoch in einem anderen Zustand.

Bei der Implementierung von Snapshots werden zwei Techniken angewendet:

    • Copy-on-Write (COW): Wenn eine Schreibanforderung gestellt wird, werden die Daten in einen neuen Speicherbereich kopiert. Anschließend werden die ursprünglichen Daten geändert.

    • Umleiten-auf-Schreiben (ROW): Der ursprüngliche Speicherbereich wird nie verändert. Wenn eine Schreibanforderung gestellt wird, wird sie von den Originaldaten in einen neuen Speicherbereich umgeleitet.

Trotz ihrer Namen bezieht sich Copy-on-Write in der Regel auf die zweite Technologie ROW. COW führt zwar zwei Schreibvorgänge im Vergleich zu ROW durch, ist aber schwer effizient zu implementieren und wird nur selten verwendet.

Schmutzige COW-Schwachstelle

Im Oktober 2016 wurde eine Sicherheitslücke im Linux-Kernel entdeckt, die eine Race Condition in seinem Copy-on-Write Mechanismus ausnutzte. Sie erhielt den Spitznamen Dirty COW. Dieser Timing-Angriff (CVE-2016-5195) würde es einem lokalen Benutzer ermöglichen, den schreibgeschützten Teil der COW-Daten zu ändern. Es wurde festgestellt, dass fast alle Systeme betroffen sind, die auf den Linux-Kernel angewiesen sind, einschließlich Geräte mit Android 7 oder älter. Zum Glück wurde diese Sicherheitslücke schnell gepatcht.

Windows 11 Assistenzsoftware empfohlen

Das neue und leistungsstarke Windows 11 wird Ihnen viele Vorteile bringen. Gleichzeitig kann es aber auch einige unerwartete Schäden wie Datenverlust mit sich bringen. Es wird daher dringend empfohlen, dass Sie Ihre wichtigen Dateien vor oder nach dem Upgrade auf Win11 mit einem robusten und zuverlässigen Programm wie MiniTool ShadowMaker sichern, das Sie dabei unterstützt, Ihre wachsenden Daten automatisch und planmäßig zu schützen!

MiniTool ShadowMaker TrialKlicken zum Download100%Sauber & Sicher

  • linkedin