Gibt es eine Möglichkeit, eine Kopie eines Verzeichnisses beim Schreiben zu erstellen?


14

Ich denke an eine Situation, in der ich eine Kopie eines Verzeichnisses erstellen, ein paar Dateien optimieren und dann das Ergebnis bearbeiten würde. Dies wird ziemlich oft gemacht, vielleicht ein paar Dutzend Mal am Tag. (Der genaue Anwendungsfall ist das Testen von Patch - Einsendungen. Machen Sie den Code nach, patchen Sie ihn, erstellen Sie / test / report / etc.)

Nach was ich suche, könnte getan werden, indem man eine neue Verzeichnisstruktur verursacht und sie mit harten Verbindungen vom origonal füllt. Dies funktioniert jedoch nur, wenn alle Tools, die Sie verwenden, Dateien löschen und neu erstellen, anstatt sie direkt zu bearbeiten.

Gibt es eine Möglichkeit, das Dateisystem beim Schreiben für eine Datei kopieren zu lassen ?


Hinweis: Mir ist bewusst, dass viele FSs COW auf Blockebene verwenden (alle Aktualisierungen erfolgen über Schreibvorgänge in neue Blöcke), aber dies ist nicht das, was ich möchte.


Es scheint nicht gepflegt, aber vielleicht boklm.eu/copyfs
Zoredache

Sie möchten Copy-on-Write über das Dateisystem ausführen, möchten jedoch kein Dateisystem, das Copy-on-Write verwendet? Ich bin verwirrt.
Kamil Kisiel

1
@ Kamil Kisiel: Ich möchte, dass COW auf Dateiebene keine COW auf Blockebene wird. COW auf Dateiebene führt dazu cpund lnmacht fast genau dasselbe. COW auf Blockebene ist ein Trick, um das Intervall zu minimieren, in dem die FS-Metadaten falsch sind: en.wikipedia.org/wiki/ZFS#Copy-on-write_transactional_model
BCS

Auf was für einem System soll das angewendet werden?
John Gardeniers

Es ist spekulativ genug, dass ich, wenn Sie nicht wissen, wie man es für ein Setup macht (in diesem Fall schreiben Sie es einfach), nicht möchte, dass die Leute sich die Zeit nehmen, um herauszufinden, wie es geht (es sei denn, sie machen es zum Spaß :)
BCS

Antworten:


7

Wenn Sie die Plattform für Ihren Dateiserver ausgewählt haben, würde ich einen aktuellen OpenSolaris-Build verwenden und die Deduplizierungsfunktion von ZFS verwenden. Auf diese Weise würden Kopien von Dateien keinen zusätzlichen Speicherplatz belegen, und selbst gemeinsame Segmente zwischen Dateien würden nicht repliziert.

In diesem Beitrag auf Jeff Bonwicks Blog erfahren Sie alles über die Deduplizierung von ZFS .


1
ZFS ist unglaublich; es wird die Art und Weise, wie Sie über Lagerung denken, ändern
Tegbains

Ordentlich, es sei denn, es gibt eine Schattenseite, die es für die gesamte Fahrt betrifft.
BCS

Ich habe einen Link zu einem Blogbeitrag hinzugefügt, der weitere technische Details enthält. Sie können sehen, ob es das ist, was Sie dort brauchen.
Kamil Kisiel

Neue URL für den Beitrag von Jeff Bonwick: blogs.oracle.com/bonwick/zfs-deduplication-v2
Mathieu

0

Die meisten Linux-Virtualisierungslösungen bieten COW auf Dateiebene unter virtualisierten Betriebssystemen (kopiert aus dem WP):

  • JA:
    • Docker, Linux-VServer, Lmctfy, LXC, Singularity, Virtuozzo, Sandbox, Systemd-nspawn, Solaris Container (ZFS), FreeBSD-Gefängnis (ZFS), OpenVZ
  • NEIN:
    • chroot, sysjail, WPARs, virtuelle iCore-Konten, Turbo

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzuschließen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert
Romeo Ninov

-2

Kann es sich um SVN oder ein anderes Versionierungswerkzeug (Git, CVS) handeln?


Das ist noch schlimmer, da zwei Kopien jeder Datei erstellt und über einen Socket abgesaugt werden.
BCS
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.