FR2944893A1 - storage system comprising multiple network nodes with Writing synchronization management - Google Patents

storage system comprising multiple network nodes with Writing synchronization management Download PDF

Info

Publication number
FR2944893A1
FR2944893A1 FR0902056A FR0902056A FR2944893A1 FR 2944893 A1 FR2944893 A1 FR 2944893A1 FR 0902056 A FR0902056 A FR 0902056A FR 0902056 A FR0902056 A FR 0902056A FR 2944893 A1 FR2944893 A1 FR 2944893A1
Authority
FR
France
Prior art keywords
storage
access
addresses
address
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
FR0902056A
Other languages
French (fr)
Inventor
Olivier Cozette
Michael Dussere
Ivan Frain
Samuel Richard
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seanodes
Original Assignee
Seanodes
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seanodes filed Critical Seanodes
Priority to FR0902056A priority Critical patent/FR2944893A1/en
Publication of FR2944893A1 publication Critical patent/FR2944893A1/en
Application status is Pending legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from or digital output to record carriers, e.g. RAID, emulated record carriers, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0602Dedicated interfaces to storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from or digital output to record carriers, e.g. RAID, emulated record carriers, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0628Dedicated interfaces to storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from or digital output to record carriers, e.g. RAID, emulated record carriers, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0628Dedicated interfaces to storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from or digital output to record carriers, e.g. RAID, emulated record carriers, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0668Dedicated interfaces to storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Abstract

Un outil informatique de stockage de données dans un réseau de stations, chaque station comprenant une ou plusieurs unités de stockage (38) dont certaines au moins comportent des adresses de stockage propres à recevoir des données de stockage. A computer tool data storage in a network of stations, each station comprising one or more storage units (38) some of which at least comprise an own storage addresses to receive data storage. Cet outil est implanté sur chaque station et comprend d'une part un virtualiseur (36) associant des adresses virtuelles et des adresses de stockage, et d'autre part un gestionnaire d'accès (44) aux adresses de stockage de cette station, agencé pour communiquer avec les gestionnaires d'accès d'autres stations pour exécuter une requête par accès à un stockage volatile (38b) et/ou à un stockage persistent (38a) des unités de stockage de ces stations. This tool is located on each station and comprises firstly a virtualizer (36) associating virtual addresses and storage addresses, and on the other hand an access manager (44) to the storage address of this station, arranged to communicate with other access stations managers to execute a request for access to a volatile storage (38b) and / or a persistent storage (38a) of the storage units of these stations. Chaque gestionnaire d'accès (44) est agencé pour synchroniser sélectivement le stockage volatile (38b) et le stockage persistent (38a) de certaines au moins des unités de stockage (38) dont il gère l'accès, en fonction d'un état d'écriture de certaines des adresses virtuelles associées aux adresses de stockage de ces unités de stockage (38). Each access manager (44) is arranged to selectively synchronize the volatile storage (38b) and the persistent storage (38a) of at least some of the storage units (38) which manages the access, in accordance with a state write some of the virtual addresses associated with the storage addresses of the storage units (38).

Description

SEANODES5.FRD 1 Système de stockage comprenant plusieurs noeuds en réseau avec gestion de synchronisation d'écriture SEANODES5.FRD one storage system comprising several network nodes with write timing management

L'invention concerne un système de stockage comprenant plusieurs noeuds en réseau 5 avec gestion de synchronisation d'écriture. The invention relates to a storage system comprising several network nodes 5 with write timing management.

Les réseaux modernes comportent des stations utilisateurs qui sont reliées à un ou plusieurs serveurs et peuvent partager des applications et/ou des espaces de stockage de manière locale ou distante. Modern networks comprise user stations which are connected to one or more servers and can share applications and / or local or remote way storage space. Dans le cadre d'applications partagées faisant usage d'une quantité importante de données ou dans le cadre du partage d'une quantité importante de données, il est fréquent de faire appel à des systèmes de stockage spécialisés, tels que les Storage Area Network (ou SAN). In the context of shared applications making use of a large amount of data or under sharing a large amount of data, it is common to use specialized storage systems, such as Storage Area Network ( or SAN). 15 L'utilisation de ces systèmes perfectionnés présente certains désavantages, comme les coûts associés, les limitations de performance et d'extensibilité, et la lourdeur générale de l'installation qui leur correspond. 15 The use of these advanced systems present certain disadvantages, such as the associated costs, the limitations of performance and scalability, and overall heaviness of the installation which corresponds to them.

20 Par ailleurs, avec les réseaux modernes, l'utilisation de ces systèmes perfectionnés représente une sous utilisation du matériel déjà présent dans le réseau. 20 Furthermore, with modern networks, the use of these advanced systems is an under use of equipment already present in the network.

Enfin, les systèmes qui ont été proposés qui utilisent le matériel déjà présent dans le réseau ont des performances insatisfaisantes, notamment en termes de gestion des 25 pannes ainsi que dans la quantité d'espace allouée à la redondance des données. Finally, the systems that have been proposed which use the equipment already present in the network have unsatisfactory performance, particularly in terms of management failures 25 as well as the amount of space allocated for data redundancy.

L'invention vient améliorer la situation. The invention improves the situation.

A cet effet, l'invention propose un outil informatique de stockage de données dans un 30 réseau de stations, chaque station comprenant une ou plusieurs unités de stockage dont certaines au moins comportent des adresses de stockage propres à recevoir des données de stockage. To this end, the invention provides a computer program data storage 30 in a network of stations, each station comprising one or more storage units some of which at least comprise an own storage addresses to receive data storage. 10 Cet outil est implanté sur chaque station et comprend d'une part un virtualiseur associant des adresses virtuelles et des adresses de stockage, et d'autre part un gestionnaire d'accès aux adresses de stockage de cette station, agencé pour communiquer avec les gestionnaires d'accès d'autres stations pour exécuter une requête par accès à un stockage volatile et/ou à un stockage persistent des unités de stockage de ces stations. This tool 10 is set on each station and comprises firstly a virtualizer associating virtual addresses and storage addresses, and on the other hand an access manager to this station storage addresses, arranged to communicate with managers other stations access to run applications from accessing a volatile storage and / or storage persist storage units of these stations.

Chaque gestionnaire d'accès est agencé pour synchroniser sélectivement le stockage volatile et le stockage persistent de certaines au moins des unités de stockage dont il gère l'accès, en fonction d'un état d'écriture de certaines des adresses virtuelles associées aux adresses de stockage de ces unités de stockage. Each access manager is arranged to selectively synchronize the volatile storage, and persistent storage of at least some of the storage units which it manages access, according to a write state of some of the virtual addresses associated with the addresses storage of these storage units.

D'autres caractéristiques et avantages de l'invention apparaîtront mieux à la lecture de la description qui suit, tirée d'exemples donnés à titre illustratif et non limitatif, tirés des dessins sur lesquels : - la figure 1 montre une vue fonctionnelle générale d'un système informatique selon l'invention, - la figure 2 montre un exemple d'implémentation logique du système de la figure 1, - la figure 3 montre un exemple de composition d'un élément de la figure 2, - la figure 4 montre un exemple de composition d'un élément de la figure 3, - la figure 5 montre un exemple d'une variante de l'élément de la figure 2, - la figure 6 montre un procédé d'accès à un fichier dans le système de la figure 1, - la figure 7 montre un exemple de mise en oeuvre d'une opération de la figure 6, - la figure 8 montre un exemple de mise en oeuvre d'une autre opération de la figure 6, et - la figure 9 montre un exemple de mise en oeuvre d'une opération de la figure 7. Other features and advantages of the invention will become more apparent from reading the description which follows, taken from examples provided for illustration and not limitation, from the drawings in which: - Figure 1 shows a general functional view of a computer system according to the invention, - Figure 2 shows an exemplary logical implementation of the system of Figure 1, - Figure 3 shows an example of composition of a member of Figure 2, - Figure 4 shows a example of composition of a member of Figure 3, - Figure 5 shows an example of a variant of the member of Figure 2, - Figure 6 shows a method of access to a file in the system of Figure 1, - Figure 7 shows an exemplary implementation of an operation of Figure 6 - Figure 8 shows an example implementation of another operation of Figure 6, and - Figure 9 shows an exemplary implementation of an operation of Figure 7.

Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. The drawings and the description below contain, essentially, elements of a certain character. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. They may therefore not only serve to better understand the present invention, but also contribute to its definition, if necessary. La présente description est de nature à faire intervenir des éléments susceptibles de protection par le droit d'auteur et/ou le copyright. This description is likely to involve elements capable of protection by copyright and / or copyright. Le titulaire des droits n'a pas30 d'objection à la reproduction à l'identique par quiconque du présent document de brevet ou de sa description, telle qu'elle apparaît dans les dossiers officiels. The rights holder has not.30 objection to the identical reproduction by anyone of this patent document or its description as it appears in the official files. Pour le reste, il réserve intégralement ses droits. For the rest, it fully reserves its rights.

La figure 1 représente un schéma général d'un système informatique selon l'invention. Figure 1 shows a general diagram of a computer system according to the invention. Dans ce système, un environnement d'application 2 a accès à un gestionnaire de système de fichiers 4. Une couche de virtualisation 6 établit la correspondance entre le gestionnaire de système de fichiers 4 et des serveurs de stockage 8. In this system, an application environment 2 has access to a file system manager 4. A virtualization layer 6 establishes the correspondence between the file system manager 4 and the storage servers 8.

La figure 2 représente une implémentation logique du système de la figure 1. Dans cette implémentation, un ensemble de stations 10, également appelées ici noeuds sont interconnectées en un réseau dont elles constituent les ressources physiques et applicatives. 2 shows a logic implementation of the system Figure 1. In this implementation, a set of 10 stations, also referred to herein nodes are interconnected in a network which they constitute the physical and application resources.

Dans l'exemple ici décrit, le réseau est constitué de 5 stations, notées Ni avec i variant entre 1 et 5. L'environnement d'application 2 est réalisé en une couche applicative répartie 12 sur les N1, N2 et N3, en une couche applicative 14 sur le N4 et une couche applicative 16 sur le N5. In the example described here, the network consists of 5 stations, denoted Ni with i varying between 1 and 5. The application environment 2 is made of a distributed application layer 12 of the N1, N2 and N3, in a application layer 14 of the N4 and an application layer 16 of the N5.

On notera que le terme poste ou station utilisé ici doit être interprété de manière générale, et comme désignant des éléments informatiques du réseau sur lesquels tournent des applications ou des programmes de serveur, ou les deux. Note that the term post or station used herein should be interpreted broadly, and as designating network computing elements that run applications or server programs, or both.

Le gestionnaire de système de fichiers 4 est réalisé en un système de fichiers réparti 18, et deux systèmes de fichiers non répartis 20 et 22. Le système 18 est réparti sur les N1, N2 et N3 et définit l'ensemble des fichiers accessibles depuis la couche applicative répartie 12. Les systèmes de fichiers 20 et 22 définissent respectivement l'ensemble des fichiers accessibles depuis les couches applicatives 14 et 16. The file system manager 4 is made of a distributed file system 18, and two non-distributed file systems 20 and 22. The system 18 is distributed over the N1, N2 and N3 and defines the set of files accessible from the distributed application layer 12. 20 and 22 respectively define file systems all the files accessible from the application layers 14 and 16.

Les fichiers désignés par les systèmes de fichiers 18, 20 et 22 sont stockés dans un espace de stockage virtuel 24 qui est réparti sur l'ensemble des Ni avec i variant entre 1 et 5. L'espace de stockage virtuel 24 est ici réparti en un espace logique partagé 26, et deux espaces logiques privés 28 et 30. The file designated by the file systems 18, 20 and 22 are stored in a virtual storage space 24 that is spread over all Ni with i varying between 1 and 5. The virtual storage space 24 is here divided into a shared logical space 26, and two private logical spaces 28 and 30.

L'espace logique partagé 26 correspond à l'espace accessible depuis la couche applicative répartie 12 au moyen du système de fichiers réparti 18, et les espaces logiques privés 28 et 30 à l'espace accessible depuis les couches applicatives 14 et 16 au moyen des systèmes de fichiers 20 et 22. The shared logical space 26 corresponds to the space available for the distributed application layer 12 by means of the distributed file system 18, and private logical spaces 28 and 30 to the space available for the application layers 14 and 16 by means of file systems 20 and 22.

L'espace logique 26 est réparti sur les N1, N2 et N3, l'espace logique privé 28 sur les N3 10 et N4, et l'espace logique privé 30 sur le N5. The logical space 26 is distributed on the N1, N2 and N3, the private logic space 28 of the 10 N3 and N4, and the private logic space 30 over N5.

Ainsi, une application de la couche 12 (respectivement 14, 16) "voit" les données stockées dans l'espace logique 26 (respectivement 28, 30) au moyen du système de fichiers 18 (respectivement 20, 22), bien que celles-ci ne soient pas forcément 15 physiquement présentes sur l'un des disques de stockage de la station 10 qui utilise cette application. Thus, an application of the layer 12 (respectively 14, 16) "sees" the data stored in the logical space 26 (respectively 28, 30) by means of the file system 18 (respectively 20, 22), although celles- these are not necessarily 15 physically present on one of the storage disks from the station 10 that uses this application.

Par ailleurs, les espaces 26, 28 et 30 sont purement logiques, c'est-à-dire qu'ils ne représentent pas directement des espaces de stockage physiques. Moreover, the spaces 26, 28 and 30 are purely logical, that is to say they do not directly represent physical storage space. Les espaces logiques 20 sont cartographiés au moyen d'adresses virtuelles qui sont référencées ou contenues dans les systèmes de fichiers 18, 20 et 22. The logical spaces 20 are mapped using virtual addresses that are referenced or contained in the file systems 18, 20 and 22.

Pour accéder aux données de ces fichiers, il est nécessaire de faire appel à un module de correspondance. To access the data from these files, it is necessary to use a matching module. Le module de correspondance contient une table de correspondance 25 entre les adresses virtuelles des données dans les espaces logiques et des adresses physiques qui désignent les espaces de stockage physiques dans lesquels ces données sont réellement stockées. The matching module includes a lookup table 25 between virtual addresses of the data in the logical space and the physical addresses which designate the physical storage areas in which data is actually stored.

Plusieurs réalisations sont possibles pour le module de correspondance. Several embodiments are possible for the connection module. La répartition 30 des espaces de stockage physiques décrite ici est un exemple destiné à montrer la portée très générale de l'invention. The distribution 30 of the physical storage areas described here is an example to show the very general scope of the invention.

Comme on peut le voir dans l'exemple présenté, chaque station est utilisée à la fois pour la couche applicative et pour la couche de stockage. As can be seen in the example shown, each station is used for both the application layer and the storage layer. Cette multifonctionnalité permet d'utiliser l'espace libre sur l'ensemble des stations du réseau, plutôt que laisser cet espace inoccupé. This multifunctionality allows to use the free space on all network stations, rather than leave this vacant space. Dans le cadre de l'invention, il serait cependant possible de spécialiser certaines des stations, et de créer un noeud dédié au stockage ou un noeud dédié à des applications. In the context of the invention, it is however possible to specialize some of the stations, and create a dedicated storage node or a node dedicated to applications.

Cela signifie que, dans le cadre de l'invention, toute station peut jouer un rôle de noeud 10 applicatif, un rôle de noeud stockant, ou encore ces deux rôles à la fois. This means that, in the context of the invention, any station can act as a node 10 application, a role of storing node, or both roles at once.

L'ensemble des ressources applicatives, de stockage et de système de fichiers peuvent être intégrées localement sur chaque station, ou bien réparties sur les stations du réseau. The set of application resources, storage and file system can be integrated locally on each station, or distributed over the network stations.

15 C'est par exemple le cas des stations N1, N2 et N3, dont les ressources sont intégralement réparties, tant au niveau applicatif qu'au niveau du système de fichiers et du stockage. 15 This is for example the case of N1 stations, N2 and N3, whose resources are fully distributed, both at application level and file system and storage.

La figure 3 représente un exemple d'architecture d'une station 10 de la figure 2. La 20 station représentée dans cet exemple peut représenter l'une des stations N1 à N5. Figure 3 shows an example of architecture of a station 10 in Figure 2. The 20 station shown in this example may be one of N1 to N5 stations.

La station Nx présente individuellement une structure semblable à celle de la structure globale représentée sur la figure 1. Elle comporte ainsi une couche applicative 32, un système de fichiers 34, une couche de virtualisation 36 et un espace de stockage 38 sous 25 la forme d'une mémoire locale à accès direct. The Nx station individually present a structure similar to that of the overall structure shown in Figure 1. It thus includes an application layer 32, a file system 34, a virtualization layer 36 and a storage space 38 in the form of 25 a local random access memory.

La couche de virtualisation 36 comporte un moteur 40 et une table de correspondance 42. L'accès direct à l'espace de stockage 38 est géré par un gestionnaire d'accès 44. The virtualization layer 36 comprises a motor 40 and a correspondence table 42. The direct access to the storage space 38 is managed by an access manager 44.

30 L'exemple décrit ici représente un mode de réalisation perfectionné de l'invention, dans lequel toutes les ressources, tant applicatives que de stockage, sont réparties sur le réseau.5 6 Cela signifie par exemple que le système de fichiers 34 n'est pas intégralement présent sur cette station, mais réparti sur plusieurs d'entre elles, et que l'accès à celui-ci implique la communication avec d'autres noeuds du réseau qui contiennent les données recherchées. 30 The example described here represents an improved embodiment of the invention, in which all resources, both as application storage, are spread over the 6 réseau.5 This means for example that the file system is 34 not completely present on this station, but distributed over a number of them, and that access to it is the communication with other nodes of the network which contain the desired data. Il en est de même pour la couche de virtualisation 36 et le gestionnaire d'accès 44. La répartition de ces éléments est gérée au moyen d'un module d'administration 46. Pour la suite de la description, il importe peu que les ressources considérées soient réparties ou pas. It is the same for the virtualization layer 36 and the access manager 44. The breakdown of these items is managed by an administration module 46. In the following description, it is irrelevant whether the resources considered are distributed or not. 10 Le module d'administration 46 est principalement utilisé lors de la création et de la mise à jour des espaces logiques. 10 The administration module 46 is primarily used when creating and updating logical spaces. Lors de la création ou de la modification d'un espace logique, le module d'administration 46 appelle la couche de virtualisation 36 pour créer la table de correspondance entre chaque adresse virtuelle de l'espace logique et une 15 adresse physique sur un noeud de stockage donné. When creating or modifying a logical space, the management module 46 calls the virtualization layer 36 to create the table of correspondence between each virtual address of the logical space and a physical address on a 15 node given storage.

Ensuite, les correspondances entre un fichier accessible par ce système de fichiers et les adresses virtuelles des données qui composent ce fichier sont réalisées au niveau du système de fichiers qui exploite cet espace logique, les données "physiques" étant 20 stockées aux adresses physiques associées dans la table de correspondance aux adresses virtuelles, conformément à la cartographie établie lors de la création de l'espace logique. Next, the correspondence between a file accessible by the file system and virtual addresses of the data comprising this file are performed at the file that exploits this logical space system, "physical" data being 20 stored physical addresses associated in the correspondence table to the virtual addresses, in accordance with the mapping established at the establishment of the logical space.

Cela signifie que, dès la création d'un espace logique par le module d'administration, les correspondances entre les adresses virtuelles et les adresses physiques sont établies. This means that from the creation of a logical space by the administration module, the correspondence between virtual addresses and physical addresses are established. Les 25 adresses virtuelles apparaissent ainsi "vides" au système de fichier accédant à l'espace logique, bien que les adresses physiques qui leur correspondent soient déjà "réservées" par le biais de la table de correspondance. The 25 virtual addresses appear as "empty" in accessing file system to the logical space, although the physical addresses that correspond to them are already "reserved" through the correspondence table.

C'est lorsque le lien entre les données des fichiers de cet espace et les adresses virtuelles 30 de ces données est établi que les adresses physiques sont remplies. This is when the link between the data file space and virtual address 30 of the data is established that the physical addresses are met.

Dans le mode de réalisation décrit ici, la table de correspondance 42 est un tableau qui contient des informations permettant de retrouver les correspondances. In the embodiment described here, the correspondence table 42 is a table that contains information to find matches. Lorsqu'une application fait appel à un espace mémoire donné, le moteur 40 interagit avec la table 42 pour établir l'adresse physique correspondante. When an application uses a given memory space, the motor 40 interacts with the table 42 to determine the corresponding physical address. On comprendra qu'ici, la table 42 n'est pas une look-up table classique, mais plutôt une table qui stocke un nombre d'informations restreint mais qui permet au moteur 40 de recouvrer les adresses physiques. It is understood that here, the table 42 is a look-up table classic, but a table that stores a number of restricted information but allows the engine 40 to recover the physical addresses.

10 En effet, comme cela sera explicité plus bas, les adresses sur les différentes unités de stockage sont associées par bloc, ce qui permet de retrouver une adresse rapidement, sans avoir à stocker toutes les correspondances possibles. 10 Indeed, as will be explained below, addresses the different storage units associated block, allowing to regain quickly address, without having to store all possible matches.

La figure 6 représente un procédé mis en oeuvre par le système pour accéder à un 15 fichier. 6 shows a process implemented by the system 15 to access a file.

L'accès à un fichier par une application de la couche applicative d'un noeud donné est initialisé par une requête d'accès fichier 50. La requête d'accès fichier 50 comporte : - un identifiant du fichier concerné pour le système de fichiers et une adresse dans ce 20 fichier, - la taille de la requête, c'est-à-dire le nombre de bits à accéder à la suite de l'adresse du fichier visé, - le type de requête, à savoir la lecture ou l'écriture, et - un identifiant de tampon pour stocker les données lues ou obtenir les données à écrire. Access to a file by an application of the application layer of a given node is initialized by an access request 50. The file access request file 50 comprises: - an identifier of the concerned file to the file system and an address 20 in this file - the size of the application, that is to say the number of bits to access following the address of the intended file - the type of application, namely reading or writing, and - a buffer ID to store the data read or write to get the data. 25 Dans une opération 52, le système de fichiers détermine une ou plusieurs adresses virtuelles pour les données de ce fichier, et génère une ou plusieurs requêtes d'accès virtuel sur la base de la requête 50 et de ces adresses virtuelles. 25 In an operation 52, the file system determines one or more virtual addresses for the data of this file, and generates one or more queries virtual access based on the application 50 and the virtual addresses.

30 Les requêtes d'accès virtuel comportent chacune : - l'adresse virtuelle visée,5 8 - la taille de la requête, c'est-à-dire le nombre de bits à accéder à la suite de l'adresse virtuelle visée, - le type de requête, qui est identique à celui de la requête 50, et - un identifiant de tampon pour stocker les données lues ou obtenir les données à écrire. The 30 virtual access requests each include: - the virtual address referred, 5 8 - the size of the request, that is to say the number of bits to access following the virtual address referred - the type of request, which is identical to that of the application 50, and - a buffer identifier for storing the read data or to obtain data to be written. Si l'on se rapporte au système décrit sur la figure 2, l'opération 52 consiste à déterminer l'espace logique (ou volume logique) et la ou les adresses virtuelles sur cet espace désignées par la requête 50, et à produire une ou plusieurs requêtes d'accès virtuel. If one refers to the system described in Figure 2, the operation 52 is to determine the logical space (or logical volume) and the one or more virtual addresses of this space designated by the request 50, and to produce one or several virtual access requests.

10 Le terme d'accès virtuel signifie que l'on accède à des adresses de la couche virtuelle. 10 The term virtual access means that you can access addresses from the virtual layer. Cependant, comme il ressort clairement de ce qui précède, cet accès n'est pas virtuel en lui-même et implique un accès à des données physiques correspondantes. However, as is clear from the above, this access is not virtual in itself and requires access to corresponding physical data.

Il existe une différence de niveau entre les requêtes d'accès fichiers et les requêtes 15 d'accès virtuel. There is a level difference between file access requests and queries 15 virtual access. En effet, une requête d'accès fichier va viser le contenu d'une quantité importante d'adresses virtuelles, afin de permettre de reconstituer le contenu d'un fichier, alors qu'une requête virtuelle vise le contenu d'un bloc de données associé à cette adresse. Indeed, a file access request will target the contents of a large amount of virtual addresses to enable to reconstruct the contents of a file, while a virtual application is the content of a data block associated with that address.

20 La ou les requêtes d'accès virtuel obtenues sont alors transmises à la couche de virtualisation, qui détermine la ou les adresses physiques et les espaces de stockage correspondants dans une opération 54. The obtained 20 or virtual access requests are then transmitted to the virtualization layer, which determines which physical addresses and the corresponding storage space 54 in one operation.

Pour déterminer les adresses physiques, la couche de virtualisation opère en utilisant le 25 moteur 40 et la table de correspondance 42. To determine the physical addresses, the virtualization layer 25 operates by using the motor 40 and the correspondence table 42.

Dans le cadre d'une requête d'accès en lecture, les données du fichier existent déjà, et le moteur 40 appelle la table de correspondance 42 avec la ou les adresses virtuelles de ce fichier pour déterminer par correspondance la ou les adresses physiques des données du 30 fichier. As part of a read access request, file data already exists, and the motor 40 calls the lookup table 42 with the one or more virtual addresses of the file to determine the correspondence or the physical addresses of data 30 file. 10 Dans le cadre d'une requête d'accès en écriture, les données du fichier n'existent pas forcément de manière préalable. 10 As part of a write access request, file the data do not necessarily exist prior manner. Néanmoins, comme on l'a vu plus haut, les correspondances entre adresses virtuelles et adresses physiques sont figées, et le moteur 40 opère donc de la même manière que dans le cadre d'une requête en lecture pour déterminer la ou les adresses physiques des données. However, as noted above, the correspondence between virtual addresses and physical addresses are fixed, and thus the motor 40 operates in the same manner as part of a read request to determine which physical addresses data.

Dans tous les cas, une fois que le moteur 40 a déterminé les adresses physiques, il génère dans une opération 56 des requêtes d'accès physique qu'il transmet au gestionnaire d'accès 44. Dans l'opération 56, les requêtes d'accès physique sont générées sur la base de la requête 50 et de la ou des adresses physiques déterminées à l'opération 54. In all cases, once the motor 40 has determined the physical addresses, it generates in an operation 56 of physical access requests it transmits to the access manager 44. In operation 56, the requests of physical access are generated based on the application 50 and the one or more physical addresses determined in operation 54.

Ces requêtes comportent : 15 - l'adresse physique visée, - la taille de la requête, c'est-à-dire le nombre de bits à accéder à la suite de l'adresse physique visée par la requête, - le type d'action visée, à savoir la lecture ou l'écriture de données, la resynchronisation ou la vérification de parité, 20 - un identifiant de tampon pour stocker les données lues ou obtenir les données à écrire, et - des données complémentaires nécessaires à l'exécution de la requête. These applications include: 15 - the physical address targeted, - the size of the application, that is to say the number of bits to access following the physical address to which the application, - the type of action referred, namely reading or writing data, resynchronization or parity checking, 20 - a buffer identifier to store the data read or write to get the data, and - additional data needed to run the request.

L'adresse physique et la taille de la requête sont obtenues directement de l'opération 54, 25 et le type de la requête est hérité du type de la requête d'accès virtuel concernée. The physical address and the request size are obtained directly from the operation 54, 25 and the type of the query is inherited from the type of the request concerned virtual access.

Dans le cadre de l'invention, les données sont stockées selon un schéma de parité. In the context of the invention, data is stored according to a parity scheme. Cela signifie qu'à chaque adresse virtuelle correspond une unique adresse physique. This means that each virtual address is a unique physical address. Cependant, les différents espaces logiques sont répartis sur toutes les unités de 30 stockage 38, c'est-à-dire que les adresses de stockage d'une unité de stockage donnée vont recevoir des données correspondant à des adresses virtuelles de presque tous les espaces logiques. However, different logical areas are spread over all units 30 storage 38, that is to say, the storage addresses of a given storage unit will receive data corresponding to virtual addresses of almost all spaces logical.

En outre, les adresses virtuelles et les adresses physiques correspondantes sont regroupées par blocs d'adresses, et une adresse physique supplémentaire est affectée à chaque bloc pour stocker des données de parité. In addition, the virtual addresses and corresponding physical addresses are grouped in blocks of addresses, and a further physical address is assigned to each block for storing parity data.

Les données de parité sont calculées en réalisant une opération ou exclusif avec toutes les données du bloc. The parity data are calculated by performing an XOR operation with all block data.

Ainsi, si un disque contenant une des adresses physiques du bloc tombe en panne, il reste possible d'accéder aux données perdues, à partir des données des autres adresses 10 du bloc et des données de parité correspondantes. Thus, if a disc containing a physical address of the block fails, it is still possible to access the lost data, from the data of other addresses 10 of the block and the corresponding parity data.

Cela signifie néanmoins que la gestion des accès concurrents à des données d'un bloc donné et le maintien de la cohérence entre les données d'un bloc et ses données de parité sont des objectifs cruciaux. This however means that the management of concurrent access to data in a given block and maintaining consistency between the data of a block and parity data are crucial objectives. Les données complémentaires de la requête d'accès physique servent à fournir au gestionnaire d'accès 44 les informations nécessaires à la réalisation de ces objectifs. Additional data from the physical access request used to provide access manager 44 information necessary to achieve these objectives.

Ainsi, ces données peuvent comprendre : 20 - le volume logique et/ou l'adresse virtuelle qui correspond à l'adresse physique visée, - l'ensemble des adresses physiques du bloc auquel appartient l'adresse physique visée, - un identifiant d'une unité de stockage tombée en panne ou désynchronisée, et - un indicateur de modèle de requête à mettre en oeuvre. Thus, these data may include: 20 - the logical volume and / or the virtual address corresponding to the target physical address - all the physical addresses of the block to which belongs the physical address in question, - an identifier of a storage unit fell down or out of sync, and - a query template flag to implement.

25 Une boucle est alors lancée, dans laquelle une condition d'arrêt 58 est atteinte lorsqu'une requête d'accès physique a été émise au gestionnaire d'accès 44 pour toutes les adresses physiques obtenues à l'opération 52. A loop 25 is then started, wherein a stop condition 58 is reached when a request physical access has been issued to the access manager 44 for all physical addresses obtained in step 52.

En fait, chaque requête d'accès physique est placée dans une file d'attente de requête du 30 gestionnaire d'accès 44 pour exécution dans une opération 60. Le gestionnaire d'accès 44 peut optionnellement comporter plusieurs files d'attente, par exemple une file d'attente par noeud avec lequel il interagit. In fact, each physical access request is placed in a request queue 30 access manager 44 for execution in an operation 60. The access manager 44 may optionally comprise a plurality of queues, e.g. a queue per node with which it interacts. 15 Dans cette boucle, toutes les requêtes d'accès physique de l'opération 56 sont représentées comme exécutées successivement pour des raisons de simplicité. 15 In this loop, all physical access requests of the operation 56 are shown as performed successively for simplicity. Cependant, l'exécution peut également être réalisée en parallèle, et pas seulement en série. However, execution may also be performed in parallel, and not only in series.

Pour l'exécution d'une requête d'accès physique donnée, le gestionnaire d'accès 44 va déterminer une séquence d'appels conditionnés à des éléments qui lui sont propres et/ou à d'autres éléments de gestionnaires d'accès 44 contrôlant les autres unités de stockage. For the execution of a given physical access request, the access manager 44 will determine a sequence of calls to packaged items that are specific and / or other managers elements controlling access 44 the other storage units.

Comme cela apparaît maintenant, le système de l'invention fonctionne selon un paradigme client/serveur, c'est-à-dire que les requêtes sont émises par des clients, et que ces requêtes sont exécutées par des serveurs, qui envoient au client un accusé d'exécution de ces requêtes. As it appears now, the system of the invention operates on a paradigm client / server, that is to say that the requests are sent by customers, and these queries are executed by servers, which send the client a accused of performing these queries.

Ainsi, les gestionnaires d'accès 44 communiquent entre eux soit en tant que client, soit en tant que serveur, pour exécuter les requêtes d'accès physiques en correspondance des requêtes d'accès virtuel. Thus, the access managers 44 communicate with each other either as a client or as a server, to perform the physical access requests corresponding virtual access requests.

20 Cette relation client/serveur peut être implicite, comme cela est le cas dans le mode de réalisation de la figure 3, c'est-à-dire que le gestionnaire d'accès 44 peut jouer les deux rôles, ou être explicite, comme cela est représenté sur la figure 5, où le gestionnaire d'accès 44 est composé par deux modules 44a et 44b qui jouent respectivement le rôle de client et de serveur. 20 This client / server relationship may be implied, as is the case in the embodiment of Figure 3, that is to say, the access manager 44 may play both roles, or be explicit, as shown in Figure 5, wherein the access manager 44 is made up of two modules 44a and 44b which respectively act as client and server. 25 La première implémentation (gestionnaire d'accès pluridisciplinaire ) est intéressante car elle permet d'accorder au gestionnaire d'accès des fonctions plus avancées, par exemple une génération de requête plus poussée pour la gestion de parité. 25 The first implementation (multidisciplinary access manager) is interesting because it allows to grant the access manager more advanced features, such a request further generation for parity management.

30 La deuxième implémentation (un client et un serveur bien distincts) est intéressante car elle est plus simple à mettre en oeuvre et car elle permet de spécialiser chaque module pour ses tâches. 30 The second implementation (a client and a distinct server) is interesting because it is simpler to implement and because it allows each module to specialize its tasks. 15 Par ailleurs, bien que l'exemple décrit ici prévoie que les données sont stockées avec un schéma de parité, d'autres schémas pourraient être utilisés, comme l'utilisation de parités multiples, de réplication simple ou multiple, ou d'autres schémas assurant la redondance dans un stockage réparti et la tolérance aux pannes, ainsi que les schémas à hachurage sans redondance. 15 Furthermore, although the example described here provides that the data is stored with a parity scheme, other patterns could be used as the use of multiple exchange rates, single or multiple replication, or other patterns ensuring redundancy in a distributed storage and fault tolerance, as well as to hatch patterns without redundancy.

La figure 4 représente la composition d'une unité de stockage 38. Comme on peut le voir sur cette figure, chaque unité de mémoire comprend un espace de stockage persistent 38a et un espace de stockage volatile 38b. 4 shows the composition of a storage unit 38. As can be seen in this figure, each memory unit includes a storage space 38a and a persistent volatile storage space 38b.

Cette composition permet d'obtenir des gains de performance conséquents. This composition provides substantial performance gains. En effet, l'espace de stockage volatile 38b peut être réalisé avec de la mémoire dite rapide du type RAM ou autre mémoire à faible latence, tandis que l'espace de stockage persistent 38a peut être réalisé avec de la mémoire dite de stockage du type disque dur, bande ou autre. Indeed, the volatile storage space 38b can be achieved with fast said memory of RAM type or other low latency memory, while storage space persist 38a can be achieved with said memory storage type hard disk, tape or other.

Ainsi, l'unité de mémoire 38 peut écrire des données reçues dans l'espace de stockage volatile 38b, et indiquer au gestionnaire d'accès 44 que la requête a été effectuée plus rapidement que si l'écriture avait été réalisée directement sur l'espace de stockage persistent 38a. Thus, the memory unit 38 can write data received in the volatile storage 38b, and indicate to the access manager 44 that the request has been made more quickly than if the writing had been performed directly on the storage persist 38a.

Ensuite, il reste à synchroniser l'espace de stockage volatile 38b et l'espace de stockage persistent 38a, pour pérenniser ces écritures. Then it remains to synchronize volatile storage 38b and the storage space 38a continue to perpetuate these writings. Dans les systèmes classiques, c'est l'unité de stockage 38 elle-même qui régule les cycles de synchronisation de l'espace de stockage volatile 38b et de l'espace de stockage persistent 38a. In conventional systems, it is the storage unit 38 itself that regulates the timing cycles of the volatile storage space 38b and the storage space 38a persist.

Cette structure pour les unités de stockage 38 est donc très avantageuse en termes de performances. This structure for the storage units 38 is very advantageous in terms of performance. Cependant, elle présente le désavantage que le gestionnaire d'accès 44 ne sait pas quel est l'état de synchronisation de chacune des unités de stockage 38 qu'il gère. However, it has the disadvantage that the access manager 44 does not know what is the state of synchronization of each of the storage units 38 it manages.

Cela est pénalisant car il existe de nombreux cas dans lesquels il est critique que la synchronisation ait été effectuée, notamment afin de préserver la cohérence des données entre les différentes unités de stockage dans le cadre du stockage distribué décrit ici. This is disadvantageous because there are many cases where it is critical that the timing has been made, particularly in order to preserve the consistency of data between the different storage devices in the distributed storage described here.

Pour pallier à cela, des types de requêtes d'accès distincts ont été définis, et portent le nom de barrière . To overcome this, distinct types of access requests have been defined, and bear the barrier name. Les barrières sont un exemple d'opération avec synchronisation forcée. The barriers are a sample operation with forced synchronization.

Les barrières sont émises au niveau applicatif, et comprennent deux opérations. The barriers are issued at the application level and include two operations. La première opération vise à assurer que toutes unités de stockage concernées par la deuxième opération sont bien synchronisées avant l'exécution de celle-ci. The first operation is to ensure that all storage devices involved in the second operation are synchronized before executing it.

L'exécution d'une barrière implique donc une première requête de synchronisation, suivie d'une deuxième requête qui est la requête que l'on souhaite effectivement réaliser. Running a barrier implies a first synchronization request, followed by a second query that is the request that we actually want to achieve. En général, les requêtes de synchronisation sont suivies d'une requête d'écriture, mais il peut également arriver qu'elles soient suivies d'une requête de lecture. In general, the synchronization requests are followed by a write request, but it can also happen that they are followed by a read request.

La transformation de la requête de barrière de type logique en deux requêtes de type physiques est réalisée par le virtualiseur 36. Ainsi, lorsque celui-ci reçoit en entrée une requête de type barrière, il stocke dans sa file d'attente les deux requêtes comme décrit ci-dessus. Transforming the request logic type of barrier in two physical type of query is performed by the virtualizer 36. Thus, when the latter receives at its input a barrier type of request, it stores in its queue both queries as described above.

Classiquement, les requêtes de synchronisation qui sont envoyées aux unités de stockage ne sont pas distinctives, et synchronisent entièrement les espaces de stockage volatile 38b et permanent 38a des unités de stockage qui les reçoivent. Conventionally, the synchronization requests that are sent to the storage units are not distinctive, and fully synchronize volatile storage areas 38b and 38a permanent storage units that receive them.

Dans le cadre du stockage distribué décrit ici, cela peut être une source de pertes de performance conséquente. Under the distributed storage described herein, this can be a source of significant performance losses. En effet, chaque unité de stockage 38 reçoit des données qui correspondent à des adresses virtuelles appartenant à des volumes logiques distincts. Indeed, each storage unit 38 receives data corresponding to virtual addresses belonging to distinct logical volumes.

Ainsi, les différents accès qui vont avoir pour résultat de solliciter l'espace de stockage volatile 38b ont de grandes chances de concerner des adresses virtuelles de volumes logiques distincts. Thus, different access that will result to seek 38b-volatile storage are likely to relate virtual addresses of separate logical volumes.

Lorsque les opérations de synchronisation forcée portent sur l'ensemble de l'espace de stockage volatile, il est donc très courant que cette opération porte sur de nombreuses adresses de stockage pour lesquelles cette synchronisation n'est pas nécessaire. When forced synchronization operations cover all of the volatile storage space, so it is very common that this operation involves many storage addresses for which this synchronization is not necessary.

Il est même courant que cette synchronisation ait pour résultat l'écriture dans l'espace de stockage persistant 38a de données qui correspondent exclusivement à des adresses virtuelles qui appartiennent à un volume logique pour lequel cette synchronisation n'est pas nécessaire. It is even aware that this synchronization may be found in the writing 38a persistent data storage space that exclusively correspond to virtual addresses belonging to a logical volume for which the synchronization is not necessary.

Dans ce cas, la synchronisation est non seulement inutile, mais également génératrice de 15 baisse de performance, car cette synchronisation fait perdre un temps précieux avant le traitement de la requête de la deuxième opération de la barrière. In this case, the synchronization is not only unnecessary, but also generates 15 performance drop because this synchronization wastes valuable time before the processing of the request from the second operation of the barrier.

Comme on va le voir avec les figures 7 et 8, l'invention propose de réaliser le gestionnaire d'accès 44 de sorte que ces problèmes sont évités, soit en exécutant les 20 requêtes de synchronisation très rapidement, soit en les évitant dans certains cas. As will be seen with Figures 7 and 8, the invention proposes to realize the access manager 44 so that these problems are avoided, either by running the 20 synchronization requests very rapidly, ie avoiding in some cases .

Du côté serveur, l'opération d'exécution de la requête physique 60 peut être mise en oeuvre par le gestionnaire d'accès 44 conformément au procédé représenté sur la figure 7. La requête qui doit être transmise par le gestionnaire d'accès 44 client est reçue par le gestionnaire d'accès 44 serveur dans une opération 70, et dans une opération 72, le type de cette requête est vérifié pour voir s'il correspond à une requête de synchronisation. On the server side, the operation of executing the physical query 60 can be implemented by the access manager 44 according to the method shown in Figure 7. The request to be transmitted by the access manager 44 client is received by the access manager server 44 in an operation 70, and in an operation 72, the type of the request is checked to see if it corresponds to a synchronization request.

30 On notera incidemment que c'est forcément le cas pour la première requête d'une requête de type barrière. 30 Incidentally, it is necessarily the case for the first request of a barrier type of query. 25 Comme on l'a mentionné plus haut, il est possible que le cache de l'unité de stockage 38 visée comprenne effectivement des données, mais que ces données soient associées à des adresses virtuelles qui n'appartiennent pas à l'espace logique sur lequel la requête en cours est exécutée. 25 As mentioned above, it is possible that the cache storage unit 38 referred actually understand the data, but these data are associated with virtual addresses that do not belong to the logical space wherein the current request is executed. Si la requête n'est pas de type synchronisation, alors elle est envoyée et exécutée par l'unité de stockage 38 dans une opération 74. If the request is not synchronization type, then it is sent to and executed by the storage unit 38 in an operation 74.

A réception de l'accusé d'exécution de l'opération 74, une table d'écriture est mise à 10 jour dans une opération 76. Cette table et cette opération seront décrites plus avant plus bas. A receipt of the acknowledgment of execution of the operation 74, a writing table is set for 10 days in an operation 76. This table and this operation will be described further below.

Ensuite, l'accusé d'exécution de cette requête peut être renvoyé dans une opération 78, ce qui déclenche l'envoi d'un accusé d'exécution au gestionnaire d'accès 44 client qui a 15 envoyé cette requête. Then the accused to this query may be returned in an operation 78, which triggers the sending of an acknowledgment of execution in Access Manager client 44 15 sent the request.

Si la requête est une requête de synchronisation, alors dans une opération 80, une fonction WriTbl_StO qui prend la requête de l'opération 70 comme argument détermine s'il est possible d'éviter cette synchronisation. If the request is a synchronization request, then in an operation 80, a WriTbl_StO function that takes the query operation 70 as an argument determines whether it is possible to avoid this synchronization. Afin de décrire la fonction WriTbl_St() et l'opération 76 ainsi que la table d'écriture suggérée, il convient de déterminer quel type d'informations permettent de prendre cette décision. To describe the WriTbl_St () function and the operation 76 and the writing table suggested, it should determine what type of information is used to make this decision.

25 Comme on l'a vu plus haut, il est possible d'éviter une synchronisation d'une unité de stockage 38 lorsque les données de son espace de stockage volatile 38b comprennent des données qui sont associées à un volume logique distinct de celui de la requête de l'opération 70. 25 As discussed above, it is possible to avoid a synchronization of a storage unit 38 when the data from its volatile storage 38b comprise data that are associated with a separate logical volume from that of the query operation 70.

30 Dès lors, afin d'éviter d'avoir à synchroniser toutes les données de l'espace de stockage volatile 38b, le gestionnaire d'accès 44 est agencé pour maintenir la table d'écriture mentionnée plus haut. 30 Therefore, in order to avoid having to synchronize all data in the volatile storage space 38b, the access manager 44 is arranged to hold the writing table mentioned above. 20 Cette table d'écriture peut être mise en oeuvre de plusieurs manières, et elle est maintenue à jour par l'opération 76 et sa pendante, l'opération 84 non encore décrite. 20 This write table may be implemented in several ways, and is kept updated by the operation 76 and pending, the operation 84 not yet described.

D'une manière générale, la table d'écriture va représenter une sorte de mémoire à court terme des opérations d'écriture qui ont récemment été faites sur les unités de stockage 38 gérée par le gestionnaire d'accès 44. In general, the writing table will represent a kind of short-term memory write operations that have recently been made of the storage units 38 managed by the access manager 44.

Ainsi, chaque entrée de la table d'écriture associe d'une part une plage d'adresses virtuelles, et d'autre part une plage d'adresses de stockage qui lui correspond sur les unités de stockage qui sont gérées par le gestionnaire d'accès 44. Thus, each entry of the writing table associates one hand, a virtual address range, and secondly a storage address range which corresponds to it on the storage units which are managed by the manager of 44 access.

On notera qu'il y aura autant d'entrées que de couples plages d'adresses de stockage-plage d'adresses virtuelles. Note that there will be as many entries as couples beaches storage-range of virtual addresses addresses.

Dans l'exemple décrit ici, la table d'écriture est une table à double index, c'est-à-dire que chaque entrée est désignée par deux indices distincts. In the example described here, the writing table is a table double index, that is to say that each entry is denoted by two separate indices. Ainsi, le premier indice concerne la plage d'adresses de stockage, et le deuxième indice concerne la plage d'adresses virtuelles. Thus, the first index concerns the range of storage addresses, and the second indication relates to the range of virtual addresses.

Pour atteindre une entrée de la table d'écriture, il est donc nécessaire de disposer à la fois d'une adresse de stockage et de l'adresse virtuelle associée. To achieve an entry from the writing table, so it is necessary to have both a storage address and the associated virtual address. Cela est prévu comme décrit plus haut avec la figure 6. This is provided as described above with Figure 6.

Dans chaque entrée, la valeur `l' (un) indique qu'une écriture a été réalisée depuis la dernière opération de synchronisation pour cette plage d'adresses virtuelles, et pour la plage d'adresses de stockage correspondante, tandis que la valeur `0' (zéro) indique le contraire. In each entry, the value `the (one) indicates that writing has been performed since the last synchronization operation for this virtual address range, and for the corresponding storage address range, while the value` 0 '(zero) indicates otherwise.

Ainsi, considérons une requête de synchronisation pour une adresse de stockage donnée et une adresse virtuelle associée. Thus, consider a synchronization request for a given storage address and an associated virtual address.

Alors, si l'entrée de la table d'écriture pour la plage d'adresses de stockage à laquelle appartient l'adresse de stockage donnée et pour la plage d'adresses virtuelles à laquelle appartient l'adresse virtuelle associée contient la valeur `0', cela signifie qu'il n'y a pas lieu de faire cette synchronisation. So if the entrance to the writing table for the range of storage addresses that owns the storage address given and the virtual address range to which belongs the associated virtual address contains the value `0 'it means that there is no place to do this synchronization.

Dans ce cas, l'opération 80 se poursuit comme précédemment avec l'opération 78. On voit donc que dans ce cas, la requête de synchronisation est réduite à sa plus simple expression, c'est-à-dire que l'accusé d'exécution est immédiatement envoyé, ce qui économise un temps de traitement considérable qui aurait correspondu au temps nécessaire à la synchronisation (superflue) de l'espace de stockage volatile 38b. In this case, the operation 80 continues as before with the operation 78. This shows that in this case, the synchronization request is reduced to its simplest expression, that is to say that the accused execution is immediately sent, saving significant processing time which would have been the time required for synchronization (unnecessary) of the volatile storage 38b.

Dans le cas contraire, l'opération 80 est suivie par une synchronisation dans une opération 82. La synchronisation de l'opération 82 peut varier en fonction de la portée des plages d'adresses virtuelles et des plages d'adresses de stockage considérés pour la table d'écriture. Otherwise, operation 80 is followed by a synchronization in an operation 82. The synchronization of the operation 82 may vary depending on the scope of virtual address ranges and storage address ranges considered for writing table.

En faisant varier le nombre d'entrées de cette table, on définit la granularité de l'analyse de besoin de synchronisation, mais avec un coût de stockage et de traitement en conséquence. By varying the number of entries in this table, we define the granularity of analysis need for synchronization, but with a cost of storage and processing accordingly. Une mise en oeuvre simple et efficace est de prévoir une entrée pour chaque volume logique ayant une adresse de stockage associée sur les unités de stockage gérées par le gestionnaire d'accès 44. A simple and efficient implementation is to provide an entry for each logical volume having a storage address associated on the storage units managed by the access manager 44.

25 Ainsi, à une entrée correspond une plage d'adresses virtuelles composée du volume logique en entier, et une plage d'adresses de stockage qui correspond à une unité de stockage 38 entière. 25 Thus, an entry corresponds to a range consisting of the logical volume full virtual address, and a storage address range which corresponds to an 38 entire storage unit.

Dans ce cas, à chaque fois qu'une écriture est réalisée pour un volume logique donné 30 sur une unité de stockage donnée, la prochaine requête de synchronisation portant sur une adresse virtuelle de ce volume logique sera forcément exécutée.20 Ce mode de réalisation est avantageux car il est très simple et léger à mettre en oeuvre, tout en offrant un gain de performances important. In this case, each time a write is performed to a logical volume over a given 30 storage unit, the next synchronization request on a virtual address of the logical volume will inevitably exécutée.20 This embodiment is advantageous because it is very light and simple to implement, while providing a significant performance boost.

Une mise en oeuvre un peu plus évoluée consisterait à augmenter le nombre d'entrées de 5 la table d'écriture, par exemple en créant plusieurs entrées pour chaque volume logique associé à une unité de stockage donnée. An implementation somewhat more evolved would be to increase the number of entries of the write table 5, for example by creating multiple entries for each logical volume associated with a given storage unit.

En effet, pour réaliser le stockage, il est possible de regrouper les adresses de stockage sur les unités de stockage 38 en plage de taille fixe, par exemple par plage de 1 Go, de 10 sorte que ces adresses de stockage restent associées à des adresses virtuelles d'un seul et même volume logique. Indeed, to achieve the storage, it is possible to group the storage addresses of the storage units 38 in fixed-size range, for example range from 1 GB, 10 so that these storage addresses are associated with locations virtual a single logical volume.

Dès lors, si l'on prévoit une entrée pour chacune de ces plages d'adresses de stockage, la synchronisation après une écriture n'aura lieu que si cette synchronisation vise une 15 adresse virtuelle pour le volume logique pour lequel cette écriture a été réalisée, et seulement pour les adresses de stockages regroupées. Therefore, if one provides an entry for each address range storage, the timing after a write will not occur if this synchronization is a 15 virtual address for the logical volume for which this writing was conducted and only for the combined storage addresses.

Dans ce cas, on voit qu'il devient intéressant de remplacer les requêtes Synchronize_Cache, qui provoquent la synchronisation de l'espace de stockage volatile 20 et de la mémoire persistante, par Synchronize_Cache(LBA, Count) qui permettent de synchroniser des plages d'adresses uniquement au lieu de l'ensemble de l'espace de stockage volatile 38b. In this case, we see that it becomes advantageous to replace the Synchronize_Cache requests that cause the synchronization of the volatile storage 20 and the persistent memory, for Synchronize_Cache (LBA, Count) for synchronizing the beaches of addresses only instead of the entire volatile storage 38b.

Une fois la synchronisation effectuée, l'opération 84, qui est identique à l'opération 76 25 vient mettre à jour la table d'écriture. Once synchronized, the operation 84, which is identical to operation 76 25 comes to update the writing table.

La fonction Upd_WriTblO, qui prend la requête de l'opération 70 comme argument, est la fonction qui va permettre de maintenir la table d'écriture. The Upd_WriTblO function, which takes the request of the operation 70 as an argument is the function that will allow to maintain the writing table.

30 Cette fonction met en oeuvre les principes suivants : après une requête de synchronisation, toutes les entrées de la table d'écriture qui ont été synchronisées avec l'espace de stockage persistent sont remises à `0' (zéro). 30 This function implements the following principles: after a synchronization request, all entries of the write table that were synchronized with the persistent storage are set to `0 '(zero).

Cela signifie que toutes les entrées sont remises à `0' (zéro) après une requête Synchronize_Cache, et seulement celles concernées par les adresses visées après une requête Synchronize_Cache(LBA, Count) ; This means that all inputs are set to `0 '(zero) after a request Synchronize_Cache, and only those concerned with the targeted addresses after a Synchronize_Cache request (LBA, Count); après une requête d'écriture, toutes les entrées de la table d'écriture qui ont vu une opération d'écriture dans l'espace de stockage volatile sont mises à `1' (un) si elles étaient à `0' (zéro), et maintenues à `1' (un) dans le cas contraire ; after a write request, all entries of the write table saw a write operation in the volatile storage area are set to `1 '(one) if they were to` 0' (zero) , and maintained at `1 '(one) in the opposite case; et - après une requête de lecture, aucune modification n'est faite. and - after a read request, no changes are made.

Ensuite, ce procédé se termine avec l'opération 78 comme précédemment. Then, this process is ended with the operation 78 as before. Avec la figure 8, on a représenté un procédé similaire à celui de la figure 7, mais qui est cette fois mis en oeuvre du côté du gestionnaire d'accès 44 qui agit comme client, c'est-à-dire celui qui émet la requête d'accès. With Figure 8, there is shown a method similar to that of Figure 7 but this time is implemented on the side of the access manager 44 which acts as a client, that is to say the one which emits access request.

15 Ce procédé diffère de celui représenté sur la figure 7 en ce qu'il permet d'éviter l'émission de requêtes de synchronisation dans certains cas. 15 This method differs from that shown in Figure 7 in that it avoids the emission of synchronization requests in some cases.

En effet, comme il est mis en oeuvre par le gestionnaire d'accès 44 client, c'est-à-dire avant que la requête de synchronisation soit transmise au gestionnaire d'accès 44 20 serveur qui gère l'accès aux unités de stockage 38 concernées par cette requête, il est possible d'éviter la transmission de cette requête. Indeed, as it is implemented by the access manager 44 client, that is to say before the synchronization request is transmitted to the access manager 44 server 20 which manages access to storage 38 concerned by this request, it is possible to prevent the transmission of this request.

Cela assure des gains encore plus importants car le coût réseau associé à l'envoi de la requête et le retour de son accusé sont économisés par rapport au procédé de la figure 7. Ainsi les opérations 90 à 104 correspondent aux opérations 70 à 84, à cela prêt qu'elles sont réalisées par le gestionnaire d'accès 44 client, par exemple juste avant l'envoi de la requête reçue à l'opération 70. This ensures even greater gains because the network cost associated with sending the request and return the accused are saved compared to the process of Figure 7. Thus the operations 90 to 104 correspond to the operations 70 to 84 in this loan they are performed by the access manager 44 client, for example just before sending the request received in step 70.

30 Les seules différences sont que les opérations 94 et 96 et 102 et 104 sont exécutées dans un ordre inversé par rapport à leurs équivalentes 74 et 76 et 82 et 84. 25 Cela est dû au fait que le procédé décrit avec la figure 7 est situé côté serveur, et qu'il est préférable de mettre à jour la table d'écriture une fois que les opérations ont effectivement été réalisées, c'est-à-dire à complétion, alors que le procédé décrit avec la figure 8 est situé côté client, ce qui rend préférable de mettre à jour la table d'écriture dès l'envoi de la requête, c'est-à-dire à réception. 30 The only differences are that the operations 94 and 96 and 102 and 104 are performed in reverse order compared to their equivalent 74 and 76 and 82 and 25 84. This is due to the fact that the method described with Fig 7 is located server side, and it is preferable to update the writing table once the operations were actually carried out, that is to say to completion, while the method described with FIG 8 is located side customer, making it preferable to update the writing table from sending the request, that is to say at reception.

Il serait néanmoins possible d'exécuter le procédé de la figure 7 à réception, et celui de la figure 8 à complétion. It would nevertheless be possible to perform the method of Figure 7 at reception, and that of Figure 8 on completion.

En outre, les opérations 74 et 82 sont des requêtes d'exécution, c'est-à-dire qu'elles déclenchent directement une exécution par l'unité de stockage 38 concernée, alors que les opérations 96 et 104 sont des opérations d'envoi de requête au gestionnaire d'accès 44 serveur. In addition, operations 74 and 82 are of the execution requests, that is to say they directly trigger execution by the storage unit 38 concerned, whereas the operations 96 and 104 are operations of sending request to the access manager server 44.

Comme on l'a vu, les opérations 94 et 102 portent sur une table d'écriture dont les valeurs reflètent l'état d'écriture des plages d'adresses de stockage et des plages d'adresses virtuelles. As we have seen, the 94 and 102 operations cover a writing table whose values ​​reflect the write state of the storage address ranges and virtual address ranges. Cette table d'écriture est bien sûre distincte de celle décrite avec la figure 7. This writing table is of course different from that described with Figure 7.

Les tables d'écritures des figures 7 et 8 peuvent toutes deux être stockées dans une mémoire persistante ou volatile. The entries of tables 7 and 8 can both be stored in persistent or volatile memory. Dans la pratique, comme elles représentent une mémoire à court terme des opérations d'écritures qui ont été récemment réalisées, il est préféré de les stocker dans la mémoire volatile associée au module d'administration 46. In practice, as they represent a short-term memory write operations that have been conducted recently, it is preferred to store in volatile memory associated with the administration module 46.

La figure 9 représente un traitement qui est mis en oeuvre par le noyau du système d'exploitation pour gérer les différents types de protocoles physiques des unités de stockage 38. Ce traitement est mis en oeuvre directement après l'opération 74. 9 shows processing which is implemented by the operating system kernel to manage the different types of protocols physical storage units 38. This treatment is carried out directly after the operation 74.

En effet, bien que le mode de réalisation décrit ici soit principalement prévu pour être mis en oeuvre avec des ressources communiquant selon le protocole SCSI, il est possible que les unités de stockage 38 fonctionnent selon un autre protocole, par exemple du type SATA ou PATA, plus généralement ATA. Indeed, although the embodiment described herein is primarily intended to be used with according to the SCSI protocol communicating resources, it is possible that the storage units 38 operate according to a different protocol, e.g., SATA or PATA more generally ATA.

Dans une première opération 110, le système d'exploitation reçoit et adapte une requête d'accès physique Req en fonction de l'unité de stockage 38 sur laquelle elle porte. In a first operation 110, the operating system receives and adjusts a physical access request Req according to the storage unit 38 to which it relates.

Dans ce cas, il est nécessaire que les requêtes, originellement SCSI, soient traduites pour être interprétées correctement par les unités de stockage. In this case, it is necessary that applications originally SCSI, are brought to be interpreted correctly by the storage units. Pour cela, dans une opération 112, le système d'exploitation teste si l'unité de stockage 38 cible met en oeuvre le protocole SCSI, au moyen d'une fonction TgtSCSIQ. For this, in an operation 112, the operating system checks if the target storage unit 38 implements the SCSI protocol, by means of a TgtSCSIQ function.

La fonction TgtSCSI() prend la requête Req comme argument, et renvoie une valeur qui indique si l'unité de stockage que vise la requête Req met en oeuvre le protocole SCSI. The TgtSCSI () function takes the request Req as an argument and returns a value that indicates whether the storage unit is that the request Req implements the SCSI protocol.

Cette information peut être présente dans la requête Req comme information complémentaire, ou le système d'exploitation peut comprendre une table qui indique les protocoles mis en oeuvre par les unités de stockage. This information may be present in the request Req as additional information, or the operating system may comprise a table which indicates the protocols implemented by the storage units. D'autres implémentations restent possibles. Other implementations are possible.

Si l'unité de stockage 38 met en oeuvre le protocole SCSI, alors la requête Req lui est transmise dans une opération 114. La requête Req est considérée comme exécutée lorsque le gestionnaire d'accès 44 reçoit un accusé de l'unité de stockage 38 concernée dans une opération 116. If the storage unit 38 implements the SCSI protocol, then the request Req it is transmitted in an operation 114. The request Req is considered to be performed when the access manager 44 receives an acknowledgment of the storage unit 38 involved in an operation 116.

Ensuite, le gestionnaire d'accès 44 peut lui-même envoyer un accusé d'exécution au gestionnaire d'accès 44 qui l'a sollicité pour cette requête, et ainsi de suite jusqu'à ce que la couche applicative reçoive l'accusé qui indique que toutes les requêtes d'accès physique associées à la requête d'accès virtuel ont été exécutées. Then, the access manager 44 may itself send an acknowledgment of execution access manager 44 which has requested for this query, and so on until the application layer receives the accused indicates that all physical access requests associated with virtual access request were executed.

Pour interpréter la requête Req, une fonction Adapt() est appelée avec la requête Req comme argument dans une opération 118, et retourne une requête Regl. To interpret the request Req, a Adapt () function is called with the request Req as an argument in an operation 118, and returns a query Regl. La fonction Adapt() ici est basée sur les correspondances suivantes. The ADAPT () function here is based on the following correspondences. Dans l'exemple décrit ici, cette distinction porte principalement sur les requêtes SCSI suivantes :30 - Synchronize_Cache, qui provoque la synchronisation de l'espace de stockage volatile et de la mémoire persistente ; In the example described here, this distinction focuses on the following SCSI requests: 30 - Synchronize_Cache, which causes the timing of the volatile storage space and the persistent memory; - WriteFUA, qui impose une écriture sur l'espace de stockage mémoire persistent avant de renvoyer l'accusé d'exécution ; - WriteFUA, which requires a write to the memory storage space persist before returning the acknowledgment of execution; et - Read FUA, qui impose une écriture sur l'espace de stockage mémoire persistent de données lues à partir de l'espace de stockage volatile avant de renvoyer l'accusé d'exécution. and - Read FUA, which requires a write to the memory storage space persist data read from the volatile storage before returning the acknowledgment execution.

Dans le protocole SATA, la requête Synchronize_Cache a pour équivalent la requête 10 Flush_Cache, et les requêtes Write_FUA (respectivement Read_FUA) doivent être traduites par deux requêtes successives Write (respectivement Read) et Flush_Cache. In the SATA protocol, the Synchronize_Cache request for an equivalent query flush_cache 10, and Write_FUA requests (Read_FUA respectively) must be translated by two successive requests Write (Read respectively) and flush_cache.

Ainsi, lorsque le gestionnaire d'accès 44 reçoit une requête de type barrière, elle est composée d'une requête de type Synchronize_Cache suivie d'une requête de type 15 Write_FUA ou Read_FUA. Thus, when the access manager 44 receives a barrier type of application, it is composed of a Synchronize_Cache query type followed by a query type 15 or Write_FUA Read_FUA. Une fois traduite pour le protocole SATA, cette barrière devient une requête Flush_Cache, suivie d'une requête Write (ou Read le cas échéant), suivie d'une autre requête Flush_Cache. Once translated for the SATA protocol, this barrier becomes a flush_cache request, followed by an application Write (or Read if any), followed by another request flush_cache.

On notera bien que l'exécution successive de ces requêtes nécessite à chaque fois la 20 réception d'un accusé d'exécution de la part de l'unité de stockage 38 pour passer à l'étape suivante. It will be noted that the successive execution of these requests requires in each case the 20 receiving an acknowledgment of execution from the storage unit 38 to move to the next step.

Dans le cas de la barrière d'écriture traduite en protocole SATA, cela donne les échanges suivants : 25 - le gestionnaire d'accès envoie la requête Flush_Cache() à l'unité de stockage 38 visée ; In the case of the write barrier translated SATA protocol, this gives the following exchange: 25 - the access manager sends the flush_cache () request to the storage unit 38 referred; - l'unité de stockage visée renvoie un accusé d'exécution de Flush_Cache() ; - the storage unit referred returns an execution acknowledgment flush_cache (); - le gestionnaire d'accès envoie la Write( à l'unité de stockage 38 visée ; - l'unité de stockage visée renvoie un accusé d'exécution de WriteO ; 30 - le gestionnaire d'accès envoie la requête Flush_Cache() à l'unité de stockage 38 visée ; et l'unité de stockage visée renvoie un accusé d'exécution de Flush_Cache(). - the access manager sends the Write (referred to 38 storage unit - the storage unit referred returns an execution acknowledgment WriteO; 30 - the access manager sends the flush_cache () request to the storage unit 38 described, and the intended storage unit returns an execution acknowledgment flush_cache ().

Ce n'est qu'après ce dernier accusé d'exécution que l'opération 76 peut être exécutée. It was only after the latter accused of executing the operation 76 can be executed.

Dans d'autres modes de réalisation, d'autres protocoles que le SATA peuvent être mis en oeuvre, et la fonction Adapt() est modifiée en conséquence. In other embodiments, other protocols that the SATA can be implemented, and Adapt () function is modified accordingly. Ensuite, dans une opération 120, la requête Regl est envoyée à l'unité de stockage 38, et l'exécution de la requête Req se prolonge avec l'opération 116. Then, in an operation 120, the Regl request is sent to the storage unit 38, and the execution of the request Req continues with operation 116.

Bien que les figures 7, 8 et 9 aient été décrites en rapport avec un même mode de 10 réalisation, il est manifeste qu'elles pourraient être mises en oeuvre séparément. Although Figures 7, 8 and 9 have been described in connection with the same mode of 10 embodiment, it is obvious that they could be implemented separately.

En outre, les requêtes de synchronisation sont décrites ici comme le résultat de requêtes issues de la couche d'application. In addition, the synchronization requests are described herein as the result of queries from the application layer. Cependant, les gestionnaires d'accès pourraient être mis en oeuvre avec des ordonnanceurs propres. However, access managers could be implemented with own schedulers. Par ailleurs, les mises à jour des tables d'écriture pourraient également être réalisées à réception de la requête pour le cas du gestionnaire d'accès serveur, ou à complétion de la requête pour le cas du gestionnaire d'accès client, ou entre ces deux évènements. Moreover, the day writing tables updates could also be made to receiving the request for the case of server access manager, or completion of the request for the case of the Client Access Manager, or between two events.

20 Dans le cas où les gestionnaires d'accès traitent des requêtes en parallèle, ils comporteront des mécanismes appropriés pour la gestion de concurrence de sorte que les tables d'écriture restent cohérentes. 20 If the access managers dealing with parallel query, they will include appropriate mechanisms for the management of competition so that the writing tables remain consistent.

Ces ordonnanceurs pourraient notamment contrôler à intervalles réguliers les tables 25 d'écritures, et provoquer des synchronisations lors de moments favorables, par exemple lorsque la file d'attente des requêtes est vide, ce qui permettrait d'obtenir des augmentations de performances encore supérieures. These could include schedulers monitor periodically the tables of 25 entries, and cause timings during favorable times, such as when the requests queue is empty, which would provide even greater performance increases.

En outre l'invention concerne également un procédé de gestion de données, applicable 30 dans un réseau comprenant plusieurs stations de stockage de données, comportant les étapes suivantes : 15 a. Furthermore the invention also relates to a data management method, applicable in a network 30 comprising a plurality of data storage stations, comprising the steps of: 15 a. émettre une requête de fichier depuis une station, sur la base d'une représentation sous forme d'adresses virtuelles, lesdites adresses virtuelles étant associées par groupe à des adresses de stockage données pour stocker les données de stockage correspondantes, b. transmitting a file request from a station, based on a representation in the form of virtual addresses, said virtual addresses being associated with group data storage addresses for storing the corresponding data storage, b. sur la base de ladite association par groupe d'adresses, déterminer une adresse de stockage correspondant à ladite adresse virtuelle, ainsi que l'unité de stockage sur laquelle est située cette adresse, on the basis of said combination by address group, determining a storage address corresponding to said virtual address, and the storage unit on which that address is located,

c. c. émettre une requête d'accès désignant ladite adresse de stockage vers un gestionnaire 10 d'accès de la station émettrice de la requête, transmitting an access request designating said storage address to a 10 access manager of the transmitting station of the request,

d. d. exécuter cette requête d'accès par accès avec synchronisation sélective à un stockage volatile et/ou à un stockage persistent de certaines au moins des unités de stockage du gestionnaire d'accès de l'unité de stockage déterminée, en fonction d'un état d'écriture 15 de certaines des adresses virtuelles associées aux adresses de stockage de ces unités de stockage. perform this access by access request with selective synchronization to a volatile storage and / or to a persistent storage at least some of the storage units of the access handler of the specified storage unit, depending on a state of writing 15 some virtual addresses associated with storage addresses these storage units. 25 25

Claims (9)

  1. Revendications1. Revendications1. Outil informatique de stockage de données dans un réseau de stations, chaque station comprenant une ou plusieurs unités de stockage (38) dont certaines au moins comportent des adresses de stockage propres à recevoir des données de stockage, l'outil étant implanté sur chaque station et comprenant d'une part un virtualiseur (36) associant des adresses virtuelles et des adresses de stockage, et d'autre part un gestionnaire d'accès (44) aux adresses de stockage de cette station, agencé pour communiquer avec les gestionnaires d'accès d'autres stations pour exécuter une requête par accès à un stockage volatile (38b) et/ou à un stockage persistent (38a) des unités de stockage de ces stations, caractérisé en ce que chaque gestionnaire d'accès (44) est agencé pour synchroniser sélectivement le stockage volatile (38b) et le stockage persistent (38a) de certaines au moins des unités de stockage (38) dont il gère l'accès, en fonction d'un état d'écriture de certaines des Software tool data storage in a network of stations, each station comprising one or more storage units (38) some of which at least comprise an own storage addresses to receive storage data, the tool being located on each station and comprising firstly a virtualizer (36) associating virtual addresses and storage addresses, and on the other hand an access manager (44) to storage the station addresses, arranged to communicate with the access managers other stations to execute a query by access to a volatile storage (38b) and / or a persistent storage (38a) of the storage units for these stations, characterized in that each access manager (44) is arranged to selectively synchronize the volatile storage (38b) and the persistent storage (38a) of at least some of the storage units (38) which manages the access, according to a write state of some of the adresses virtuelles associées aux adresses de stockage de ces unités de stockage (38). Virtual addresses associated with storage addresses of the storage units (38).
  2. 2. Outil informatique selon la revendication 1, dans lequel chaque gestionnaire d'accès maintient une table d'écriture respective dont les entrées sont chacune associées d'une part à une plage d'adresses de stockage sur une unité de stockage, et d'autre part à une plage d'adresses virtuelles qui sont associées aux adresses de stockage de cette plage, la valeur de chaque entrée indiquant un état d'écriture pour la plage d'adresses de stockage et la plage d'adresses virtuelles associées à cette entrée. 2. Software tool according to claim 1, wherein each access manager maintains a respective writing table whose inputs are each associated on the one hand to a range of storage addresses of a storage unit, and secondly to a range of virtual addresses that are associated with this range of storage addresses, the value of each entry indicating a write state for the storage of address range and the virtual address range associated with the input .
  3. 3. Outil informatique selon la revendication 2, dans lequel la table d'écriture porte sur des unités de stockage gérées par le gestionnaire d'accès qui la maintient. 3. Software tool according to claim 2, wherein the writing table relates to storage units managed by the access manager which maintains.
  4. 4. Outil informatique selon la revendication 2 ou 3, dans lequel chaque gestionnaire d'accès est agencé, à complétion d'une requête d'accès d'écriture dans une adresse de stockage donnée, pour définir l'entrée de la table d'écritureassociée à cette adresse et à l'adresse virtuelle correspondante avec une valeur indiquant qu'une opération d'écriture a été exécutée. 4. Software tool according to claim 2 or 3, wherein each access manager is arranged to completion of a write access request in a given storage address, to set the table entry of écritureassociée to this address and the corresponding virtual address with a value indicating that a write operation was performed.
  5. 5. Outil informatique selon la revendication 2 ou 3, dans lequel chaque gestionnaire d'accès est agencé, à réception d'une requête d'accès d'écriture dans une adresse de stockage donnée, pour définir l'entrée de la table d'écriture associée à cette adresse et à l'adresse virtuelle correspondante avec une valeur indiquant qu'une opération d'écriture a été exécutée. 5. Software tool according to claim 2 or 3, wherein each access manager is arranged upon receipt of a write access request in a given storage address, to set the table entry of writing associated with this address and the corresponding virtual address with a value indicating that a write operation was performed.
  6. 6. Outil informatique selon l'une des revendications 2 à 5, dans lequel chaque gestionnaire d'accès est agencé, à réception d'une requête d'accès de synchronisation désignant une adresse virtuelle et une adresse de stockage sur une unité de stockage, pour synchroniser le stockage volatile et le stockage persistent de l'unité de stockage désignée, pour la plage d'adresses de stockage dont la valeur de l'entrée dans la table d'écriture associée à cette plage et à la plage d'adresses virtuelles désignée par la requête d'accès de synchronisation indique qu'une opération d'écriture a été enregistrée. 6. Software tool according to one of Claims 2 to 5, wherein each access manager is arranged upon receipt of a synchronization access request designating a virtual address and a storage address of a storage unit, to synchronize the volatile storage and the persistent storage of the designated storage unit for the storage of address range including the value of the entry in the write table associated with that range, and the virtual address range designated by the synchronizing access request indicates that a write operation has been recorded.
  7. 7. Outil informatique selon l'une des revendications précédentes, dans lequel les gestionnaires d'accès communiquent entre eux selon un paradigme client-serveur. 7. Software tool according to one of the preceding claims, wherein the access managers communicate with each other according to a client-server paradigm.
  8. 8. Outil informatique selon la revendication 7, dans lequel chaque gestionnaire d'accès comprend une unité dite cliente pour envoyer une requête d'accès à un gestionnaire d'accès d'une autre station, et une unité dite serveur pour recevoir une requête de ce type et pour gérer en conséquence l'accès aux unités de stockage concernées. 8. Software tool according to claim 7, wherein each access manager comprises a said client unit to send an access request to an access manager of another station, and said server unit for receiving a query this type and to manage accordingly access to the relevant storage units.
  9. 9. Outil informatique selon l'une des revendications précédentes, dans lequel le gestionnaire d'accès comprend un ordonnanceur agencé pour générer des requêtes de synchronisation. 9. Software tool according to one of the preceding claims, wherein the access manager comprises a scheduler arranged to generate synchronization requests.
FR0902056A 2009-04-28 2009-04-28 storage system comprising multiple network nodes with Writing synchronization management Pending FR2944893A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0902056A FR2944893A1 (en) 2009-04-28 2009-04-28 storage system comprising multiple network nodes with Writing synchronization management

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0902056A FR2944893A1 (en) 2009-04-28 2009-04-28 storage system comprising multiple network nodes with Writing synchronization management
PCT/FR2010/000334 WO2010125257A1 (en) 2009-04-28 2010-04-28 Storage system including a plurality of nodes in a network with write synchronisation management

Publications (1)

Publication Number Publication Date
FR2944893A1 true FR2944893A1 (en) 2010-10-29

Family

ID=41227213

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0902056A Pending FR2944893A1 (en) 2009-04-28 2009-04-28 storage system comprising multiple network nodes with Writing synchronization management

Country Status (2)

Country Link
FR (1) FR2944893A1 (en)
WO (1) WO2010125257A1 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572660A (en) * 1993-10-27 1996-11-05 Dell Usa, L.P. System and method for selective write-back caching within a disk array subsystem
WO2002001366A2 (en) * 2000-06-28 2002-01-03 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
US6745294B1 (en) * 2001-06-08 2004-06-01 Hewlett-Packard Development Company, L.P. Multi-processor computer system with lock driven cache-flushing system
US20050065907A1 (en) * 1998-11-24 2005-03-24 Oracle Corporation Managing checkpoint queues in a multiple node system
US6874065B1 (en) * 1999-02-26 2005-03-29 Hewlett-Packard Development Company, L.P. Cache-flushing engine for distributed shared memory multi-processor computer systems
US20050182906A1 (en) * 2004-02-18 2005-08-18 Paresh Chatterjee Systems and methods for cache synchronization between redundant storage controllers

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572660A (en) * 1993-10-27 1996-11-05 Dell Usa, L.P. System and method for selective write-back caching within a disk array subsystem
US20050065907A1 (en) * 1998-11-24 2005-03-24 Oracle Corporation Managing checkpoint queues in a multiple node system
US6874065B1 (en) * 1999-02-26 2005-03-29 Hewlett-Packard Development Company, L.P. Cache-flushing engine for distributed shared memory multi-processor computer systems
WO2002001366A2 (en) * 2000-06-28 2002-01-03 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
US6745294B1 (en) * 2001-06-08 2004-06-01 Hewlett-Packard Development Company, L.P. Multi-processor computer system with lock driven cache-flushing system
US20050182906A1 (en) * 2004-02-18 2005-08-18 Paresh Chatterjee Systems and methods for cache synchronization between redundant storage controllers

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"SELECTIVE WRITE BACK CACHE REPLACEMENT STRATEGY" IBM TECHNICAL DISCLOSURE BULLETIN, US,, vol. 37, no. 6A, 1 juin 1994 (1994-06-01), page 199/200, XP000455742 ISSN: 0018-8689 *

Also Published As

Publication number Publication date
WO2010125257A1 (en) 2010-11-04

Similar Documents

Publication Publication Date Title
Karger et al. Consistent hashing and random trees: Distributed caching protocols for relieving hot spots on the world wide web
Lakshman et al. Cassandra: a decentralized structured storage system
US9167036B2 (en) Managed object replication and delivery
US8266237B2 (en) Systems and methods for providing distributed, decentralized data storage and retrieval
US8151347B2 (en) Clustered file system for mix of trusted and untrusted nodes
EP1866788B1 (en) Stream control failover
US7272613B2 (en) Method and system for managing distributed content and related metadata
US7143170B2 (en) Automatic migration of data via a distributed computer network
US9880753B2 (en) Write requests in a distributed storage system
Peng et al. VDN: Virtual machine image distribution network for cloud data centers
US9606874B2 (en) Multi-class heterogeneous clients in a clustered filesystem
Schütt et al. Scalaris: reliable transactional p2p key/value store
Pucha et al. Exploiting Similarity for Multi-Source Downloads Using File Handprints.
US7870230B2 (en) Policy-based cluster quorum determination
CA2811437C (en) Distributed storage system with duplicate elimination
US9684453B2 (en) Cluster federation and trust in a cloud environment
US20090077327A1 (en) Method and apparatus for enabling a NAS system to utilize thin provisioning
EP2317450A1 (en) Method and apparatus for distributed data management in a switching network
Aspnes et al. Skip graphs
Hasan et al. A survey of peer-to-peer storage techniques for distributed file systems
KR101217389B1 (en) The synchronization server process
US7076553B2 (en) Method and apparatus for real-time parallel delivery of segments of a large payload file
US8533231B2 (en) Cloud storage system with distributed metadata
US20170208124A1 (en) Higher efficiency storage replication using compression
US8880650B2 (en) System and method for storing streaming media file