Existe-t-il un moyen de créer une copie de copie sur un répertoire?

14

Je pense à une situation où j'aurais quelque chose qui crée une copie d'un répertoire, modifie quelques fichiers, puis effectue un traitement sur le résultat. Cela se fera assez souvent, peut-être quelques dizaines de fois par jour. (Le cas d'utilisation exact est de tester les soumissions de correctifs; duper le code, le corriger, construire / tester / rapport / etc.)

Ce que je recherche pourrait être fait en créant une nouvelle structure de répertoires et en la remplissant de liens durs à partir de l'origonal. Cependant, cela ne fonctionne que si tous les outils que vous utilisez suppriment et recréent des fichiers plutôt que de les modifier en place.

Existe-t-il un moyen de demander au système de fichiers de copier-écrire pour un fichier?


Remarque: je sais que de nombreux FS utilisent COW au niveau du bloc (toutes les mises à jour sont effectuées via des écritures dans de nouveaux blocs), mais ce n'est pas ce que je veux.

BCS
la source
Il ne semble pas maintenu, mais peut-être boklm.eu/copyfs
Zoredache
Vous voulez donc faire de la copie sur écriture via le système de fichiers, mais vous ne voulez pas d'un système de fichiers qui utilise la copie sur écriture? Je suis confus.
Kamil Kisiel
1
@Kamil Kisiel: Je veux que la vache au niveau du fichier ne soit pas celle du bloc. COW au niveau du fichier entraîne cpet lnfait presque exactement la même chose. COW au niveau du bloc est une astuce pour minimiser l'intervalle pendant lequel les métadonnées FS sont incorrectes: en.wikipedia.org/wiki/ZFS#Copy-on-write_transactional_model
BCS
Sur quel type de système est-il censé être utilisé?
John Gardeniers
C'est assez spéculatif qu'à moins que vous ne connaissiez un moyen de le faire pour une configuration (dans ce cas, postez-le), je ne voudrais pas que les gens perdent du temps à trouver comment le faire (à moins qu'ils ne le fassent pour le plaisir :)
BCS

Réponses:

7

Si vous avez le choix de la plate-forme pour votre serveur de fichiers, je choisirais une version récente d'OpenSolaris et j'utiliserais la fonction de déduplication de ZFS. De cette façon, les copies de fichiers ne prendraient pas d'espace supplémentaire et même les segments communs entre les fichiers ne seraient pas répliqués.

Vous pouvez tout lire sur la déduplication ZFS dans cet article sur le blog de Jeff Bonwick .

Kamil Kisiel
la source
1
ZFS est incroyable; cela changera votre façon de penser le stockage
tegbains
Bien, sauf s'il y a un inconvénient à l'avoir allumé pour tout le lecteur.
BCS
J'ai ajouté un lien vers un article de blog contenant plus de détails techniques. Vous pouvez voir si c'est ce dont vous avez besoin.
Kamil Kisiel
Nouvelle URL pour le post de Jeff Bonwick: blogs.oracle.com/bonwick/zfs-deduplication-v2
Mathieu
0

La plupart des solutions de virtualisation linux offrent des fichiers COW au niveau des fichiers parmi les systèmes d'exploitation virtualisés (copiés à partir du WP):

  • OUI:
    • Docker, Linux-VServer, lmctfy, LXC, Singularity, Virtuozzo, Sandboxie, systemd-nspawn, Solaris Containers (ZFS), FreeBSD jail (ZFS), OpenVZ
  • NON:
    • chroot, sysjail, WPARs, comptes virtuels iCore, Turbo
ankostis
la source
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien de référence. Les réponses de lien uniquement peuvent devenir invalides si la page liée change
Romeo Ninov
-2

Peut être SVN ou un autre outil de versioning (git, cvs)?

Dmitry Trukhanov
la source
C'est encore pire car il crée deux copies de chaque fichier et les aspire sur un socket.
BCS