EXT3Cow : Le système de fichier versionné
Pour reprendre l’article de
NicoLargo et de
costalfy à propos du « Time Machine », je vais juste me permettre d’apporter quelques précisions sur le système de fichier utilisé pour cela, à savoir l’ext3cow. COW étant l’abréviation de Copy-On-Write
Le Copy-on-write ou copie sur écriture (souvent désigné par son sigle anglais « COW ») est une stratégie d’optimisation utilisée en programmation informatique. L’idée fondamentale : si de multiples appelants demandent des ressources initalement impossibles à distinguer, vous pouvez leur donner des pointeurs vers la même ressource. Cette fiction peut être maintenue jusqu’à ce que l’appelant modifie sa « copie » de la ressource. A ce moment là, une copie privée est créée. Cela évite que le changement soit visible ailleurs. Ceci se produit de manière transparente pour les appelants. L’avantage principal est que si un appelant ne fait jamais de modifications, la copie privée n’est jamais créée.
L’utilisation principale du Copy-on-write est la mémoire virtuelle de systèmes d’exploitation. Lorsqu’un processus créé une copie de lui-même, les pages de la mémoire qui doivent être modifiées soit par le processus soit par sa copie sont marquées copy-on-write. Lorsque le processus modifie une page mémoire, le noyau du système d’exploitation intercepte l’opération et copie la page mémoire pour que les changements de la mémoire d’un processus n’affectent pas celle d’un autre.
Donc, ext3cow est un système de fichier versionné basé sur ext3. Il fonctionne sur le noyau Linux 2.6, est disponible sous forme de patch, et il est bien entendu opensource. ext3cow (third extended filesystem, copy-on-write) permet aux utilisateurs de voir leur système de fichier (fichiers et répertoires) comme il était à n’importe quel point dans le temps passé (« timeshifting »).
Cela peut être utile pour la gestion de révision évidemment (code source, documentation, fichiers personnels, etc.), mais aussi la détection d’intrusions, la prévention de perte de données et également pour répondre aux besoins légaux de rétention de données.
Certains points de ext3cow sont intéressants :
- il ne pollue pas les répertoires de copies de fichiers nommés (généralement suffixés) par un identifiant de version
- il consomme peu en terme de stockage (5 à 15 % de metadata, voir 20%) et performance (lors des snapshots)
- il est modulaire et ne nécessite pas de changements du noyau ou des interfaces
VFS.
Le concept de système de fichiers versionnés n’est pas nouveau (euphémisme), mais ext3cow diffère des autres par de nombreux avantages (voir synthèse en PDF), dont le fait qu’il référence des versions à n’importe quelle date dans le temps et pas par des identifiants de version (qu’il faut évidemment connaître). ext3cow est bien entendu incompatible avec ext2/ ext3, mais il devrait apparaître des outils de conversion triviaux rapidement
Ext3cow: A Time-Shifting File System for Regulatory Compliance (PDF, 225 Ko)
Voici un exemple rapide de ce que peut permettre ext3cow :
Fig. 1. Creating snapshots and accessing data in the past in ext3cow.
[user@machine] echo "This is the original foo.txt" > foo.txt
[user@machine] snapshot
Snapshot on . 1057845484
[user@machine] echo "This is the new foo.txt." > foo.txt
[user@machine] cat foo@1057845484
This is the original foo.txt.
[user@machine] cat foo
This is the new foo.txt.
Fig. 2. Creating distinguished (named) snapshots in ext3cow.
[user@machine] snapshot /usr/bin
Snapshot on /usr/bin 1057866367
[user@machine] ln -s /usr/bin@1057866367 /usr/bin.preinstall
[user@machine] /usr/bin.preinstall/gcc
Mais les snapshots … c’est quoiiiiiiiiiiiiiiii ????
Question fréquentes. Travaillant dans l’informatique et plus précisemment dans le stockage et la sauvegarde (du NAS du SAN du serveur Unix de Fichier), voici une définition made in wiki que j’ai modifié pour que vous compreniez en quoi le fonctionnement du snapshot est utile (surtout pour la restauration de document). Pour ma part, je l’ai découvert en travaillant et me spécialisant sur les
NAS NetApp
Les SnapShots
Les snapshots sont des volumes logiques permettant d’effectuer une sauvegarde cohérente d’un autre volume logique du même groupe de volume.
A la création d’un snapshot, celui-ci prend une « photo » du volume logique cible (ce qui est quasi immédiat) et commence a enregistrer les modifications apportées au volume logique cible.
Avantage des snapshots
- Les snapshots sont un outil de sauvegarde. Ils permettent de stocker une image statique d’un volume logique a un instant t. On peut ensuite effectuer une sauvegarde du snapshot, qui contiendra les données présentes sur le volume cible à la création du snapshot.
Limite des snapshots
- Les snapshots NE SONT PAS une sauvegarde d’un volume logique, ils enregistrent uniquement les modifications apportées au volume cible, ils ne contiennent pas les données de celui-ci; de plus ils sont non persistants, c’est-à-dire qu’ils disparaissent en cas de reboot.
Taille des snapshot
- Une idée très répandue sur internet veut que la taille d’un snapshot doive être égale à environ 15-20% de la taille du volume logique cible. Ces approximations sont totalement infondées, la taille nécessaire a un snapshot dépend de l’activité sur le volume logique cible pendant la durée de vie de ce snapshot. La suppression de toutes les données sur le volume logique cible demandera par exemple un snapshot d’une taille au moins égale à la taille du volume logique cible.
- La taille d’un snapshot doit donc être calculée suivant l’estimation du volume de données écrit sur le lecteur cible pendant la durée de votre sauvegarde. Dans la plupart des cas cela nécessitera bien moins de 15%…
Voila, j’espère avoir pu apporter certaines précision pour les interressés. ![]()
Source : Linuxfr.org, Wikipedia, NicoLargo et costalfy :+)
| Imprimer l'article | Cette entrée a été posté par SckyzO le 8 mai 2007 à 16 h 33 min, et placée dans Linux, Logiciel Libre, Planet-Libre. Vous pouvez suivre les réponses à cette entrée via RSS 2.0. Vous pouvez laisser une réponse, ou bien un trackback depuis votre site. |
