FR 2873219 A1 20060120 FR 0451534 A 20040715 PROCÉDÉ DE SAUVEGARDE DISTRIBUÉE SUR DES POSTES CLIENTS DANS UN RÉSEAU INFORMATIQUE La présente invention se rapporte au domaine 5 informatique et au domaine de la sauvegarde de données numériques. La présente invention concerne plus particulièrement un procédé de sauvegarde de données numériques de façon distribuée sur un ensemble de postes clients d'un réseau informatique. Alors que le volume global de données a doublé au cours des trois dernières années, on estime à 30% le taux d'utilisation des ressources en stockage de la plupart des réseaux. Notamment, les postes clients sont peu utilisés pour le stockage des données numériques au profit des serveurs, dont la fiabilité et le up-time (durée moyenne de fonctionnement entre deux redémarrage de la machine, ce qui illustre la stabilité de la machine) se doivent d'être élevés. Les postes clients représentent, de par leur grand nombre et leurs ressources inutilisées, de fortes capacités de stockage de données permettant d'offrir une grande redondance des informations sauvegardées. L'art antérieur connaît déjà, par le brevet américain US 6 430 611 (Jefferson A. Kita et autres), un système de gestion de stockage pour la gestion des ressources de stockage d'une pluralité d'appareils d'ordinateur dans un réseau informatique. Ce système comprend une pluralité d'agents de gestion, chacun étant installé sur l'un des appareils correspondants, et chacun d'entre eux étant configuré pour compiler les informations de stockage des ressources de stockage accessibles par l'appareil d'ordinateur de sorte à créer un premier jeu d'informations compilées de stockage, et un gestionnaire de stockage installé sur le serveur. Le gestionnaire de stockage est configuré pour collecter le premier jeu d'informations compilées de stockage de chacun des agents de gestion et pour compiler ensuite les premiers jeux d'informations de stockage reçus pour créer un second jeu d'informations compilées de stockage. Le système de gestion de stockage comprend, en outre, une interface utilisateur couplée avec le gestionnaire du serveur pour permettre à l'utilisateur d'accéder au second jeu d'informations compilées de stockage. Cette solution est limitée puisqu'elle nécessite l'utilisation d'un serveur et ne décrit pas d'automatisation de la répartition des données. On connaît également, dans le brevet américain US 6 728 751 (Robert Thomas Cato et autres), un système de sauvegarde de données numériques de machines clientes. Dans un réseau informatique, une fonction d'administration système commande la sauvegarde des données de machines clientes et sélectionne d'autres machines clients à l'intérieur du réseau en retirant le contrôle et l'accès aux parties du disque dur dans ces machines à l'utilisateur local. L'espace de stockage libre à l'intérieur du disque dur local du client, est alors utilisé à des fins de sauvegarde pour sauvegarder des données d'autres machines du réseau. Les agents dans les machines serveur et client accomplissent cette tâche permettant de répartir la charge de travail de sauvegarde à travers le réseau. Il y a trois modes de sauvegarde: la source lancée, la cible lancée, et l'agent de sauvegarde commun (SC) serveur lancé. Tous sont coordonnés par l'agent de SC serveur. Cette solution met également en oeuvre un serveur. Le système dépend donc fortement de la fiabilité de ce serveur. D'autre part, des coûts importants sont nécessaires pour maintenir viable le serveur et/ou pour proposer une redondance de ce serveur. On connaît également, dans la demande de brevet américain US 2004 / 0 049 700 (Takeo Yoshida), un procédé peu coûteux de stockage de données utilisant la capacité disponible dans des ordinateurs individuels reliés à un réseau. Quand un client de sauvegarde d'un PC d'utilisateur reçoit une instruction de sauvegarde pour un fichier provenant d'un utilisateur, le client de sauvegarde demande la sauvegarde à un serveur de commande de sauvegarde. Le serveur de commande de sauvegarde divise et chiffre le fichier à sauvegarder dans une pluralité de morceaux chiffrés, transfère les morceaux chiffrés aux PC d'utilisateur, et stocke le morceau chiffré dans les disques durs des PC d'utilisateur. Quand le fichier sauvegardé de façon distribuée doit être extrait, le PC d'utilisateur obtient chacun des morceaux chiffrés des PC d'utilisateur sur lesquels ils sont stockés, et les combine et les déchiffre pour reconstituer le fichier original. Cette solution repose sur une forte centralisation des opérations sur un serveur. Ceci implique donc une forte dépendance vis-à-vis de ce serveur ainsi que des coûts d'exploitation relativement élevés pour maintenir le serveur. On connaît également, dans l'état de la technique, des procédés de sauvegarde automatisés de données numériques sur des serveurs. Ces procédés sont effectués sur une architecture réseau où des postes clients et un ou plusieurs serveurs sont connectés à un réseau informatique. Des agents situés sur les différents postes clients réalisent, à heure fixe, une liste des fichiers modifiés depuis la dernière sauvegarde, puis réalise le transfert de ces données vers les serveurs de sauvegarde. Ces procédés sont couramment utilisés dans les entreprises pour sauvegarder les données des employés. Néanmoins, ces mécanismes ne permettent pas de tirer profit des nombreuses ressources inutilisées des postes clients. La présente invention entend remédier aux inconvénients de l'art antérieur en proposant un procédé de 10 sauvegarde distribuée sur un réseau informatique. Le procédé selon la présente invention répond particulièrement bien aux restrictions budgétaires des entreprises, car il permet de tirer profit des ressources, en capacité de stockage et en capacité de traitement, non utilisées par les postes clients. De plus, dans l'architecture retenue, l'absence de serveur dédié permet de se libérer des problèmes de fiabilité de ces machines. Alors que les procédés existants montrent une grande dépendance à des machines (serveur, entre autres), l'invention permet de se soustraire de cette dépendance: tous les postes clients participent à la sauvegarde distribuée, la sauvegarde étant redondante sur plusieurs postes. A cet effet, l'invention concerne dans son acception la plus générale un procédé de sauvegarde de données numériques sur une pluralité d'équipements informatiques connectés à un réseau informatique, caractérisé en ce qu' : il ne met pas en oeuvre de serveur informatique 30 centralisé, il comprend: une étape préalable de calcul et de transmission de la charge des équipements aux autres équipements du réseau, l'étape étant réalisée par les équipements eux-mêmes, É une étape de sauvegarde distribuée desdites données, la sélection et la répartition des données étant réalisées, par lesdits équipements, de façon à ce que les charges relatives aux données sont reparties de façon automatisée et de manière à atteindre un équilibre de charge des équipements. De préférence, lesdites charges des équipements sont fonction des ressources CPU, RAM, disque dur et uptime . Avantageusement, ladite étape de sauvegarde comprend une sous-étape de découpage desdites données en blocs. Dans un mode de réalisation particulier, lesdits 15 blocs sont chiffrés. De préférence, ladite étape de sauvegarde est effectuée selon la technologie RAID 5. Selon un mode de mise en oeuvre, ledit procédé comprend en outre une étape de versioning desdites données 20 sauvegardées. De préférence, ledit procédé comprend, en outre, une étape de détermination du profil de l'utilisateur et une étape d'effacement des anciennes versions desdites données ne correspondant pas audit profil déterminé. Selon une variante, ladite sauvegarde est distribuée sur les équipements d'un sous-groupe dudit réseau. La présente invention concerne également un système de sauvegarde distribuée de données numérique comprenant une pluralité d'équipements informatiques, un réseau informatique auquel sont connectés lesdits équipements informatiques pour la mise en uvre du procédé. On comprendra mieux l'invention à l'aide de la description, faite ciaprès à titre purement explicatif, d'un mode de réalisation de l'invention, en référence aux figures annexées où : la figure 1 représente l'architecture globale du système; la figure 2 représente l'architecture globale d'un système client; la figure 3 représente l'organisation du système 10 de fichiers virtuels; La figure 4 illustre les différentes voies de communication du système; la figure 5 représente les échanges de message suite à un crash d'un équipement; et la figure 6 illustre le mécanisme de versioning. La présente invention met en oeuvre un procédé de sauvegarde distribuée de données numériques sur un réseau informatique. L'invention fonctionne sur un parc informatique entier, elle n'a pas besoin de serveur dédié, ni d'un administrateur réseau. Le système de fichier va utiliser tout l'espace libre non sollicité de toutes les machines connectées au parc informatique. Le programme va décider de protéger, de sauvegarder et d'envoyer des données sur le réseau, qui seront chiffrées et stockées sur d'autres machines. L'objectif de l'invention est de mettre en place une solution de sauvegarde intégrée au système d'exploitation sans solliciter de matériels informatiques ou des compétences techniques supplémentaires et spécifiques. Cette solution est réalisée en totale transparence avec le système car met en oeuvre des modules de bas niveau, notamment par un pilote kernel qui s'intègre facilement au système d'exploitation. Le moteur du projet tourne autour d'une technologie IA basée sur des agents autonomes qui assurent la bonne répartition et reconstruction des données. Les différents intérêts du procédé de la présente invention portent sur: É la distribution sur toutes les machines du réseau, É la gestion d'un mécanisme de version des fichiers 10 sauvegardés, É l'absence de serveur, É la compatibilité multi-plateformes, É une haute redondance, É une transparence accrue au système par l'utilisation d'un pilote kernel. En référence à la figure 1, le système selon la présente invention comprend un réseau informatique sur lequel sont connectés des postes informatiques, de type ordinateurs. Tout type de réseau s'inscrit dans le cadre de l'invention, des réseaux informatiques filaires (LAN, Internet) aux réseaux sans-fil (Wifi). Chaque poste informatique dispose de ressources processeur (CPU), mémoire vive (RAM) et de stockage 25 (disques durs HD). Le but de l'invention est de fournir une solution de stockage de données qui peut utiliser de façon efficace toutes les ressources en stockage HD des postes 30 informatiques. Pour cela des contraintes sont fixées: É le transfert d'informations en respectant totalement les contraintes temps-réel du réseau que la disponibilité de tous les ordinateurs connectés, É l'extraction et la reconstruction des données aussi rapide que possible pour tous les utilisateurs, É l'envoi de message de restauration au réseau à la suite d'un crash de machine, garantissant une sécurité 5 optimale de restauration de données. Pour cela, la solution adoptée et présente sur chaque machine est modulaire avec un noyau (kernel) qui, par son bas niveau, optimise le temps d'accès aux ressources du système, et un deamon et des modules à un niveau plus haut (niveau utilisateur, user) réalisant l'interfaçage avec le noyau et les différentes ressources de l'équipement (réseau, mémoire, interface utilisateur). Le développement de ces différentes parties dans un 15 environnement informatique peut être réalisé en langage C permettant une interaction bas-niveau. Le noyau hooke les différents accès disques (read, write, open, close, rename, delete, stat, statfs, readdir) vers des fonctions spécifiques. Ces accès sont ensuite redirigés via un "device" vers le processus "UserLand", et sont interprétés par les différents agents du programme. Le noyau kernel représente le VFS (Virtual File System) ce qui le rend parfaitement intégré dans le système d'exploitation (transparent pour l'utilisateur). Le dossier de sauvegarde peut être, par exemple, C:/Mes Documents/ mais une représentation virtuelle du dossier de sauvegarde peut aussi être faite par l'utilisation d'un lecteur virtuel, par exemple J:/ . Toutes les fonctionnalités de stockage, de résolution de noms de fichiers du système de fichiers s'exécutent dans le processus "UserLand", le noyau sert seulement d'interface au système de fichiers. Un module de communication est codé parallèlement au noyau, il a pour but de récupérer les messages provenant du noyau et les envoie aux modules de stockage et à l'agent analyseur, etc. Dans l'architecture globale, l'espace user se compose: É d'une interface de communication dont le rôle est de vérifier la transmission des données entre le noyau et l'interface utilisateur et d'assurer la connectivité avec les autres modules, notamment que les requêtes sont correctement réalisées et retournent des valeurs attendues, É d'un module GUI: l'interface graphique à l'utilisateur, É d'un module de stockage local qui réalise le stockage local des fichiers ainsi qu'une gestion des versions et la reconstruction de fichiers à partir de morceaux récupérés, et * d'un système de distribution dont les rôles sont de 20 dispatcher, distribuer et reconstruire les données de façon sécurise sur le réseau. En référence aux figures 2 et 3, le c ur du système se compose d'un module VFS (Virtual File System). Ce module représente le coeur du système de fichiers, il a pour charge d'organiser les vnodes (structure unique représentant toutes les informations d'une ressource comme un fichier ou un répertoire), les inodes (structure stockée dans chaque vnode contenant les informations système du fichier comme la date de création, le type, la taille, etc.) . Chaque vnode représente un noeud d'un arbre à n branches. Sur chaque vnode, il y aura l'offset du premier bloc de la donnée associée (uniquement si c'est un fichier). Les blocs de données seront stockés dans un autre endroit, indépendamment de l'arbre du système de fichiers. Ce module gère, en parallèle, les stockages distants qui seront stockés dans un endroit indépendamment du stockage local. Le stockage local correspond au stockage de l'utilisateur de la machine actuelle. Ce stockage prend en compte les problématiques de versions des fichiers. Il joue le rôle de cache car il possède l'intégralité des données de l'utilisateur courant. Le stockage distant quant à lui possède uniquement les informations et les données des utilisateurs distants. Les deux stockages ne sont pas associés pour que chaque utilisateur puisse garder son environnement propre afin de garantir une meilleure sécurité. Le stockage local ainsi que sa vfat (arbre système + blocs de données) ne sont pas chiffrés, seul le stockage distant est chiffré car il est inutile de chiffrer les données qui sont déjà accessibles en clair sur le point de montage (vfat), seuls les données "distantes" sont sensibles car elles n'appartiennent pas à l'utilisateur de la machine locale. Toujours en référence à la figure 2, les agents réalisent les fonctionnalités de la présente invention. L'agent monitoring est un agent très important car il a un double rôle; il évalue la fiabilité de sa machine hôte, son espace libre exploitable, la qualité de la bande passante. Avec tous ces critères, il diffuse un poids qui sera la synthèse de la "qualité" de la machine. Ces poids sont très importants car ils permettent, au moment de la répartition d'une donnée, l'élection des machines potentiellement intéressantes sur le réseau à un moment donné. - le deuxième rôle de l'agent monitoring est de garder à jour la liste en temps réel des machines connectées au réseau. Ce module effectue aussi l'élection du pool de machines qui seront retenues pour le déploiement d'une ressource. Lorsque le poids évolue significativement (en + ou en -), le poids est de nouveau diffusé sur le réseau pour que toutes les machines se mettent à jour. Lorsque la machine s'arrête, une trame d'arrêt est envoyée, ou bien, si une machine n'arrive plus à contacter une autre machine, elle prévient alors les autres que telle ou telle machine n'est plus connectée. L'agent reconstructeur est sollicité uniquement après un crash de machine, son rôle est de retrouver et de reconstruire le plus rapidement possible la vfat puis les blocs de données sur l'ensemble du parc informatique. Il se sert des messages Multicast pour prévenir toutes les autres machines en même temps, et l'agent reconstructeur de chaque machine distante répond à la requête au cas par cas. L'agent analyseur est crucial, car il décide de la pertinence ou non de créer une nouvelle version d'une ressource dans le système de fichiers, et/ou d'envoyer sur différentes machines cette ressource pour effectuer une sauvegarde distante (ou plusieurs). Cet agent est autonome et prend en considération, pour effectuer son choix, plusieurs critères système importants notamment la taille de la ressource, sa date de mise à jour, etc. (cette énumération n'est pas limitative des paramètres utilisables). La figure 4 illustre les différentes voies de communication du système. Un module de communication centralise les envois de messages de chacun des agents et les expédient soit vers l'agent destinataire (agent B) soit sur le réseau à destination d'une autre machine (machine B). Dans un mode de réalisation, lorsqu'une machine se connecte au réseau, l'agent de monitoring diffuse des informations illustrant la disponibilité de la machine. Ces informations peuvent contenir, par exemple, l'adresse IP qui identifie de façon unique la machine et un coefficient caractéristique des disponibilités des ressources de la machine. Ce coefficient ou poids peut être une fonction des informations CPU, mémoire vive, mémoire disque dur et up- time. L'envoi de ces informations peut être réalisé de façon Multicast lorsque le réseau est structuré en sous-groupe. De plus cet envoi est renouvelé pendant le fonctionnement de la machine, par exemple au bout d'un temps imparti ou lorsque son coefficient a été modifié. Les agents de chacune des machines du réseau ou du sous-groupe possèdent ainsi la liste des (IP, coefficient) de chacune des autres machines. Pour des raisons de sécurité, une validation de la liste est effectuée par une connexion TCP à chacune des machines et par l'envoi d'un certificat SSL, par exemple SSLv3 + Certificats X509 v3. Lors de l'édition ou création d'un fichier, les agents réalisent une double sauvegarde du fichier. D'une part, une sauvegarde locale est effectuée, de préférence non chiffrée même si certains systèmes de 30 fichiers chiffrent automatiquement les données. D'autre part, le fichier est découpé en morceau soit de taille fixe (1024 octets par exemple) soit de taille adaptée en fonction du type de fichier (multimédia) ou de sa propre taille. Un en-tête (nom du fichier d'appartenance, numéro de bloc, ...) est ajouté au morceau et l'ensemble est chiffré selon un algorithme de chiffrement traditionnel. Par exemple: É Méthode: clef dérivées de la passphrase: PKCS#5 v2 (PBKDF2-HMAC-SHA1) É Chiffrement des données: AES 128Bits. É Générateur de nombres aléatoires ISAAC de Bob Jenkins La partie la plus sensible est la génération des clefs servant à chiffrer les données et les metadatas, il faut éviter une collision de clefs générées, tout en gardant en visu une performance accrue. Pour cela, il faut passer le système de chiffrement par un benchmark pour diminuer la sécurité si les performances sont mauvaises. Le changement de passphrase entraîne la suppression des précédentes données, sauf si on re-chiffre les données sauvegardées localement et qu'on les redistribue durant la nuit ou quand la machine n'est pas utilisée. Les blocs ainsi chiffrés sont envoyés de façon sécurisée vers différentes machines pour assurer une redondance de la sauvegarde. Le nombre de machines sur lesquelles sont envoyés les blocs est défini par l'administrateur du système. Cette distribution des données sur différentes machines permet le cas échéant de disposer de plusieurs voies de récupération des données: si un ordinateur crashe, les données seront toujours récupérables sur un autre poste. C'est cette distribution qui donne le nom de sauvegarde distribuée. Les agents des machines en question réceptionnent les blocs et les stockent de façon locale. Pour optimiser les performances de la solution, les agents mettent à profit les périodes creuses d'utilisation des machines pour réaliser toutes sortes d'actions: défragmentation des blocs de données, nettoyage sur le poste des versions de blocs les plus anciennes afin de récupérer de l'espace mémoire, Dans un autre mode de réalisation, une machine appartenant au réseau a crashé , toutes les données ont été perdues. En référence à la figure 5, après la réinstallation des agents, le machine envoie une requête Multicast comportant un identifiant de la machine (adresse IP, nom DHCP de la machine, ...) ou une requête sur les machines les plus disponibles. Les machines indiquent les données (blocs) de la machine crashée dont elles disposent. Cette dernière fait alors une requête spécifique des données aux machines les plus disponibles de façon à récupérer le plus rapidement possible toutes les données initiales. Après réception des blocs, les agents reconstituent 20 les fichiers originaux. Comme illustré par la figure 6, un système d'archivage de versions est implémenté dans la solution selon la présente invention. Cette solution de versioning permet entre autres de récupérer des anciennes versions d'un fichier. Pour cela, à chaque modification d'un fichier, la sauvegarde avec incrément de version n'est réalisée que sur les blocs de données qui ont été modifiés ou sur ceux qui ont été créés. La version 2 du fichier file.ext se différencie de la version 1 par un nouveau bloc 1 (Ref #0004). Quant à la version 4, elle se compose du bloc 1 (Ref #0004) modifié pour la version 2, du bloc 2 (Ref #0005) modifié pour la version 3 et du bloc 3 (Ref #0007) modifié pour la version 4. Cette solution de versioning différentielle permet un gain de place important en comparaison des solutions qui 5 sauvegardent tout le fichier pour chaque version. L'archivage des versions peut être basé sur un numéro donné à chaque version ou, plus simplement, sur l'utilisation de la date pour hiérarchiser les blocs. Pour accroître l'efficacité du système, des mécanismes d'apprentissage ou d'analyse comportementale sont aussi mis en place afin d'établir des profils d'utilisateur: par exemple, plus un fichier est régulièrement accédé, plus le versioning doit être fréquent, les documents avec des extensions.doc et.xls sont régulièrement sauvegardés sous des versions différentes pour un utilisateur de type secrétariat , des codes sources d'un informaticien sont également très régulièrement sauvegardés. En outre, des règles statiques peuvent être établies 20 par l'administrateur, règles déterminant la politique de versioning. Dans un mode de réalisation, la redondance des données est réalisée par la solution technique RAID 5 (Redundant Array of Inexpensive Disks) consistant à réaliser une parité d'au moins deux blocs élémentaires de données. En prenant deux blocs issus de la fragmentation d'une page mémoire, un troisième bloc de parité est construit de telle sorte que ce troisième bloc associé avec n'importe lequel du premier ou second bloc permet de retrouver le bloc non utilisé. La force d'un tel mécanisme réside dans le fait que tous les blocs de parité ne sont pas des données exploitables à elles seules. Ainsi, l'opération de chiffrement de données n'est nécessaire que sur les blocs de données pures . N blocs de données peuvent être recouvrés à partir d'un seul bloc de données pures et de (N-1) blocs de parité. L'invention est décrite dans ce qui précède à titre d'exemple. Il est entendu que l'homme du métier est à même de réaliser différentes variantes de l'invention sans pour autant sortir du cadre du brevet. REVENDICATIONS 1. Procédé de sauvegarde de données numériques sur une pluralité d'équipements informatiques connectés à au 5 moins un réseau informatique, caractérisé en ce qu' . - il ne met pas en uvre de serveur informatique centralisé, - il comprend: É une étape préalable de calcul et de transmission de la charge des équipements aux autres équipements du réseau, l'étape étant réalisée par les équipements eux-mêmes, É une étape de sauvegarde distribuée desdites données, la sélection et la répartition des données étant réalisées, par lesdits équipements, de façon à ce que les charges relatives aux données sont reparties de façon automatisée et de manière à atteindre un équilibre de charge des équipements. 2. Procédé de sauvegarde de données numériques selon la revendication précédente, caractérisé en ce que lesdites charges des équipements sont fonction des ressources CPU, RAM, disque dur et uptime . 3. Procédé de sauvegarde de données numériques selon les revendications précédentes, caractérisé en ce que ladite étape de sauvegarde comprend une sous-étape de découpage desdites données en blocs. 4. Procédé de sauvegarde de données numériques selon la revendication précédente, caractérisé en ce que lesdits blocs sont chiffrés. 5. Procédé de sauvegarde de données numériques selon la revendication 3, caractérisé en ce que ladite étape de sauvegarde est effectuée selon la technologie RAID 5. 6. Procédé de sauvegarde de données numériques selon les revendications précédentes, caractérisé en ce qu'il comprend en outre une étape de versioning desdites données sauvegardées. 7. Procédé de sauvegarde de données numériques selon la revendication précédente, caractérisé en ce qu'il comprend, en outre, une étape de détermination du profil de l'utilisateur et une étape d'effacement des anciennes versions desdites données ne correspondant pas audit profil déterminé. 8. Procédé de sauvegarde de données numériques selon les revendications précédentes, caractérisé en ce que ladite sauvegarde est distribuée sur les équipements d'un sous-groupe dudit réseau. 9. Système de sauvegarde distribuée de données numérique comprenant une pluralité d'équipements informatiques, au moins un réseau informatique auquel sont connectés lesdits équipements informatiques pour la mise en uvre du procédé selon l'une quelconque des revendications précédentes.