[go: up one dir, main page]

FR2922335A1 - IMPROVED COMPUTER SYSTEM COMPRISING MULTIPLE NETWORK NODES. - Google Patents

IMPROVED COMPUTER SYSTEM COMPRISING MULTIPLE NETWORK NODES. Download PDF

Info

Publication number
FR2922335A1
FR2922335A1 FR0707189A FR0707189A FR2922335A1 FR 2922335 A1 FR2922335 A1 FR 2922335A1 FR 0707189 A FR0707189 A FR 0707189A FR 0707189 A FR0707189 A FR 0707189A FR 2922335 A1 FR2922335 A1 FR 2922335A1
Authority
FR
France
Prior art keywords
storage
addresses
function
correspondence
data
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.)
Withdrawn
Application number
FR0707189A
Other languages
French (fr)
Inventor
Michael Dussere
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 SA
Original Assignee
SEANODES SA
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 SA filed Critical SEANODES SA
Priority to FR0707189A priority Critical patent/FR2922335A1/en
Priority to PCT/FR2008/001088 priority patent/WO2009047397A2/en
Priority to PCT/FR2008/001089 priority patent/WO2009047398A2/en
Priority to EP08837674A priority patent/EP2212791A2/en
Priority to EP08841064A priority patent/EP2212792A1/en
Priority to PCT/FR2008/001168 priority patent/WO2009053557A1/en
Publication of FR2922335A1 publication Critical patent/FR2922335A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2061Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring combined with de-clustering of data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

Outil informatique de stockage de données comprenant un module de correspondance (40) relié à des unités de stockage, ledit module de correspondance (40) comprenant une fonction de correspondance (404) pour déterminer au moins deux adresses de stockage pour recevoir des données associées à une adresse virtuelle reçue en entrée (402), caractérisé en ce que, dans la fonction de correspondance :* au moins une partie des unités de stockage sont réparties logiquement sur la base d'un critère de dépendance de panne, et* au moins une partie des adresses virtuelles sont affectées par blocs à des adresses de stockage selon une règle choisie, ladite règle comportant une formule arithmétique tenant compte dudit critère de dépendance.A data storage computer tool comprising a correspondence module (40) connected to storage units, said correspondence module (40) including a mapping function (404) for determining at least two storage addresses for receiving data associated with a virtual address received at the input (402), characterized in that, in the correspondence function: * at least a part of the storage units are logically distributed on the basis of a fault dependency criterion, and * at least one part of the virtual addresses are allocated in blocks to storage addresses according to a chosen rule, said rule comprising an arithmetic formula taking into account said dependency criterion.

Description

SEANODES3.FRD 1 Système informatique amélioré comprenant plusieurs noeuds en réseau L'invention concerne les systèmes informatiques comprenant plusieurs postes informatiques dits noeuds interconnectés en un réseau. 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. The invention relates to computer systems comprising a plurality of computer stations known as nodes interconnected in a network. Modern networks include user stations that are connected to one or more servers and can share applications and / or storage spaces locally or remotely.

10 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 shared applications that use a large amount of data or share a large amount of data, specialized storage systems, such as the Storage Area Network, are often used. (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. The use of these advanced systems has certain disadvantages, such as the associated costs, the limitations of performance and extensibility, and the overall heaviness of the installation that corresponds to them.

Par ailleurs, avec les réseaux modernes, l'utilisation de ces systèmes 20 perfectionnés représente une sous utilisation du matériel déjà présent dans le réseau. Moreover, with modern networks, the use of these advanced systems represents an underutilization of the hardware 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 25 gestion des pannes. Finally, the systems that have been proposed that use the hardware already present in the network have unsatisfactory performance, especially in terms of fault management.

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

À cet effet, l'invention propose un outil informatique de stockage de données 30 comprenant un module de correspondance relié à des unités de stockage, ledit module de correspondance comprenant une fonction de correspondance pour5 déterminer au moins deux adresses de stockage pour recevoir des données associées à une adresse virtuelle reçue en entrée. To this end, the invention proposes a computer data storage tool 30 comprising a correspondence module connected to storage units, said correspondence module comprising a correspondence function for determining at least two storage addresses to receive associated data. to a virtual address received as input.

Selon un aspect particulier, dans la fonction de correspondance : * au moins une partie des unités de stockage sont réparties logiquement sur la base d'un critère de dépendance de panne, et According to a particular aspect, in the correspondence function: at least a part of the storage units are logically distributed on the basis of a fault dependence criterion, and

* au moins une partie des adresses virtuelles sont affectées par blocs à des adresses de stockage selon une règle choisie, ladite règle comportant une 10 formule arithmétique tenant compte dudit critère de dépendance. at least a portion of the virtual addresses are allocated in blocks to storage addresses according to a chosen rule, said rule comprising an arithmetic formula taking into account said dependency criterion.

L'invention concerne également un outil informatique de stockage de données comprenant un module de correspondance relié à des unités de stockage, ledit module de correspondance comprenant une fonction de correspondance pour 15 déterminer au moins deux adresses de stockage pour recevoir des données associées à une adresse virtuelle reçue en entrée. The invention also relates to a computer data storage tool comprising a correspondence module connected to storage units, said correspondence module comprising a correspondence function for determining at least two storage addresses for receiving data associated with an address. received as input.

Selon un aspect particulier, dans la fonction de correspondance : * au moins une partie des adresses physiques sont réparties logiquement en un 20 groupe de travail et en groupes de panne, sur la base d'un critère de tolérance de panne, * au moins une partie des adresses virtuelles sont affectées par blocs à des adresses de stockage d'unités de stockage selon une règle choisie, * ladite règle comportant une première formule arithmétique en affectant au 25 moins une partie des adresses virtuelles à des adresses de stockage appartenant à des groupes de travail, et * ladite règle comportant une deuxième formule arithmétique opérante en présence d'une panne pour affecter au moins une partie des adresses virtuelles concernées à des adresses de stockage appartenant à un groupe de panne en 30 fonction de cette panne. According to a particular aspect, in the correspondence function: at least a part of the physical addresses are logically distributed into a workgroup and into fault groups, on the basis of a fault tolerance criterion, at least one part of the virtual addresses are allocated in blocks to storage unit storage addresses according to a chosen rule, * said rule having a first arithmetic formula by assigning at least a portion of the virtual addresses to storage addresses belonging to groups and said rule comprising a second operative arithmetic formula in the presence of a failure to assign at least a portion of the virtual addresses concerned to storage addresses belonging to a fault group in accordance with that failure.

L'invention concerne également un outil informatique de stockage de données comprenant un module de correspondance relié à des unités de stockage, ledit module de correspondance étant agencé pour déterminer une correspondance entre des adresses virtuelles et des adresses physiques sur les unités de stockage, chaque adresse virtuelle étant affectée à au moins au moins deux adresses de stockage The invention also relates to a computer data storage tool comprising a correspondence module connected to storage units, said correspondence module being arranged to determine a correspondence between virtual addresses and physical addresses on the storage units, each address virtual address assigned to at least two storage addresses

Selon un aspect particulier, le module de correspondance maintient une première table comprenant des données d'identification de panne d'unité de stockage, ainsi qu'une deuxième table comprenant des données de modification de zones logiques désignant chacune au moins une adresse virtuelle. According to a particular aspect, the correspondence module maintains a first table comprising storage unit failure identification data, as well as a second table comprising logical zone modification data each designating at least one virtual address.

Selon un autre aspect particulier, l'outil informatique comprend en outre une unité de recouvrement agencée pour mettre à jour les données d'une unité de stockage tombée en panne en appelant le module de correspondance avec des adresses virtuelles tirées de la deuxième table, sur la base des données de la première table. According to another particular aspect, the computer tool further comprises a recovery unit arranged to update the data of a storage unit that has failed by calling the correspondence module with virtual addresses drawn from the second table, on the database of the first table.

D'autres avantages et caractéristiques de l'invention apparaîtront mieux à la lecture de la description qui suit d'exemples, donnée à titre illustratif et non limitatif, à partir des dessins sur lesquels : Other advantages and features of the invention will appear better on reading the following description of examples, given by way of illustration and without limitation, from the drawings in which:

- la figure 1 montre une vue fonctionnelle générale d'un système informatique 25 selon l'invention, FIG. 1 shows a general functional view of a computer system according to the invention,

- la figure 2 montre un exemple d'implémentation logique du système de la figure 1, 30 - la figure 3 montre un exemple de composition d'un élément de la figure 2, - la figure 4 montre un procédé d'accès à un fichier dans le système de la figure 1, - la figure 5 montre un exemple d'implémentation d'un élément de la figure 3, - la figure 6 montre une correspondance entre des espaces logiques et des espaces physiques gérée par l'élément de la figure 5, - la figure 7 montre un exemple d'une fonction mise en oeuvre par l'élément de 10 la figure 5 pour établir la correspondance de la figure 6, - la figure 8 montre un exemple d'implémentation d'une partie de la figure 7, - les figures 9 et 10 montrent des exemples de fonctions s'exécutant en parallèle avec la fonction de la figure 7, - la figure 11 montre une attribution des espaces logiques sur les espaces physiques en variante de la correspondance représentée sur la figure 6, FIG. 2 shows an example of a logical implementation of the system of FIG. 1; FIG. 3 shows an exemplary composition of an element of FIG. 2; FIG. 4 shows a method of accessing a file. in the system of FIG. 1, FIG. 5 shows an exemplary implementation of an element of FIG. 3, FIG. 6 shows a correspondence between logical spaces and physical spaces managed by the element of FIG. 5, - Figure 7 shows an example of a function implemented by the element of Figure 5 to establish the correspondence of Figure 6, - Figure 8 shows an example of implementation of part of the FIG. 9, - FIGS. 9 and 10 show examples of functions executing in parallel with the function of FIG. 7; FIG. 11 shows an allocation of the logical spaces on the physical spaces as a variant of the correspondence represented in FIG. 6

- la figure 12 montre une variante de la fonction de la figure 8 adaptée pour tenir 20 compte de l'attribution de la figure 11, FIG. 12 shows a variant of the function of FIG. 8 adapted to take account of the allocation of FIG. 11,

- la figure 13 montre un exemple d'implémentation d'une partie de la figure 12, FIG. 13 shows an exemplary implementation of a part of FIG. 12,

- la figure 14 montre un exemple d'une fonction s'exécutant en parallèle avec la 25 fonction de la figure 7, et FIG. 14 shows an example of a function running in parallel with the function of FIG. 7, and

- la figure 15 montre une variante des figures 8 et 12 qui met en oeuvre à la fois l'attribution représentée sur la figure 6 et celle représentée sur la figure 11. FIG. 15 shows a variant of FIGS. 8 and 12 which implements both the allocation represented in FIG. 6 and that shown in FIG. 11.

30 Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux 15 faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. The drawings and the description below contain, for the most part, elements of a certain character. They will thus be able not only to serve to better understand the present invention, but also to contribute to its definition, if necessary.

La figure 1 représente un schéma général d'un système informatique selon l'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. FIG. 1 represents a general diagram of a computer system according to the invention. 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 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. FIG. 2 represents a logical implementation of the system of FIG. 1. In this implementation, a set of stations 10, also referred to herein as nodes, are interconnected in a network of 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 on the N1, N2 and N3, in one application layer 14 on the N4 and an application layer 16 on 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 station or station used here should be interpreted broadly, and as designating network computing elements on which applications or server programs run, 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 NI, 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 NI, N2 and N3 and defines all the files accessible from the distributed application layer 12. The file systems 20 and 22 respectively define the set of 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 The files designated by the file systems 18, 20 and 22 are stored in a virtual storage space 24 which is distributed over all the Ni

6 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. 6 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 accessible from the distributed application layer 12 by means of the distributed file system 18, and the private logical spaces 28 and 30 to the space accessible from the application layers 14 and 16 by means of the file systems 20 and 22.

L'espace logique 26 est réparti sur les NI, N2 et N3, l'espace logique privé 28 10 sur les N3 et N4, et l'espace logique privé 30 sur le N5. The logical space 26 is distributed over the N1, N2 and N3, the private logical space 28 on the N3 and N4, and the private logical space 30 on the 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 15 pas forcément 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 these They are not necessarily physically present on one of the storage disks of the station 10 which 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. Les 20 espaces logiques 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. Furthermore, the spaces 26, 28 and 30 are purely logical, that is, they do not directly represent physical storage spaces. Logical spaces are mapped using virtual addresses that are referenced or contained in 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. Le module de correspondance contient une table 25 de correspondance 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. To access the data of these files, it is necessary to use a correspondence module. The correspondence module contains a table 25 of correspondence between the virtual addresses of the data in the logical spaces and physical addresses which designate the physical storage spaces in which these data are actually stored.

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

7 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. Cette multifonctionnalité permet d'utiliser l'espace libre sur l'ensemble des stations du réseau, plutôt que laisser cet espace inoccupé. 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. As can be seen in the example presented, each station is used for both the application layer and the storage layer. This multifunctionality makes it possible to use the free space on all the stations of the network, rather than leaving this space unoccupied. In the context of the invention, it would however be possible to specialize some of the stations, and create a node dedicated to storage or a node dedicated to applications.

10 Cela signifie que, dans le cadre de l'invention, toute station peut jouer un rôle de noeud 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 play an application node role, a storage node role, or both of these roles at the same time.

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

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

La figure 3 représente un exemple d'architecture d'une station 10 de la figure 2. La station représentée dans cet exemple peut représenter l'une des stations NI, N2 ou N3. 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 la forme d'une mémoire locale à accès direct. 30 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 25 8 client de stockage 44 et un serveur de stockage 46. Les rôles et les fonctionnements de ces éléments seront précisés plus bas. FIG. 3 represents an exemplary architecture of a station 10 of FIG. 2. The station represented in this example can represent one of the stations NI, N2 or N3. Station Nx individually has a structure similar to that of the global structure shown in Figure 1. It thus comprises an application layer 32, a file system 34, a virtualization layer 36 and a storage space 38 in the form of a local memory with direct access. The virtualization layer 36 includes a motor 40 and a look-up table 42. Direct access to the storage space 38 is managed by a storage client 44 and a storage server 46. Roles and operations of these elements will be specified below.

L'exemple décrit ici représente un mode de réalisation perfectionné de 5 l'invention, dans lequel toutes les ressources, tant applicatives que de stockage, sont réparties sur le réseau. The example described here represents an improved embodiment of the invention, in which all the resources, both application and storage, are distributed over the network.

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 10 à celui-ci implique la communication avec d'autres noeuds du réseau qui contiennent les données recherchées. This means, for example, that the file system 34 is not entirely present on this station, but distributed over several of them, and that access to it implies communication with other nodes of the network which contain the desired data.

Il en est de même pour la couche de virtualisation 36, le client de stockage 44 et le serveur de stockage 46. La répartition de ces éléments est gérée au 15 moyen d'un module d'administration 48. It is the same for the virtualization layer 36, the storage client 44 and the storage server 46. The distribution of these elements is managed by means of a management module 48.

Pour la suite de la description, il importe peu que les ressources considérées soient réparties ou pas. For the rest of the description, it does not matter whether the resources in question are distributed or not.

20 Le module d'administration 48 est principalement utilisé lors de la création et de la mise à jour des espaces logiques. Lors de la création ou de la modification d'un espace logique, le module d'administration 48 appelle la couche de virtualisation 36 pour créer la table de correspondance entre chaque adresse virtuelle de l'espace logique et une adresse physique sur un noeud de stockage 25 donné. The administration module 48 is mainly used when creating and updating logical spaces. When creating or modifying a logical space, the administration module 48 calls the virtualization layer 36 to create the correspondence table between each virtual address of the logical space and a physical address on a storage node Given.

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ée au niveau du système de fichiers qui exploite cet espace logique, les 30 données "physiques" étant 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 correspondences between a file accessible by this file system and the virtual addresses of the data that make up this file are made at the level of the file system that exploits this logical space, the "physical" data being stored at the physical addresses associated with it. the correspondence table to the virtual addresses, according to the mapping established during the creation of the logical space.

9 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. Les 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. This means that, as soon as a logical space is created by the administration module, the correspondences between the virtual addresses and the physical addresses are established. The virtual addresses appear "empty" to the file system accessing 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 de ces données est établi que les adresses physiques sont 10 remplies. It is when the link between the data of the files of this space and the virtual addresses of these data is established that the physical addresses are filled.

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. Lorsqu'une application fait appel à un espace mémoire 15 donné, le moteur 40 interagit avec la table 42 pour établir l'adresse physique correspondante. In the embodiment described here, the look-up table 42 is a table that contains information for retrieving matches. When an application uses a given memory space 15, the motor 40 interacts with the table 42 to establish the corresponding physical address.

Comme cela apparaîtra mieux par la suite, la table de correspondance 42 ne contient pas la totalité des correspondances, mais seulement un jeu 20 d'informations nettement plus restreint, suffisant à rétablir extrêmement rapidement la correspondance. As will become clearer later, the lookup table 42 does not contain all the matches, but only a much narrower set of information sufficient to quickly restore the match.

Afin de mieux comprendre l'invention, il convient de bien différencier la couche applicative de la couche de stockage. En effet, la gestion de l'accès aux 25 données stockées dans la couche de stockage est une approche qui présente de nombreux avantages par rapport à l'existant. In order to better understand the invention, it is necessary to differentiate the application layer from the storage layer. Indeed, the management of access to the data stored in the storage layer is an approach that has many advantages over the existing one.

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

10 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 fichier, The access to a file by an application of the application layer of a given node is initialized by a file access request 50. The file access request 50 comprises: an identifier of the file concerned for the file system and an address in this file,

- la taille de la requête, c'est-à-dire le nombre de bits à accéder à la suite de l'adresse du fichier visé, et 10 - le type de requête, à savoir la lecture ou l'écriture. the size of the request, that is to say the number of bits to be accessed following the address of the targeted file, and the type of request, namely the reading or writing.

Dans une étape 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. 15 Les requêtes d'accès virtuel comportent chacune : In a step 52, the file system determines one or more virtual addresses for the data of this file, and generates one or more virtual access requests based on the request 50 and these virtual addresses. The virtual access requests each include:

- l'adresse virtuelle visée, - the targeted virtual address,

20 - la taille de la requête, c'est-à-dire le nombre de bits à accéder à la suite de l'adresse virtuelle visée, et The size of the request, that is to say the number of bits to be accessed following the targeted virtual address, and

- le type de requête, qui est identique à celui de la requête 50. - the type of request, which is identical to that of the request 50.

25 Si l'on se rapporte au système décrit sur la figure 2, l'étape 52 consiste à déterminer l'espace 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 "virtuelles". Referring to the system depicted in FIG. 2, step 52 is to determine the logical space and the virtual address (es) on this space designated by the request 50, and to produce one or more virtual requests. ".

30 II existe une différence de niveau entre les requêtes d'accès fichiers et les requêtes d'accès virtuel. 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. There is a difference in level between the file access requests and the virtual access requests. Indeed, a file access request will target the content of a large quantity of virtual addresses, to enable the content of a file to be reconstructed, whereas a virtual request targets the contents of a data block. associated with this address.

La ou les requêtes d'accès virtuel obtenues sont alors transmises à la couche 5 de virtualisation, qui détermine la ou les adresses physiques et les espaces de stockage correspondants dans une étape 54. The virtual access request (s) obtained is then transmitted to the virtualization layer 5, which determines the physical address (es) and the corresponding storage spaces in a step 54.

Pour déterminer les adresses physiques, la couche de virtualisation opère en utilisant le moteur 40 et la table de correspondance 42. Dans le cadre d'une requête d'accès en lecture, le fichier recherché existe déjà dans un espace de stockage 38, et le moteur 40 appelle la table de correspondance 42 avec la ou les adresses virtuelles pour déterminer par correspondance la ou les adresses physiques des données du fichier. 15 Dans le cadre d'une requête d'accès en écriture, le fichier n'existe pas forcément de manière préalable dans un espace de stockage 38. 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 20 manière que dans le cadre d'une requête en lecture pour déterminer la ou les adresses physiques des données. To determine the physical addresses, the virtualization layer operates using the engine 40 and the look-up table 42. In the context of a read access request, the searched file already exists in a storage space 38, and the Engine 40 calls the correspondence table 42 with the virtual address (es) to determine by correspondence the physical address (es) of the data of the file. In the context of a write access request, the file does not necessarily exist beforehand in a storage space 38. Nevertheless, as we have seen above, the correspondences between virtual addresses and physical addresses are fixed, and the motor 40 therefore operates in the same way as in the context of a read request to determine the physical address or addresses of the data.

Dans tous les cas, une fois que le moteur 40 a déterminé les adresses physiques, il génère dans une étape 56 des requêtes d'accès physique qu'il 25 transmet au client de stockage 44. In any case, once the engine 40 has determined the physical addresses, it generates in a step 56 physical access requests that it transmits to the storage client 44.

Dans l'étape 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'étape 54. In step 56, the physical access requests are generated based on the request 50 and the physical address (es) determined in step 54.

30 Ces requêtes comportent : - l'adresse physique visée ; 10 - 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 ; et - le type d'action visée, à savoir la lecture ou l'écriture. L'adresse physique et la taille de la requête sont obtenues directement de l'étape 54, et le type de la requête est hérité du type de la requête d'accès virtuel concernée. These requests include: - the intended physical address; The size of the request, that is to say the number of bits to be accessed following the physical address targeted by the request; and - the type of action targeted, namely reading or writing. The physical address and the size of the request are obtained directly from step 54, and the type of the request is inherited from the type of the virtual access request concerned.

10 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 client de stockage 44 pour toutes les adresses physiques obtenues à l'étape 52. A loop is then initiated in which a stopping condition 58 is reached when a physical access request has been issued to the storage client 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 15 requête du client de stockage 44 pour exécution dans une étape 60. Le client de stockage 44 peut optionnellement comporter plusieurs files d'attente, par exemple une file d'attente par serveur de stockage 46 avec lequel il interagit. In fact, each physical access request is placed in a request queue of the storage client 44 for execution in a step 60. The storage client 44 may optionally include several queues, for example a queue. by storage server 46 with which it interacts.

Dans cette boucle, toutes les requêtes d'accès physique de l'étape 56 sont 20 représentées comme exécutées successivement pour des raisons de simplicité. Cependant, l'exécution peut également être réalisée en parallèle, et pas seulement en série. In this loop, all physical access requests in step 56 are represented as successively performed for simplicity. However, the execution can also be performed in parallel, and not only in series.

Dans l'exemple décrit, des requêtes sont transmises de couche en couche, 25 jusqu'à la couche d'accès physique. Il serait cependant possible de déterminer et de transmettre uniquement des adresses (virtuelles puis physiques), et de récupérer, au niveau de la couche physique, des propriétés choisies de la requête de fichier initiale pour former les requêtes d'accès physique. In the example described, requests are transmitted from layer to layer, up to the physical access layer. However, it would be possible to determine and transmit only addresses (virtual and physical), and to recover, at the physical layer level, selected properties of the initial file request to form the physical access requests.

30 Pour l'exécution d'une requête d'accès physique donnée, le client de stockage 44 interagit avec le serveur de stockage 46 de la station de stockage qui5 13 contient l'espace de stockage 38 sur lequel est située l'adresse physique désignée par la requête d'accès physique concernée. For the execution of a given physical access request, the storage client 44 interacts with the storage server 46 of the storage station that contains the storage space 38 on which the designated physical address is located. by the physical access request concerned.

La figure 5 représente un exemple de réalisation de la couche de virtualisation 5 36 de la figure 3. FIG. 5 represents an exemplary embodiment of the virtualization layer 36 of FIG. 3.

Le moteur 40 comporte une file d'attente 402, une unité de détermination d'adresse 404 et une unité de réparation/recouvrement 406. The engine 40 includes a queue 402, an address determination unit 404 and a repair / overlay unit 406.

10 La file d'attente 402 reçoit toutes les requêtes d'accès virtuel pour la détermination des adresses physiques correspondantes. La détermination des adresses physiques est réalisée par l'unité de détermination d'adresse 404, en collaboration avec la table de correspondance 42. The queue 402 receives all the virtual access requests for the determination of the corresponding physical addresses. The determination of the physical addresses is carried out by the address determination unit 404, in collaboration with the correspondence table 42.

15 Dans l'exemple décrit ici, la table de correspondance 42 ne contient qu'un jeu extrêmement restreint de données qui seront décrites par la suite. En effet, l'invention propose plusieurs schémas d'attribution d'espaces virtuels aux espaces physiques. Ces attributions permettent de déterminer rapidement et à moindre coût les correspondances adresse virtuelle / adresse physique sur la 20 base d'algorithmes légers tout en offrant une qualité de service élevée. Cela est beaucoup plus performant en termes d'occupation processeur et mémoire que l'utilisation d'une table de correspondance directe telle une "look-up table" (en anglais). In the example described here, the look-up table 42 contains only an extremely limited set of data which will be described later. Indeed, the invention proposes several schemes for assigning virtual spaces to physical spaces. These assignments make it possible to quickly and inexpensively determine virtual address / physical address matches on the basis of lightweight algorithms while offering a high quality of service. This is much more efficient in terms of processor and memory occupation than the use of a direct look-up table such as a "look-up table" (in English).

25 L'unité de réparation/recouvrement 406 a pour fonction la mise à jour de certaines adresses physiques lorsqu'un espace de stockage d'une station donnée a cessé de fonctionner, comme cela sera décrit plus bas. The purpose of the repair / overlay unit 406 is to update certain physical addresses when a storage space of a given station has ceased to function, as will be described below.

La figure 6 illustre un premier schéma d'attribution d'espaces virtuels aux 30 espaces physiques de manière à tolérer des pannes dites corrélées. Par panne corrélée, on entend une panne qui rend inopérant un ensemble d'espaces ou Figure 6 illustrates a first scheme for assigning virtual spaces to the physical spaces so as to tolerate so-called correlated failures. Correlated failure means a failure that renders inoperative a set of spaces or

14 unités de stockage (ci-après disques) reliés entre eux (ci-après groupe de défaillance). 14 storage units (hereinafter disks) interconnected (hereinafter failure group).

Dans d'autres modes de réalisation, on peut regrouper les disques par groupe de défaillance sur la base d'un critère de dépendance de panne. Un tel critère de dépendance de panne vise à rassembler entre eux des disques pour lesquels la probabilité d'une panne simultanée est importante, de manière à s'assurer que les données de ces disques ne sont pas répliquées sur l'un d'entre eux. In other embodiments, the disks can be grouped by failure group on the basis of a fault dependency criterion. Such a fault dependence criterion aims to bring together disks for which the probability of a simultaneous failure is important, so as to ensure that the data of these disks are not replicated on one of them. .

Comme exemple de critère de dépendance de panne, on peut citer l'appartenance à une même station-noeud, tant d'un point de vue matériel que logiciel, la liaison à un même noeud de réseau, tant d'un point de vue matériel que logiciel, la proximité de situation géographique, etc. As an example of a fault dependence criterion, mention may be made of the fact that the same node-node, both from a hardware and software point of view, is connected to the same network node, from a material point of view that software, the proximity of geographical location, etc.

Pour prévenir de telles pannes, l'attribution d'espace virtuels aux espaces physiques est réalisée de sorte que : - les données d'une adresse virtuelle sont stockées sur des disques qui appartiennent à des groupes de défaillance distincts ; et - les données d'adresses virtuelles consécutives sont rassemblées dans des hachures qui s'étendent sur tous les disques. To prevent such failures, the allocation of virtual space to the physical spaces is carried out so that: - the data of a virtual address is stored on disks that belong to distinct fault groups; and - the consecutive virtual address data is gathered into hatches that extend over all the disks.

Ainsi, sur l'exemple représenté, on part de quatre noeuds N1 à N4. Le noeud N1 comporte ici trois disques MU11, MU12 et MU13, le noeud N2 trois disques MU21, MU22 et MU23, le noeud N3 un disque MU31, et le noeud N4 trois disques MU41, MU42 et MU43. Thus, in the example shown, we start from four nodes N1 to N4. The node N1 here comprises three disks MU11, MU12 and MU13, the node N2 three disks MU21, MU22 and MU23, the node N3 a disk MU31, and the node N4 three disks MU41, MU42 and MU43.

Dans l'exemple décrit ici, chaque noeud forme un groupe de défaillance, c'est-à-dire que, en termes de panne, on considère que les disques d'un noeud dépendent de celui-ci, mais que les disques de noeuds distincts sont indépendants les uns des autres. In the example described here, each node forms a failure group, that is, in terms of failure, it is considered that the disks of a node depend on it, but that the disks of nodes distinct are independent of each other.

15 Le groupe de défaillance N1 est donc composé des disques MU11 à MU13, le groupe de défaillance N2 est composé des disques MU21 à MU23, le groupe de défaillance N3 est composé du disque MU31, et le groupe de défaillance N4 est composé des disques MU41 à MU43. Dans d'autres modes de réalisation, on pourrait définir les groupes de défaillances de manière différente, par exemple par appartenance à une unité de réseau. Il est donc important de comprendre que les disques sont d'abord regroupés par groupe de défaillance et non seulement par noeud. 10 Dans un premier temps, l'attribution représentée sur la figure 6 part des groupes de défaillances pour définir des groupes de réplication qui permettent une duplication sûre des données. The failure group N1 thus consists of the disks MU11 to MU13, the failure group N2 is composed of the disks MU21 to MU23, the failure group N3 is composed of the disk MU31, and the failure group N4 is composed of the disks MU41. at MU43. In other embodiments, the groups of failures could be defined differently, for example by belonging to a network unit. It is therefore important to understand that disks are first grouped by failure group and not only by node. Initially, the assignment shown in Fig. 6 starts from failure groups to define replication groups that allow secure duplication of data.

15 L'affectation des disques des groupes de défaillance à un groupe de réplication suit un algorithme d'attribution qui met en oeuvre les contraintes décrites plus haut. Assigning the disks of the failure groups to a replication group follows an allocation algorithm that implements the constraints described above.

Pour tenir compte de la première contrainte, il est nécessaire qu'il y ait au 20 moins autant de groupe de réplication qu'il y a de disques dans le groupe de défaillance qui a le plus grand nombre de disques, conformément à l'équation 10 de l'Annexe A. To account for the first constraint, there must be at least as many replication groups as there are disks in the failure group that has the largest number of disks, according to the equation 10 of Annex A.

Ensuite, afin d'effectuer une répartition la plus souple possible en termes de 25 charge, on fixe le nombre de disques par groupe de réplication selon l'équation 11 de l'Annexe A. Enfin, les disques sont attribués individuellement dans chaque groupe de réplication selon [équation 12 de l'Annexe A. Then, in order to achieve the most flexible distribution in terms of load, the number of disks per replication group is fixed according to equation 11 of Appendix A. Finally, the disks are assigned individually in each group of replication according to [equation 12 of Annex A.

Ainsi, dans l'exemple de la figure 6, le groupe de réplication GR1 comprend 30 quatre disques qui correspondent respectivement aux disques MU11, MU21, MU31 et MU43, et les autres disques MU12 et MU13 du groupe de défaillance N1 sont respectivement affectés aux groupes GR2 et GR3.5 Thus, in the example of FIG. 6, the replication group GR1 comprises four disks which respectively correspond to the disks MU11, MU21, MU31 and MU43, and the other disks MU12 and MU13 of the failure group N1 are assigned respectively to the groups GR2 and GR3.5

16 D'autres algorithmes d'attribution des disques sont possibles, comme l'homme du métier le reconnaîtra. On notera par exemple que, pour l'attribution des disques aux groupes de réplication, il serait également possible de prendre en compte l'espace disponible sur les disques, de manière à assurer des groupes de réplication de taille homogène. Une autre possibilité serait de prendre en compte leur performance pour obtenir des groupes de réplication de performance homogène. Other disk assignment algorithms are possible, as those skilled in the art will recognize. It will be noted for example that, for the allocation of disks to the replication groups, it would also be possible to take into account the space available on the disks, so as to ensure replication groups of uniform size. Another possibility would be to take into account their performance to obtain homogeneous performance replication groups.

Cela pourrait par exemple être réalisé : * lors de l'attribution des disques aux groupes de réplication, en compliquant l'algorithme, ou * après l'attribution décrite plus haut, en effectuant des échanges de disques entre groupes de réplication. This could for example be done: * when assigning disks to replication groups, by complicating the algorithm, or * after the assignment described above, by performing disk exchanges between replication groups.

Dans un deuxième temps, pour tenir compte de la deuxième contrainte, les adresses virtuelles sont attribuées sur les disques triés par groupe de réplication. Dans chaque disque représenté, chaque numéro qui est représenté signifie l'association d'adresses virtuelles à des adresses physiques. In a second step, to take into account the second constraint, the virtual addresses are assigned on the disks sorted by replication group. In each disk shown, each number that is represented means the association of virtual addresses to physical addresses.

En effet, les adresses virtuelles sont réunies par ordre croissant en unités de hachurage ("striping unit" en anglais) de tailles définies. Les unités de hachurage sont elles même associées avec des adresses physiques sur les disques. Indeed, the virtual addresses are grouped in ascending order in units of hatching ("striping unit" in English) of defined sizes. The hatch units are themselves associated with physical addresses on the disks.

Comme on peut le voir dans la partie supérieure de la figure 6, les unités de hachurage sont affectées sur tous les disques de tous les groupes de réplication par ordre croissant, ligne par ligne. As can be seen in the upper part of Figure 6, the hatch units are assigned to all disks of all replication groups in ascending order, line by line.

Ainsi, la première unité de hachurage du premier disque du premier groupe de 30 réplication reçoit l'indice 0, la première unité de hachurage du deuxième disque du premier groupe de réplication reçoit l'indice 1, etc. Thus, the first hatch unit of the first disk of the first replication group receives the index 0, the first hatch unit of the second disk of the first replication group receives the index 1, and so on.

Une ligne d'unités de hachurage sera par la suite appelée hachure réelle. On remarque également dans la partie supérieure de la figure 6 que, pour une ligne sur deux, les unités de hachurage ne sont pas ordonnées par indice croissant. A line of hatch units will subsequently be called the actual hatch. Note also in the upper part of Figure 6 that for every other line, the hatch units are not ordered by increasing index.

Cela est du au fait que, pour tenir compte de la première contrainte, les données de chaque hachure réelle sont répliquées au sein du groupe de réplication auquel la première version est affectée. De ce fait, on associe des hachures réelles correspondantes par paires pour former à chaque fois une hachure principale. This is because, to account for the first constraint, the data for each real hatch is replicated within the replication group to which the first version is assigned. As a result, corresponding real hatches are combined in pairs to form a main hatch each time.

Pour déterminer l'attribution des unités de hachurage pour la réplication, on utilise une équation qui assure que : * deux répliques d'une même unité de hachurage ne sont pas stockées sur le même disque, et que * le décalage qui est réalisé à cet effet n'est pas constant, de sorte que lorsqu'un disque donné tombe en panne, la charge est répartie sur les autres disques. To determine the allocation of hatch units for replication, we use an equation that ensures that: * two replicates of the same hatch unit are not stored on the same disk, and * the offset that is made to that effect is not constant, so that when a given disk fails, the load is spread over the other disks.

Ainsi, dans l'exemple représenté sur la figure 6, les adresses physiques du 20 disque MU11 de N1 reçoivent les unités de hachurage suivantes : 0, 3, 10, 12, 20, 21, 30, 33, 40 et 42. En outre, dans l'exemple décrit ici, les données sont répliquées sur des hachures réelles directement consécutives au sein de la hachure principale. Dans d'autres modes de réalisation, les données répliquées pourraient l'être 25 dans des hachures réelles non consécutives. Thus, in the example shown in FIG. 6, the physical addresses of the MU11 disk of N1 receive the following hatch units: 0, 3, 10, 12, 20, 21, 30, 33, 40 and 42. in the example described here, the data is replicated to directly consecutive true hatches within the main hatch. In other embodiments, the replicated data could be in non-consecutive real hatches.

Comme on peut le voir de ce qui précède, il suffit donc de connaître le nombre total de disques ainsi que le nombre de groupes de réplication pour déterminer une adresse physique à partir d'une adresse virtuelle. La table de 30 correspondance 42 est donc réduite à sa plus simple expression. On notera par ailleurs que, du fait de la réplication de données mentionnée plus haut, il y a deux fois plus d'adresses physiques que d'adresses virtuelles. As can be seen from the above, it is therefore sufficient to know the total number of disks as well as the number of replication groups to determine a physical address from a virtual address. The correspondence table 42 is thus reduced to its simplest expression. Note also that, because of the data replication mentioned above, there are twice as many physical addresses as virtual addresses.

Dans l'exemple présenté sur la figure 6, ainsi que dans la suite de ce document, on réalise une réplication simple des données, ce qui a pour résultat de doubler la quantité de données stockées. Cependant, il serait possible de réaliser plus de deux répliques des données. La figure 7 montre l'exemple d'une fonction qui permet de retrouver une adresse physique à partir d'une adresse virtuelle. In the example shown in Figure 6, as well as in the remainder of this document, a simple replication of the data is performed, which results in doubling the amount of data stored. However, it would be possible to make more than two replicas of the data. Figure 7 shows the example of a function that allows to find a physical address from a virtual address.

Dans l'exemple décrit ici, cette fonction est implémentée dans l'unité de 10 détermination d'adresse 404. Elle part dans une opération 2000 d'une adresse virtuelle, par exemple tirée de la file d'attente 402. In the example described here, this function is implemented in the address determination unit 404. It starts in an operation 2000 of a virtual address, for example taken from the queue 402.

Dans une opération 2020, un test est réalisé pour déterminer si l'adresse virtuelle est reliée à une requête en écriture. Si c'est le cas, dans une opération 15 2040, un test est réalisé pour déterminer si le système est en état dégradé, c'est-à-dire si l'un des disques est en panne. Si c'est le cas, une fonction Wrt Drt Z() est appelée en 2060. In a 2020 operation, a test is performed to determine if the virtual address is related to a write request. If so, in an operation 2040, a test is performed to determine if the system is in a degraded state, i.e. if one of the disks has failed. If so, a Wrt Drt Z () function is called in 2060.

Les opérations 2040, 2060 et 2080 sont reliées à des fonctions permettant la 20 récupération rapide d'une panne de disque qui sera décrite plus avant avec les figures 9 et 10. The operations 2040, 2060 and 2080 are connected to functions for the rapid recovery of a disk failure which will be described further with FIGS. 9 and 10.

Dans le cas où la requête associée à l'adresse virtuelle est une requête de lecture, ou lorsque l'état du système est non dégradé, ou encore lorsque la 25 fonction Wrt _Drt _Z() s'achève, une fonction SU_Ind() est appelée dans une opération 2070. In the case where the request associated with the virtual address is a read request, or when the state of the system is not degraded, or when the function Wrt _Drt_Z () ends, a function SU_Ind () is called in an operation 2070.

La fonction SU_Ind() part de l'adresse virtuelle dont on cherche la correspondance, et retourne l'indice d'unité de hachurage SU Ind. qui lui est 30 associé. Cela est aisément réalisable comme la taille de chaque unité de hachurage est connue.5 Sur la base de cet indice, une fonction Get Phy_Ind() est appelée dans une opération 2080 qui détermine des indices d'adresses physiques correspondants. The function SU_Ind () starts from the virtual address whose correspondence is sought, and returns the index of the hatch unit SU Ind. which is associated with him. This is readily achievable as the size of each hatching unit is known. On the basis of this index, a Get function Phy_Ind () is called in an operation 2080 which determines corresponding physical address indices.

Enfin, dans une opération 2100, les indices d'adresses physiques sont convertis en adresses physiques par une fonction Phy_Ad(). Cela est aisément réalisable comme la taille de chaque unité de hachurage est connue. Finally, in an operation 2100, the physical address indices are converted into physical addresses by a function Phy_Ad (). This is easily achievable as the size of each hatching unit is known.

La fonction Get_Phy_lnd() va maintenant être décrite avec la figure 8. La fonction Get_Phy_Ind( reçoit les deux arguments suivants (opération 2082) : * l'indice de l'unité de hachurage dont on cherche la correspondance, et * un tableau Ngr[] contenant une ligne dont les valeurs indiquent le nombre de disques pour chaque groupe de réplication. The function Get_Phy_lnd () will now be described with figure 8. The function Get_Phy_Ind (receives the two following arguments (operation 2082): * the index of the unit of hatching of which one seeks the correspondence, and * a table Ngr [ ] containing a row whose values indicate the number of disks for each replication group.

Le tableau Ngr[] est utile car il permet de retrouver rapidement le nombre total de disques N et le nombre de groupe de réplication Ngr, et d'accéder tout aussi rapidement au nombre de disques par groupe de réplication. The table Ngr [] is useful because it allows to quickly find the total number of N disks and the number of Ngr replication group, and to access just as quickly the number of disks by replication group.

Dans une autre implémentation, il est possible de passer directement N et Ngr 20 en tant qu'arguments, mais un calcul est alors nécessaire lorsque l'on a besoin du nombre de disques au sein d'un groupe de réplication donné. In another implementation, it is possible to directly pass N and Ngr 20 as arguments, but a computation is then necessary when one needs the number of disks within a given replication group.

Le rôle de la fonction Get_Phy_Ind( est de retrouver l'indice de l'unité de hachurage dans le tri par groupe de défaillance à partir de son indice dans le tri 25 par groupe de réplication. Dans une première opération 2084, une fonction Strip() détermine un indice de hachure principale k, ainsi que l'indice ml dans les groupes de réplication du premier disque sur lequel l'adresse virtuelle est stockée. Cela est réalisé en appliquant les équations 20 et 21 de l'Annexe A. The function of the function Get_Phy_Ind (is to find the index of the hatch unit in the sorting by failure group from its index in the sorting by replication group.In a first operation 2084, a strip function ( ) determines a main hatch index k, as well as the index ml in the replication groups of the first disk on which the virtual address is stored.This is done by applying Equations 20 and 21 of Appendix A.

30 Dans une opération 2086, une fonction Repl() détermine les indices de hachure réelle k1 et k2 pour tenir compte de la réplication des données. Cela est réalisé en appliquant les équations 22 et 23 de l'Annexe A. In an operation 2086, a function Repl () determines the actual hatch indices k1 and k2 to account for the replication of the data. This is accomplished by applying Equations 22 and 23 of Appendix A.

Dans une opération 2088, une fonction Spl() détermine l'indice p du groupe de réplication qui correspond à l'indice de disque ml, ainsi que l'indice q1 du disque ml au sein de ce groupe de réplication. Cela est réalisé en appliquant les équations 24 et 25 de l'Annexe A. Dans une opération 2090, une fonction Shft() détermine un indice q2 au sein du groupe de réplication d'indice p du disque sur lequel les données répliquées sont stockées. Cela est réalisé en appliquant l'équation 26 de l'Annexe A. In an operation 2088, a function Spl () determines the index p of the replication group that corresponds to the disk index ml, as well as the index q1 of the disk ml within this replication group. This is accomplished by applying Equations 24 and 25 of Appendix A. In an operation 2090, a function Shft () determines an index q2 within the index replication group p of the disk on which the replicated data is stored. This is accomplished by applying Equation 26 of Appendix A.

10 D'autres équations seraient bien évidemment utilisables, comme un simple décalage d'indice d'unité de hachurage. Dans ce cas plus simple, chaque disque au sein d'un groupe de réplication contient toutes les données répliquées d'un autre disque du même groupe. Other equations would obviously be usable, such as a simple shift unit index offset. In this simpler case, each disk within a replication group contains all replicated data from another disk in the same group.

15 Dans une opération 2097, une fonction Mrg() détermine un indice de disque m2 qui correspond à l'indice q2 au sein du groupe de réplication d'indice p. Cela est réalisé en appliquant l'équation 27 de l'Annexe A. Dans une opération 2098, les indices ml et m2 des disques classés par groupe de réplication sont convertis en indices de disques n1 et n2 des disques classés 20 par groupe de défaillance par une fonction Get_Dsk Ind(). Cette fonction réalise l'opération inverse de l'équation 12 et applique les équations 28 et 29 de l'Annexe A. In an operation 2097, a function Mrg () determines a disk index m2 which corresponds to the index q2 within the index replication group p. This is accomplished by applying Equation 27 of Appendix A. In an operation 2098, the indices ml and m2 of disks classified by replication group are converted to disk indices n1 and n2 of disks classified by failure group by a function Get_Dsk Ind (). This function performs the inverse operation of equation 12 and applies equations 28 and 29 of Appendix A.

Enfin, la fonction Get Phy_Ind() retourne les indices adresses physiques 25 déterminées dans une opération 2099. Finally, the Get Phy_Ind () function returns the physical address indices determined in an operation 2099.

Maintenant, la fonction WrtDrtZ() va être décrite en rapport avec les figures 9 et 10. Comme mentionné plus haut, l'invention repose en partie sur la réplication des données en cas de panne. La fonction Wrt Drt ZO ainsi que la 30 fonction décrite avec la figure 9 permettent une réintégration rapide d'un disque après une panne. Cette réintégration est décrite avec la figure 10.5 Now, the function WrtDrtZ () will be described with reference to FIGS. 9 and 10. As mentioned above, the invention relies in part on the replication of data in case of failure. The Wrt Drt ZO function and the function described in FIG. 9 allow a fast reintegration of a disk after a failure. This reinstatement is described with Figure 10.5

21 Le principe de cette réintégration repose sur le marquage des zones virtuelles associées à un disque en panne lors d'une écriture. The principle of this reintegration is based on the marking of the virtual zones associated with a failed disk during a write.

En effet, aussi bien lors d'une requête en lecture que lors d'une absence d'accès, les données stockées ne sont pas modifiées. Dès lors, lorsqu'un disque revient d'une panne, il n'est pas nécessaire de mettre à jour ces données puisqu'elles n'ont pas été modifiées. Indeed, both during a read request and when there is no access, the stored data are not modified. Therefore, when a disk comes back from a failure, it is not necessary to update this data since they have not been modified.

En revanche, s'il y a eu écriture, les données stockées sont potentiellement 10 distinctes, et il faut rétablir la cohérence avec la version des données qui a subi l'écriture. On the other hand, if there has been write, the stored data is potentially distinct, and consistency must be restored with the version of the data that has been written.

Pour cela, deux tables sont maintenues pendant l'exécution. La première table, dite de pannes, contient deux lignes, dont l'une reçoit des identifiants de 15 disques et l'autre reçoit un indice croissant. La deuxième table, dite de zones, contient deux lignes, dont l'une reçoit des identifiants de zones, et l'autre reçoit un indice de modification. For this, two tables are maintained during execution. The first table, called failures, contains two lines, one of which receives identifiers of 15 disks and the other receives a growing index. The second table, called zones, contains two lines, one of which receives zone identifiers, and the other receives a modification index.

Dans l'exemple décrit ici, la table de pannes est stockée sur chacun des 20 disques dans un espace réservé par le module d'administration qui n'est pas utilisable pour le stockage des données. Cette table est maintenue cohérente sur l'ensemble des disques par le module d'administration. Cette table a une taille fixée égale au nombre total de disques. La table de pannes est remplie au moyen de la fonction représentée sur la figure 9. 25 Ainsi, lorsqu'une panne est détectée, par exemple par le module d'administration 48 (opération 2200), cette fonction reçoit les identifiants de tous les disques en panne. In the example described here, the fault table is stored on each of the 20 disks in a space reserved by the administration module which is not usable for storing the data. This table is kept consistent on all the disks by the administration module. This table has a fixed size equal to the total number of disks. The fault table is filled by means of the function shown in FIG. 9. Thus, when a failure is detected, for example by the administration module 48 (operation 2200), this function receives the identifiers of all the disks. Out of order.

30 Dans une opération 2202, une fonction Is_Tgd_Dsk() cherche chacun des identifiants de disque en panne dans la table de pannes. In an operation 2202, a function Is_Tgd_Dsk () searches for each failed disk identifier in the fault table.

Pour chaque identifiant absent, la table de pannes crée une nouvelle entrée qui reçoit l'identifiant de disque dans la première ligne, et un indice incrémenté dans la seconde ligne (opération 2204). Sinon la fonction traite l'identifiant suivant (opération 2206). For each missing identifier, the fault table creates a new entry that receives the disk identifier in the first line, and an index incremented in the second line (operation 2204). Otherwise the function processes the next identifier (operation 2206).

En variante, la table de pannes est implémentée sous la forme d'une pile ou d'une liste chaînée. Dès lors, elle ne comporte qu'une ligne qui reçoit les indices de disques, et c'est l'indice de position de chaque identifiant dans la table qui sert d'indice croissant. Alternatively, the fault table is implemented as a stack or linked list. Therefore, it comprises only one line which receives the indices of disks, and it is the index of position of each identifier in the table which serves as increasing index.

La fonction Wrt Drt _Z() se base sur les indices de la table de pannes pour maintenir une vue à jour des zones associées à un disque en panne qui ont été modifiées. The Wrt Drt _Z () function relies on the clues from the fault table to maintain an up-to-date view of the areas associated with a failed drive that have been modified.

15 Ainsi, comme on l'a vu plus haut, la fonction Wrt_Drt_Z() est appelée pour chaque requête en écriture, et elle a pour fonction de marquer dans la table de zones l'indice le plus élevé de la tabla de pannes. Thus, as discussed above, the function Wrt_Drt_Z () is called for each write request, and its function is to mark in the zone table the highest index of the failure table.

Ainsi, lorsqu'une zone a un indice supérieur ou égal à celui d'un disque de la 20 table de pannes, cela signifie que celle-ci a été modifiée après la panne du disque considéré. Thus, when a zone has an index greater than or equal to that of a disk of the fault table, this means that it has been modified after the failure of the disk considered.

Sur cette base, l'unité de réparation et de recouvrement 406 peut exécuter la fonction de la figure 10 pour rétablir un disque après une panne. Pour cela, 25 l'unité 406 part d'un indice i mis à zéro (opération 2300) et parcourt la table de zones. On this basis, the repair and overlay unit 406 can perform the function of Fig. 10 to restore a disk after a failure. For this purpose, the unit 406 starts with an index i set to zero (operation 2300) and traverses the zone table.

A chaque fois, une comparaison entre l'indice associé au disque qu'on rétablit dans la table de pannes et celui de la zone d'indice i dans la table de zones 30 indique si la zone a été modifiée après la panne du disque considéré (opération 2302). 10 Si oui, alors une fonction Upd_Z(i) met à jour les données de la zone concernée en récupérant les données répliquées qui lui correspondent (opération 2304). Ensuite, la table de zones est mise à jour pour refléter cette opération (2306). Each time, a comparison between the index associated with the disk that is restored in the fault table and that of the index zone i in the zone table 30 indicates whether the zone was modified after the failure of the disk considered. (operation 2302). If so, then a function Upd_Z (i) updates the data of the area concerned by retrieving the replicated data corresponding thereto (operation 2304). Next, the zone table is updated to reflect this operation (2306).

Une fois la zone d'indice i à jour, une fonction End_Drt Zone() supprime l'entrée de la table de pannes associée au disque rétabli, et parcourt la tables de pannes pour majorer l'indice des zones par le maximum des indices restants. Cela assure une croissance lente des indices et évite de traiter des données trop grandes. Once the index field i is updated, an End_Drt Zone () function deletes the entry from the fault table associated with the restored disk, and goes through the fault table to increase the index of the zones by the maximum of the remaining indices. . This ensures slow index growth and avoids processing too much data.

S'il reste des zones à parcourir, l'indice i est incrémenté (opération 2310). Sinon, la fonction se termine dans l'opération 2312. If there are still areas to browse, the index i is incremented (operation 2310). Otherwise, the function ends in operation 2312.

On notera que la table de zones peut recevoir des zones de taille paramétrable. 15 En effet, une entrée dans la table de zones est associée à une pluralité d'adresses virtuelles contiguës. It should be noted that the zone table can receive zones of configurable size. Indeed, an entry in the zone table is associated with a plurality of contiguous virtual addresses.

Dans le mode de réalisation décrit ici, cette table est stockée dans la zone des données réservées du volume logique auxquelles appartiennent les adresses 20 virtuelles, c'est-à-dire qu'elle est également répartie sur tous les disques. In the embodiment described here, this table is stored in the reserved data area of the logical volume to which the virtual addresses belong, i.e. it is equally distributed on all the disks.

On notera que la zone des données réservées du volume logique n'est pas extensible indéfiniment. On notera également que l'appel à la table de zones constitue une requête en lecture dans le système. Note that the reserved data area of the logical volume is not extensible indefinitely. It should also be noted that the call to the zone table constitutes a read request in the system.

II est donc nécessaire de trouver un compromis entre la granularité des données de la table de zones (qui augmente la performance du mécanisme de recouvrement/récupération), et le coût qui est associé à la multiplication des requêtes (qui augmente avec la granularité). It is therefore necessary to find a compromise between the granularity of the data of the zone table (which increases the performance of the recovery / recovery mechanism), and the cost which is associated with the multiplication of the requests (which increases with the granularity).

On peut voir les fonctions décrites avec les figures 9 et 10 comme des fonctions qui bouclent en parallèle avec l'exécution principale du système. En effet, pour 25 30 assurer une sécurité maximale des informations, ces fonctions constituent des "interruptions". The functions described in FIGS. 9 and 10 can be seen as functions that loop in parallel with the main execution of the system. Indeed, to ensure maximum information security, these functions constitute "interrupts".

Cela signifie que si la condition de leur lancement (disque qui tombe en panne ou disque qui est rétabli) est rencontrée, les requêtes de détermination d'adresse physique en cours d'exécution sont annulées et rejouées après exécution de ces fonctions. This means that if the condition of their launch (disk that fails or disk is restored) is encountered, the physical address determination requests that are running are canceled and replayed after these functions are executed.

Ces fonctions peuvent donc être réalisées directement dans la couche de virtualisation ou dans le module d'administration, en tant que fonctions séparées comme cela est présenté ici, ou en tant que partie intégrante des fonctions présentées plus haut. These functions can therefore be performed directly in the virtualization layer or in the administration module, as separate functions as presented here, or as an integral part of the functions presented above.

La figure 11 représente une attribution des espaces virtuels aux espaces physiques en variante de celui de la figure 6. Ici, la tolérance aux pannes est également accrue, cette fois laissant volontairement des espaces libres au sein des groupes de réplication appelés unités de résilience. Figure 11 shows an assignment of virtual spaces to physical spaces as an alternative to that of Figure 6. Here, fault tolerance is also increased, this time voluntarily leaving free spaces within replication groups called resiliency units.

Pour des raisons de clarté, on a représenté sur cette figure un seul groupe de réplication qui comprend sept disques. Parmi ces sept disques, on va définir des hachures comprenant quatre unités de hachurage pour le stockage des données, et trois unités de résilience pour la tolérance des pannes. For the sake of clarity, there is shown in this figure a single replication group that includes seven disks. Among these seven disks, we will define hatches comprising four hatch units for storing data, and three resilience units for fault tolerance.

Comme on le voit sur la figure 11, les données sont toujours répliquées une fois, selon la même méthode que précédemment, mais il existe également un décalage avec chaque hachure. Ce décalage sert à assurer que tous les espaces laissés libres sont répartis sur l'ensemble des disques, ce qui garantit un meilleur équilibrage de la charge. As seen in Figure 11, the data is always replicated once, in the same manner as before, but there is also a lag with each hatch. This offset is used to ensure that all free spaces are distributed over all disks, which ensures a better balance of the load.

Comme pour les unités de hachurage, deux adresses physiques sont associées sur les disques à chaque unité de résilience SpO, Spi et Sp2. Sur la figure 11, 25 les adresses physiques associées à la même unité de résilience dans une hachure principale donnée sont référencées de manière identique. As for the hatch units, two physical addresses are associated on the disks with each resilience unit SpO, Spi and Sp2. In Fig. 11, the physical addresses associated with the same resiliency unit in a given principal hatch are referenced identically.

Pour la détermination d'adresse physique avec l'attribution décrite avec la figure 5 11, la fonction décrite avec la figure 7 reste utilisable, moyennant quelques modifications à la fonction Get Phy_Ind(). For the determination of physical address with the assignment described with FIG. 11, the function described with FIG. 7 remains usable, with some modifications to the function Get Phy_Ind ().

Une telle fonction Get Phy Ind() en variante va maintenant être décrite avec la figure 12. On notera tout d'abord la différence de contexte entre l'attribution 10 présentée sur la figure 6 et celle présentée sur la figure 11. Such an alternative Get Phy Ind () function will now be described with FIG. 12. First of all, the difference of context between the allocation shown in FIG. 6 and that presented in FIG. 11 will be noted.

Dans le premier cas, les disques sont répartis en plusieurs groupes pour éviter les pannes corrélées, c'est-à-dire affectant plusieurs disques à la fois. In the first case, the disks are divided into several groups to avoid correlated failures, that is to say affecting several disks at a time.

15 Dans le deuxième cas, certaines des unités de hachurage sont utilisées comme espace libre pour palier à une panne d'un ou plusieurs des disques, comme cela apparaîtra mieux plus bas. In the second case, some of the hatch units are used as free space to compensate for a failure of one or more of the disks, as will be shown below.

Il n'y alors pas a priori de regroupement des disques par groupe de réplication, 20 bien que cela soit possible comme on le verra avec la figure 15. There is therefore no priori grouping of disks by replication group, although this is possible as will be seen with FIG.

La définition des unités de résilience en plus des unités de hachurage revient à répartir une partie des adresses physiques en un groupe de travail (celles qui reçoivent les données des unités de hachurage) d'une part, et en des groupes 25 de panne (celles qui reçoivent les données des unités de résilience) d'autre part, en fonction d'un critère de tolérance de panne. The definition of the resilience units in addition to the hatch units amounts to distributing part of the physical addresses into a workgroup (those receiving the data of the hatch units) on the one hand, and into failure groups (those which receive the data of the resilience units) on the other hand, according to a fault tolerance criterion.

Un tel critère de tolérance de panne porte par exemple sur le nombre de pannes successives que l'on souhaite supporter, et donc le nombre de groupes 30 de panne à gérer. Dans l'exemple présent, ce nombre est de trois. D'autres critères pourraient néanmoins être employés. 26 Dans l'exemple de la figure 12, la fonction Get_Phy_Ind () peut être vue comme deux blocs successifs : * un bloc de traitement A pour déterminer les indices de disque et de hachure comme précédemment, sans tenir compte de la présence des unités de 5 résilience, et * un bloc B qui traite les indices ainsi calculés pour tenir compte de la présence des unités de résilience et obtenir les indices réels. Such a fault-tolerance criterion relates, for example, to the number of successive failures that one wishes to support, and therefore the number of failure groups to be managed. In the present example, this number is three. Other criteria could nevertheless be used. In the example of FIG. 12, the function Get_Phy_Ind () can be seen as two successive blocks: * a processing block A to determine the disk and hatch indices as before, without taking into account the presence of the units of 5 resilience, and * a block B that treats the indices thus calculated to take into account the presence of the resilience units and obtain the real indices.

La fonction Get_Phy_Ind() reçoit les trois arguments suivants (opération 2482) : 10 * l'indice de l'unité de hachurage dont on cherche la correspondance, * le nombre de disques dans le système, et * le nombre d'unités de résilience. The function Get_Phy_Ind () receives the following three arguments (operation 2482): 10 * the index of the hatching unit whose match is sought, * the number of disks in the system, and * the number of units of resiliency .

Dans une première opération 2484, la fonction StripO détermine un indice de 15 hachure principal k, ainsi que l'indice mml du premier disque sur lequel l'adresse virtuelle est stockée. In a first operation 2484, the StripO function determines a main hatch index k, as well as the mml index of the first disk on which the virtual address is stored.

L'opération 2484 diffère de l'opération 2084 de la figure 8 en ce que la fonction Strip() est appelée avec le nombre d'unités de hachurage, c'est-à-dire le 20 nombre de disques moins le nombre d'unités de résilience. The operation 2484 differs from the operation 2084 of Figure 8 in that the Strip () function is called with the number of hatch units, i.e. the number of disks minus the number of resilience units.

Dans une opération 2486, la fonction Replu détermine les indices de hachure réels k1 et k2 pour tenir compte de la réplication des données comme l'opération 2086. 25 Dans une opération 2490, la fonction Shft() détermine un indice mm2 du disque qui reçoit les données répliquées. L'opération 2490 diffère de l'opération 2090 de la figure 8 en ce que la fonction Shft() est appelée avec le nombre d'unités de hachurage, c'est-à-dire le nombre de disques moins le nombre d'unités de 30 résilience. In an operation 2486, the Replu function determines the actual hatch indices k1 and k2 to account for the replication of the data as the operation 2086. In an operation 2490, the function Shft () determines a subscript mm2 of the receiving disk. the replicated data. Operation 2490 differs from operation 2090 of Figure 8 in that the function Shft () is called with the number of hatch units, i.e., the number of disks minus the number of units resilience.

Dans une opération 2492, une fonction Cp_Spr() détermine un indice ml qui correspond à l'indice réel du disque associé à l'indice mml. Cette fonction sert à modifier l'indice mml pour tenir compte de la présence des unités de résilience. Comme on le verra plus bas, l'indice ml que retourne la fonction Cp_Spr() peut être un indice d'une unité de résilience. In an operation 2492, a function Cp_Spr () determines an index ml which corresponds to the real index of the disk associated with the index mml. This function is used to modify the mml index to take into account the presence of the resilience units. As will be seen below, the index ml that returns the function Cp_Spr () can be an index of a unit of resilience.

Dans une opération 2494, une fonction Cp_Spr() détermine un indice m2 qui correspond à l'indice réel du disque associé à l'indice mm2. Cette fonction sert à modifier l'indice mm2 pour tenir compte de la présence des unités de résilience. Comme on le verra plus bas, l'indice m2 que retourne la fonction Cp_Spr() peut être un indice d'une unité de résilience. In an operation 2494, a function Cp_Spr () determines an index m2 which corresponds to the real index of the disk associated with the index mm2. This function is used to modify the mm2 index to take into account the presence of the resilience units. As will be seen below, the index m2 that returns the function Cp_Spr () can be an index of a unit of resilience.

Une fois les indices ml et m2 déterminés, les indices d'adresses physiques sont retournés en 2499. La fonction Cp_Spr() va maintenant être décrite avec la figure 13. Cette fonction reçoit comme arguments un indice de disque mm, un indice d'unité de hachurage k, un nombre total de disques N et un nombre d'unités de résilience S. La fonction Cp_Spr() commence par exécuter une fonction Spr() en 2602. 20 La fonction Spr() implémente l'équation 30 de l'Annexe A. La fonction Spr() reçoit trois arguments en entrée : * l'indice de disque mm, * l'indice d'unité de hachurage k ; 25 * le nombre total de disques N. Once the indices ml and m2 are determined, the physical address indices are returned in 2499. The function Cp_Spr () will now be described with FIG. 13. This function receives as arguments a disk index mm, a unit index The function Cp_Spr () starts by executing a function Spr () in 2602. The function Spr () implements the equation 30 of the Appendix A. The Spr () function receives three input arguments: * the disk index mm, * the hatch unit index k; 25 * the total number of discs N.

Comme l'indice mm a été établi sur un nombre N-S de disques, la fonction Spr() permet donc d'établir un indice m qui prend en compte la présence des S unités de résilience. Ensuite, un test détermine dans une opération 2604 si le disque associé à l'indice réel m est en panne et si une unité de résilience lui a été affectée. 30 Un exemple de mise en oeuvre de la fonction 2604 est la tenue d'une table appelée ici table de résilience. Cette table contient une unique ligne, dans laquelle chaque colonne correspond à un disque d'indice m correspondant au numéro de la colonne. La valeur stockée dans chaque colonne indique : * que le disque d'indice m n'est pas en panne, ou * que le disque d'indice m est en panne, et la valeur stockée est alors un indice d'unité de résilience qui permet de déterminer l'indice du disque auquel est 10 attribuée l'unité de résilience qui sera associée au disque d'indice m. As the index mm has been established on an N-S number of disks, the function Spr () thus makes it possible to establish an index m which takes into account the presence of the S units of resilience. Next, a test determines in an operation 2604 whether the disk associated with the real index m has failed and whether a resiliency unit has been assigned to it. An exemplary implementation of the function 2604 is the holding of a table here called resilience table. This table contains a single line, in which each column corresponds to a disk of index m corresponding to the number of the column. The value stored in each column indicates: * that the index disk m is not broken, or * that the index disk m is out of order, and the stored value is then a unit of resilience index which determines the index of the disk to which the resilience unit associated with the index disk m is assigned.

Une telle table de résilience est stockée sur chacun des disques et est synchronisée en permanence, en même temps que la table de pannes par exemple. S'il faut utiliser une unité de résilience, alors l'indice mm est mis à jour dans une opération 2606 par une fonction Spr_2() qui implémente l'équation 31 de l'Annexe A en utilisant comme arguments le nombre total de disques N, le nombre d'unité de résilience S, et l'indice m qui vient d'être calculé. 20 Cette fonction part du principe que les données du disque d'indice m sont stockées dans chaque hachure sur l'unité de résilience dont l'indice de résilience est indiqué par la table de résilience, et qu'il suffit donc de connaître l'indice de hachure k pour déterminer l'indice du disque sur lequel l'unité de 25 résilience voulue est attribuée. Such a resilience table is stored on each of the disks and is synchronized continuously, together with the fault table for example. If a resiliency unit is to be used then the index mm is updated in an operation 2606 by a function Spr_2 () which implements equation 31 of Annex A using as arguments the total number of disks N , the number of resilience units S, and the index m that has just been calculated. This function assumes that the data of index disk m is stored in each hatch on the resilience unit whose resilience index is indicated by the resilience table, and that therefore it is sufficient to know the hatch index k to determine the index of the disk on which the desired resilience unit is allocated.

Pour cela, après la mise à jour de l'indice mm, la fonction Cp_Spr() est relancée. Ainsi, dans le cas où deux pannes ont lieu successivement, si l'unité de résilience associée à l'un des disques en panne est située sur le deuxième 30 disque en panne, la fonction Cp_Spr( est à nouveau répétée, de sorte que l'indice retourné correspond à une unité de résilience sur un disque fonctionnel. 15 For this, after updating the mm index, the Cp_Spr () function is restarted. Thus, in the case where two failures occur successively, if the resiliency unit associated with one of the failed disks is located on the second failed disk, the function Cp_Spr (is repeated again, so that the The returned index corresponds to a resiliency unit on a functional disk.

29 De cette manière, de multiples pannes peuvent être tolérées, comme les unités de résilience peuvent être utilisées pour remplacer d'autres unités de résilience. Pour maintenir la table de résilience, et pour remplir les adresses physiques associées aux unités de résilience lors d'une panne, une fonction va maintenant être décrite avec la figure 14. In this way, multiple failures can be tolerated, as the resiliency units can be used to replace other resiliency units. To maintain the resilience table, and to fill the physical addresses associated with the resiliency units during a failure, a function will now be described with FIG.

Lorsque le système détecte qu'un disque tombe en panne (opération 2700), cette fonction reçoit les identifiants de tous les disques en panne. When the system detects that a disk fails (operation 2700), this function receives the IDs of all failed disks.

Dans une opération 2702, une fonction Spr_Dsk() modifie l'indice du disque en panne auquel n'est associée aucune unité de résilience. La valeur de son indice de résilience reçoit le premier indice de résilience non déjà attribué. In an operation 2702, a function Spr_Dsk () modifies the index of the failed disk with which no resilience unit is associated. The value of its resilience index receives the first resilience index not already assigned.

Ensuite, dans une opération 2704, les données répliquées des unités de hachurage qui étaient situées sur le disque qui est tombé en panne sont recopiées sur les unités de résilience associées au moyen d'une fonction Wrt_Spr_Dsk(). Then, in an operation 2704, the replicated data of the hatch units that were located on the failed disk are copied to the associated resiliency units by means of a Wrt_Spr_Dsk () function.

Pour améliorer la performance, la recopie n'est pas immédiatement réalisée : la fonction Wrt_Spr_Dsk() génère des requêtes d'écriture des données disponibles sur l'unité de hachurage restante vers l'unité de résilience, et ces requêtes sont exécutées en concurrence avec les autres requêtes d'accès. Cela signifie que l'unité de résilience ne peut pas être utilisée tant que cette requête d'écriture n'a pas été réalisée. Enfin, la fonction se termine en 2706. To improve the performance, the copying is not immediately carried out: the function Wrt_Spr_Dsk () generates queries for writing the data available on the remaining hatchery unit to the resilience unit, and these queries are executed in competition with other access requests. This means that the resiliency unit can not be used until this write request has been made. Finally, the function ends in 2706.

En variante, la fonction Wrt_Spr_Dsk() génère les requêtes d'écriture sur les unités de résilience et exécute ces requêtes avant toute autre requête d'accès. Alternatively, the Wrt_Spr_Dsk () function generates the write requests on the resiliency units and executes these requests before any other access request.

On notera que, lorsque le disque est rétabli, il faut également recopier à 30 nouveau les données répliquées sur celui-ci. Note that when the disk is restored, it is also necessary to copy the replicated data back to it again.

On peut voir la fonction décrite avec la figure 14 comme une fonction qui boucle en parallèle avec l'exécution principale du système. En effet, pour assurer une sécurité maximale des informations, cette fonction constitue une "interruption". The function described in Figure 14 can be seen as a function that loops in parallel with the main execution of the system. Indeed, to ensure maximum information security, this function is an "interruption".

Cela signifie que si la condition de son lancement (disque qui tombe en panne) est rencontrée, les requêtes de détermination d'adresse physique en cours d'exécution sont annulées et rejouées après exécution de cette fonction. This means that if the condition of its launch (disk crashing) is encountered, the physical address determination requests that are running are canceled and replayed after this function has been executed.

Cette fonction peut donc être réalisée directement dans la couche de virtualisation ou dans le module d'administration, en tant que fonction séparées comme cela est présenté ici, ou en tant que partie intégrante des fonctions présentées plus haut. This function can therefore be performed directly in the virtualization layer or in the administration module, as a separate function as presented here, or as an integral part of the functions presented above.

Dans un mode de réalisation avantageux, l'attribution décrite avec la figure 6 et 15 celle décrite avec la figure 11 sont mélangées, pour offrir un support de panne optimal. In an advantageous embodiment, the assignment described with FIG. 6 and that described with FIG. 11 are mixed, to provide an optimal breakdown support.

Pour la détermination d'adresse physique avec une telle attribution, la fonction décrite avec la figure 7 reste utilisable, moyennant quelques modifications à la 20 fonction Get_Phy_IndO. For the determination of physical address with such an assignment, the function described with FIG. 7 remains usable, with some modifications to the Get_Phy_IndO function.

Une telle fonction Get Phy_Ind( en variante va maintenant être décrite avec la figure 15. Such a function Get Phy_Ind (alternatively will now be described with FIG.

25 La fonction représentée sur la figure 15 est un mélange des variantes de la fonction Get_Phy_Ind() décrite avec les figures 8 et 12. Ainsi, elle présente de grandes similitudes avec celles-ci. C'est pourquoi certaines opérations n'ont pas été renumérotées. The function shown in FIG. 15 is a mixture of the variants of the Get_Phy_Ind () function described with FIGS. 8 and 12. Thus, it has great similarities with them. This is why some operations have not been renumbered.

30 Dans une opération 2482, la fonction Get_Phy_lnd() reçoit les arguments suivants : * l'indice de l'unité de hachurage dont on cherche la correspondance, * un tableau Ngr[] contenant une ligne dont les valeurs indiquent le nombre de disques pour chaque groupe de réplication, et * le nombre d'unités de résilience. In an operation 2482, the function Get_Phy_lnd () receives the following arguments: * the index of the hatching unit whose match is sought, * an array Ngr [] containing a line whose values indicate the number of disks for each replication group, and * the number of resiliency units.

Comme pour la figure 8, le tableau Ngr[] est utile car il permet de retrouver rapidement le nombre total de disques N et le nombre de groupe de réplication Ngr, et d'accéder tout aussi rapidement au nombre de disques par groupe de réplication. As for Figure 8, the table Ngr [] is useful because it allows to quickly find the total number of N disks and the number of Ngr replication group, and access just as quickly to the number of disks per replication group.

Dans une autre implémentation, il est possible de passer directement N et Ngr en tant qu'arguments, mais un calcul est alors nécessaire lorsque l'on a besoin du nombre de disques au sein d'un groupe de réplication donné. In another implementation, it is possible to directly pass N and Ngr as arguments, but a computation is then necessary when one needs the number of disks within a given replication group.

Les opérations 2484 et 2486 sont ensuite réalisées de manière identique à 15 celles de la figure 12, et l'opération 2488 est réalisée comme l'opération 2088 de la figure 8. Operations 2484 and 2486 are then performed identically to those of FIG. 12, and operation 2488 is performed as step 2088 of FIG.

Ensuite, les opérations 2490 à 2494 sont réalisées comme dans le cas de la figure 12, en tenant compte du fait que cette opération est réalisée au sein d'un 20 groupe de réplication. Next, operations 2490 to 2494 are performed as in the case of FIG. 12, taking into account that this operation is performed within a replication group.

Les indices des disques q1 et q2 au sein du groupe de réplication p sont ensuite transformés en indices de disque ml et m2 dans des opérations 2496 et 2497 de manière analogue à l'opération 2097 de la figure 8. Ensuite les indices ml et m2 des disques classés par groupe de réplication sont convertis en indices de disques n1 et n2 des disques classés par groupe de défaillance dans une opération 2498 comme l'opération 2098 de la figure 8. The indices of the disks q1 and q2 within the replication group p are then transformed into disk indices ml and m2 in operations 2496 and 2497 in a similar manner to the operation 2097 of FIG. 8. Then the indices ml and m2 of the Disks classified by replication group are converted to disk indexes n1 and n2 of disks classified by failure group in a 2498 operation as operation 2098 of FIG.

30 Enfin, l'opération 2499 est réalisée comme l'opération 2099 de la figure 8, afin de retourner les indices d'adresses physiques. 25 Finally, operation 2499 is performed as step 2099 of FIG. 8 to return the physical address indices. 25

32 Ce mode de réalisation est le mode de réalisation est très avantageux, car il offre une très grande tolérance aux diverses pannes, tant grâce à la répartition des données sur des disques appartenant à des groupes de défaillance distincts que grâce à l'utilisation des unités de résilience qui permet de contenir des pannes au sein des groupes de réplication. This embodiment is the embodiment is very advantageous because it offers a very high tolerance to various failures, both through the distribution of data on disks belonging to different failure groups that through the use of units resilience that can contain failures within replication groups.

En outre, la répartition par hachures décrite dans les modes décrits permet d'obtenir des performances très améliorées, comme les accès sont répartis sur des disques distincts. In addition, the hatching distribution described in the modes described allows to obtain very improved performance, as the accesses are distributed on separate disks.

Les unités de hachurage sont ici décrites comme ayant une taille fixe. II serait néanmoins possible d'implémenter l'invention en affectant des tailles d'unités de hachurage différentes selon les groupes de réplication moyennant quelques modifications aux fonctions décrites. The hatching units are here described as having a fixed size. It would nevertheless be possible to implement the invention by assigning different sizes of hatch units according to the replication groups with some modifications to the described functions.

Le moteur et la table de correspondance décrits ici forment un module de correspondance capable d'affecter les adresses virtuelles à des adresses physiques sur la base d'une règle comportant une formule arithmétique définie par les fonctions ci-dessus. 20 Bien que dans les modes de réalisation décrits plus haut ces fonctions constituent l'essentiel de la règle d'affectation, il serait possible d'utiliser une règle qui affecte de manière fixe une certaine partie des adresses virtuelles, et qui affecte une autre partie des adresses virtuelles avec les fonctions. 25 Bien que les modes de réalisations décrits ci-dessus lient la couche de virtualisation à un environnement applicatif en amont et à des disques physiques (ou unité de mémoires locales) en aval, l'homme du métier comprendra bien que la couche de virtualisation présentée ici pourrait être 30 isolée de ces éléments. 15 Il faut donc envisager cette couche de manière indépendante, comme une brique logique (de virtualisation) au dessus et en dessous de laquelle peuvent être empilées des briques logiques supplémentaires. The engine and lookup table described herein form a correspondence module capable of assigning the virtual addresses to physical addresses based on a rule having an arithmetic formula defined by the above functions. Although in the embodiments described above these functions constitute the essence of the assignment rule, it would be possible to use a rule which fixedly affects a certain part of the virtual addresses, and which affects another part. virtual addresses with functions. Although the embodiments described above link the virtualization layer to an upstream application environment and to physical disks (or local memory unit) downstream, the skilled person will understand that the virtualization layer presented here could be isolated from these elements. It is therefore necessary to consider this layer independently, as a logical (virtualization) brick above and below which additional logical bricks can be stacked.

Dans ce cadre, l'obtention d'adresses qui sont qualifiées "d'adresse physique" signifie avant tout une désabstraction de la couche de virtualisation. Ces adresses pourraient en effet être elles mêmes des adresses virtuelles d'un espace logique d'un serveur de stockage. De la même façon, les adresses virtuelles reçues en amont pourraient elles même correspondre à une désabstraction d'une couche de virtualisation supérieure. In this context, obtaining addresses that are called "physical address" means above all a disassembly of the virtualization layer. These addresses could indeed themselves be virtual addresses of a logical space of a storage server. In the same way, the virtual addresses received upstream could themselves correspond to a disabstraction of a higher virtualization layer.

L'application qui accède aux données stockées peut comporter un pilote qui gère les relations entre les divers éléments telle l'interaction application ù système de fichiers, l'interaction système de fichiers ù module de correspondance, l'interaction module de correspondance ù client de stockage, implémentation de la stratégie du serveur de stockage en obtenant de chaque élément un résultat et en appelant l'élément suivant avec ce résultat (ou une forme modifiée de ce résultat). The application that accesses the stored data may include a driver that manages the relationships between the various elements such as the application-file system interaction, the file system-correspondence module interaction, the correspondence module-client interaction. storage, implementing the storage server policy by getting each item a result and calling the next item with that result (or a modified form of that result).

En variante, le système est autonome et ne dépend pas de l'application qui appelle les données, et les éléments sont capables de communiquer entre eux, de sorte que l'information descend puis remonte les couches d'élément en élément. Alternatively, the system is autonomous and does not depend on the application that calls the data, and the elements are able to communicate with each other, so that the information goes down and then back up the element layers into element.

De même, les communications entre ces éléments peuvent être assurées de différentes manières, par exemple au moyen de l'interface POSIX, des protocoles IP, TCP, UDP, d'une mémoire partagée, d'une RDMA (Remote Direct Access Memory). Il convient de garder à l'esprit que le but de l'invention est d'offrir les avantages de systèmes de stockage spécialisés sur la base des ressources réseaux existantes. 34 Un exemple de réalisation du système décrit ci-dessus est basé sur un réseau dans lequel les stations sont réalisées avec des ordinateurs comprenant : Similarly, the communications between these elements can be provided in different ways, for example by means of the POSIX interface, IP, TCP, UDP protocols, shared memory, RDMA (Remote Direct Access Memory). It should be borne in mind that the object of the invention is to provide the advantages of specialized storage systems based on existing network resources. An exemplary embodiment of the system described above is based on a network in which the stations are made with computers comprising:

* un processeur spécialisé ou généraliste (par exemple du type CISC ou RISC 5 ou autre), a specialized or generalist processor (for example of the CISC or RISC 5 type or other),

* un ou plusieurs disques de stockage (par exemple des disques durs à interface Serial ATA, ou SCSI, ou autre) ou tout autre type de stockage, et * one or more storage disks (eg Serial ATA, SCSI, or other hard drives) or any other type of storage, and

10 * une interface réseau (par exemple Gigabit, Ethernet, Infiniband, SCI...) 10 * a network interface (for example Gigabit, Ethernet, Infiniband, SCI ...)

* un environnement d'application basé sur un système d'exploitation (par exemple Linux) pour supporter des applications et offrir un gestionnaire de système de fichiers, * un ensemble applicatif pour réaliser le module de correspondance, par exemple le module Clustered Logical Volume Manager de l'application Exanodes (marque déposée) de la société Seanodes (marque déposée), * An operating system-based application environment (eg Linux) to support applications and offer a file system manager, * an application set to realize the correspondence module, for example the Clustered Logical Volume Manager module the Exanodes application (registered trademark) of the company Seanodes (registered trademark),

20 * un ensemble applicatif pour réaliser le client de stockage et le serveur de stockage de chaque NBD, par exemple le module Exanodes Network Block Device de l'application Exanodes (marque déposée) de la société Seanodes (marque déposée), An application set for producing the storage client and the storage server of each NBD, for example the Exanodes Network Block Device module of the Exanodes (registered trademark) application of the company Seanodes (registered trademark),

25 * un ensemble applicatif pour gérer les éléments répartis, par exemple le module Exanodes Clustered Service Manager de l'application Exanodes (marque déposée) de la société Seanodes (marque déposée). An application set for managing the distributed elements, for example the Exanodes Clustered Service Manager module of the Exanodes (registered trademark) application of the company Seanodes (registered trademark).

Ce type de système peut être réalisé dans un réseau comportant : 30 * des stations utilisateurs classiques, adaptées à un usage applicatif sur un réseau et qui jouent le rôle de noeuds applicatifs, et 15 This type of system can be realized in a network comprising: 30 * conventional user stations, adapted for application use on a network and acting as application nodes, and

35 * un ensemble de dispositifs informatiques réalisés conformément à ce qui précède, et qui jouent le rôle de serveurs du réseau et de noeuds de stockage. D'autres matériels et applications apparaîtront à l'homme du métier pour réaliser des dispositifs en variante dans le cadre de l'invention. A set of computing devices made in accordance with the above, and which act as network servers and storage nodes. Other materials and applications will be apparent to those skilled in the art for making alternative devices within the scope of the invention.

L'invention englobe le système informatique comprenant les noeuds applicatifs et les noeuds stockant dans leur ensemble. Elle englobe également les éléments individuels de ce système informatique, et notamment les noeuds applicatifs et les noeuds stockants dans leur individualité, ainsi que les divers moyens pour les réaliser. The invention encompasses the computer system comprising the application nodes and the nodes storing as a whole. It also encompasses the individual elements of this computer system, and in particular the application nodes and the storage nodes in their individuality, as well as the various means for carrying them out.

De même, le procédé de gestion de données est à considérer dans sa globalité, c'est-à-dire dans l'interaction des noeuds applicatifs et des noeuds stockants, mais également dans l'individualité des postes informatiques adaptés pour réaliser les noeuds applicatifs et les noeuds stockants de ce procédé. Similarly, the data management method is to be considered in its entirety, that is to say in the interaction of the application nodes and the storage nodes, but also in the individuality of the computer stations adapted to achieve the application nodes. and the storing nodes of this process.

La description qui précède a pour but de décrire un mode de réalisation particulier de l'invention. Elle ne saurait être considérée comme limitant ou décrivant celle-ci de manière limitative, et couvre notamment l'ensemble des combinaisons entre elles des caractéristiques des variantes décrites. The above description is intended to describe a particular embodiment of the invention. It can not be considered limiting or describing it in a limiting manner, and covers in particular all combinations of characteristics of the variants described.

L'invention couvre également, en tant que produits, les éléments logiciels décrits, mis à disposition sous tout "medium" (support) lisible par ordinateur. L'expression "medium lisible par ordinateur" comprend les supports de stockage de données, magnétiques, optiques et/ou électroniques, aussi bien qu'un support ou véhicule de transmission, comme un signal analogique ou numérique. The invention also covers, as products, the software elements described, made available under any "medium" (support) readable by computer. The term "computer-readable medium" includes data storage media, magnetic, optical and / or electronic, as well as a medium or transmission vehicle, such as an analog or digital signal.

ANNEXE A SECTION 1 NGR = max(NN) (10) Si i < N mod NGR, NGR[i] = NGR + 1 Sinon, NGR[i] N = N GR n N m = +(n mod NGR) x +min(n mod NGR,N mod NGR) (12) NGR NGR SECTION 2 k SUInd. N m1 = SUInd. mod N k1 = k x 2 (22) (20) (21) ANNEXE A (suite) SECTION 2 (suite) k2 = k x 2 + 1 (23) mi ù min (1+ N1 N mod NGR) NGR qi = ml ù min ml N mod NGR) ù p x N (25) 1 +NGR NGR q2 = (qi + 1 + (k mod (NGR[p] ù 1))) mod NGR[p] (26) m2 = q2 + p x N + min(p, N mod NGR) (27) NGR ni = qi x NGR + p (28) n2 = q2 X NGR + p (29) SECTION 3 m = (mm + k) mod N (30) mm = (m + N ù S) mod N (31) p= N NGR (24) ANNEX A SECTION 1 NGR = max (NN) (10) If i <N mod NGR, NGR [i] = NGR + 1 Otherwise, NGR [i] N = N GR n N m = + (n mod NGR) x + min (mod NGR, N mod NGR) (12) NGR NGR SECTION 2 k SUInd. N m1 = SUInd. mod N k1 = kx 2 (22) (20) (21) APPENDIX A (continued) SECTION 2 (continued) k2 = kx 2 + 1 (23) mi ù min (1 + N1 N mod NGR) NGR qi = ml where min ml N mod NGR) ù px N (25) 1 + NGR NGR q2 = (qi + 1 + (k mod (NGR [p] ù 1))) mod NGR [p] (26) m2 = q2 + px N + min (p, N mod NGR) (27) NGR ni = qi x NGR + p (28) n2 = q2 X NGR + p (29) SECTION 3 m = (mm + k) mod N (30) mm = ( m + N ù S) mod N (31) p = N NGR (24)

Claims (3)

Revendicationsclaims 1. Outil informatique de stockage de données comprenant un module de correspondance (40) relié à des unités de stockage (38), ledit module de correspondance (40) comprenant une fonction de correspondance (404) pour déterminer au moins deux adresses de stockage pour recevoir des données associées à une adresse virtuelle reçue en entrée (402), caractérisé en ce que, dans la fonction de correspondance : * au moins une partie des unités de stockage sont réparties logiquement sur la 10 base d'un critère de dépendance de panne, et * au moins une partie des adresses virtuelles sont affectées par blocs à des adresses de stockage selon une règle choisie, ladite règle comportant une formule arithmétique tenant compte dudit critère de dépendance. 15 A computer data storage tool comprising a correspondence module (40) connected to storage units (38), said correspondence module (40) comprising a correspondence function (404) for determining at least two storage addresses for receiving data associated with an incoming virtual address (402), characterized in that, in the correspondence function: * at least a portion of the storage units are logically distributed on the basis of a fault dependency criterion , and * at least a portion of the virtual addresses are allocated in blocks to storage addresses according to a chosen rule, said rule comprising an arithmetic formula taking into account said dependency criterion. 15 2. Outil informatique de stockage de données comprenant un module de correspondance (40) relié à des unités de stockage (38), ledit module de correspondance (40) comprenant une fonction de correspondance (404) pour déterminer au moins deux adresses de stockage pour recevoir des données associées à une adresse virtuelle reçue en entrée (402), caractérisé en ce que, 20 dans la fonction de correspondance : * au moins une partie des adresses physiques sont réparties logiquement en un groupe de travail et en groupes de panne, sur la base d'un critère de tolérance de panne, * au moins une partie des adresses virtuelles sont affectées par blocs à des 25 adresses de stockage d'unités de stockage selon une règle choisie, * ladite règle comportant une première formule arithmétique en affectant au moins une partie des adresses virtuelles à des adresses de stockage appartenant à des groupes de travail, et * ladite règle comportant une deuxième formule arithmétique opérante en 30 présence d'une panne pour affecter au moins une partie des adresses virtuelles concernées à des adresses de stockage appartenant à un groupe de panne en fonction de cette panne. 38 39 A data storage computer tool comprising a correspondence module (40) connected to storage units (38), said correspondence module (40) comprising a correspondence function (404) for determining at least two storage addresses for receiving data associated with an incoming virtual address (402), characterized in that, in the correspondence function: * at least a portion of the physical addresses are logically distributed into a workgroup and into fault groups, on the basis of a fault tolerance criterion, at least a portion of the virtual addresses are allocated in blocks to storage unit storage addresses according to a chosen rule, said rule having a first arithmetic formula by assigning least part of the virtual addresses to storage addresses belonging to workgroups, and * said rule comprising a second arithmetic formula in the presence of a failure to allocate at least a portion of the virtual addresses concerned to storage addresses belonging to a fault group according to this failure. 38 39 3. Outil informatique de stockage de données comprenant un module de correspondance relié à des unités de stockage, ledit module de correspondance étant agencé pour déterminer une correspondance entre des adresses virtuelles et des adresses physiques sur les unités de stockage, chaque adresse virtuelle étant affectée à au moins au moins deux adresses de stockage, caractérisé en ce que le module de correspondance maintient une première table comprenant des données d'identification de panne d'unité de stockage, ainsi qu'une deuxième table comprenant des données de modification de zones logiques désignant chacune au moins une adresse virtuelle, l'outil informatique comprenant en outre une unité de recouvrement agencée pour mettre à jour les données d'une unité de stockage tombée en panne en appelant le module de correspondance avec des adresses virtuelles tirées de la deuxième table, sur la base des données de la première table. A data storage computer tool comprising a correspondence module connected to storage units, said correspondence module being arranged to determine a correspondence between virtual addresses and physical addresses on the storage units, each virtual address being assigned to at least at least two storage addresses, characterized in that the correspondence module maintains a first table comprising storage unit failure identification data, and a second table including logical area modification data designating each at least one virtual address, the computer tool further comprising a recovery unit arranged to update the data of a storage unit that has failed by calling the correspondence module with virtual addresses derived from the second table, based on the data from the first table.
FR0707189A 2007-10-12 2007-10-12 IMPROVED COMPUTER SYSTEM COMPRISING MULTIPLE NETWORK NODES. Withdrawn FR2922335A1 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
FR0707189A FR2922335A1 (en) 2007-10-12 2007-10-12 IMPROVED COMPUTER SYSTEM COMPRISING MULTIPLE NETWORK NODES.
PCT/FR2008/001088 WO2009047397A2 (en) 2007-10-12 2008-07-23 Improved computer system comprising multiple network nodes
PCT/FR2008/001089 WO2009047398A2 (en) 2007-10-12 2008-07-23 Improved computer system comprising multiple network nodes
EP08837674A EP2212791A2 (en) 2007-10-12 2008-07-23 Improved computer system comprising multiple network nodes
EP08841064A EP2212792A1 (en) 2007-10-12 2008-08-04 Enhanced computer system including several network nodes
PCT/FR2008/001168 WO2009053557A1 (en) 2007-10-12 2008-08-04 Enhanced computer system including several network nodes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0707189A FR2922335A1 (en) 2007-10-12 2007-10-12 IMPROVED COMPUTER SYSTEM COMPRISING MULTIPLE NETWORK NODES.

Publications (1)

Publication Number Publication Date
FR2922335A1 true FR2922335A1 (en) 2009-04-17

Family

ID=39048748

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0707189A Withdrawn FR2922335A1 (en) 2007-10-12 2007-10-12 IMPROVED COMPUTER SYSTEM COMPRISING MULTIPLE NETWORK NODES.

Country Status (3)

Country Link
EP (2) EP2212791A2 (en)
FR (1) FR2922335A1 (en)
WO (3) WO2009047397A2 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1984000628A1 (en) * 1982-07-30 1984-02-16 Western Electric Co Management of defects in storage media
EP0697660A1 (en) * 1994-08-18 1996-02-21 International Business Machines Corporation HMC: a hybrid mirrored and chained data replication method to support high availability for disk arrays
US5636356A (en) * 1992-09-09 1997-06-03 Hitachi, Ltd. Disk array with original data stored in one disk drive and duplexed data distributed and stored in different disk drives
EP1162537A1 (en) * 2000-06-09 2001-12-12 Hewlett-Packard Company, A Delaware Corporation Utilization of unused disk space on networked computers
GB2378277A (en) * 2001-07-31 2003-02-05 Sun Microsystems Inc Multiple address translations
US20040210714A1 (en) * 1996-11-01 2004-10-21 Fujitsu Limited RAID apparatus storing a plurality of same logical volumes on different disk units

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7035922B2 (en) * 2001-11-27 2006-04-25 Microsoft Corporation Non-invasive latency monitoring in a store-and-forward replication system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1984000628A1 (en) * 1982-07-30 1984-02-16 Western Electric Co Management of defects in storage media
US5636356A (en) * 1992-09-09 1997-06-03 Hitachi, Ltd. Disk array with original data stored in one disk drive and duplexed data distributed and stored in different disk drives
EP0697660A1 (en) * 1994-08-18 1996-02-21 International Business Machines Corporation HMC: a hybrid mirrored and chained data replication method to support high availability for disk arrays
US20040210714A1 (en) * 1996-11-01 2004-10-21 Fujitsu Limited RAID apparatus storing a plurality of same logical volumes on different disk units
EP1162537A1 (en) * 2000-06-09 2001-12-12 Hewlett-Packard Company, A Delaware Corporation Utilization of unused disk space on networked computers
GB2378277A (en) * 2001-07-31 2003-02-05 Sun Microsystems Inc Multiple address translations

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CHUNG-SHENG LI ET AL: "Combining replication and parity approaches for fault-tolerant disk arrays", PARALLEL AND DISTRIBUTED PROCESSING, 1994. PROCEEDINGS. SIXTH IEEE SYMPOSIUM ON DALLAS, TX, USA 26-29 OCT. 1994, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, 26 October 1994 (1994-10-26), pages 360 - 367, XP010100166, ISBN: 0-8186-6427-4 *
HSIAO H-I ET AL: "Chained declustering: a new availability strategy for multiprocessor database machines", PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON DATA ENGINEERING. LOS ANGELES, FEB. 5 - 9, 1990, LOS ALAMITOS, IEEE. COMP. SOC. PRESS, US, vol. CONF. 6, 5 February 1990 (1990-02-05), pages 456 - 465, XP010018233, ISBN: 0-8186-2025-0 *
JIN H ET AL: "Stripped mirroring RAID architecture", JOURNAL OF SYSTEMS ARCHITECTURE, ELSEVIER SCIENCE PUBLISHERS BV., AMSTERDAM, NL, vol. 46, no. 6, April 2000 (2000-04-01), pages 543 - 550, XP004190490, ISSN: 1383-7621 *

Also Published As

Publication number Publication date
WO2009047397A2 (en) 2009-04-16
EP2212791A2 (en) 2010-08-04
EP2212792A1 (en) 2010-08-04
WO2009053557A9 (en) 2010-04-22
WO2009053557A1 (en) 2009-04-30
WO2009047398A2 (en) 2009-04-16
WO2009047397A3 (en) 2009-06-04
WO2009047398A3 (en) 2009-06-04

Similar Documents

Publication Publication Date Title
CN107547653B (en) A distributed file storage system
US10003650B2 (en) System and method of implementing an object storage infrastructure for cloud-based services
US8458299B2 (en) Metadata management method for NAS global namespace design
CN105324765B (en) Choose a bucket for deduplication
US20020103907A1 (en) System and method of storing data to a recording medium
FR2878673A1 (en) PERENNE DISTRIBUTED BACKUP SYSTEM AND METHOD
FR2681707A1 (en) FILE SYSTEM FOR SELECTIVELY REDISTRIBUTING FILES AND METHOD FOR AFFECTING MEMORY SPACE IN A COMPUTER SYSTEM COMPRISING MULTIPLE DATA STORAGE DEVICES.
WO2013152358A1 (en) Consistent ring namespaces facilitating data storage and organization in network infrastructures
US9165004B2 (en) Associated content system
US20120054252A1 (en) Object File System
EP3788501B1 (en) Data partitioning in a distributed storage system
EP4026016A1 (en) Migration of a data blockchain
FR2932289A1 (en) METHOD AND SYSTEM FOR SYNCHRONIZING SOFTWARE MODULES OF A COMPUTER SYSTEM DISTRIBUTED IN CLUSTER OF SERVERS, APPLICATION TO STORAGE OF DATA.
CA2667107A1 (en) Improved computer-based system comprising several nodes in a network
FR2922335A1 (en) IMPROVED COMPUTER SYSTEM COMPRISING MULTIPLE NETWORK NODES.
FR3025340A1 (en) CLOUD OF DATA
WO2010052440A1 (en) Method and system for the virtualized storage of a digital data set
US8032691B2 (en) Method and system for capacity-balancing cells of a storage system
FR2873219A1 (en) SAVING METHOD DISTRIBUTED TO CLIENT POSTS IN A COMPUTER NETWORK
FR2923112A1 (en) Computer-based system, has storage server with scheduler that executes access requests contained in queue in determined order and determines order as function of rules forming performance criteria and based on state parameters of queue
FR2907993A1 (en) Computer system for network, has storage server executing request contained in waiting queue in preset order according to rules forming performance criteria and implying parameters of state of storage area
WO2010125257A1 (en) Storage system including a plurality of nodes in a network with write synchronisation management
FR2938356A1 (en) METHOD AND SYSTEM FOR SYNCHRONIZING A SET OF SOFTWARE MODULES OF A COMPUTER SYSTEM DISTRIBUTED TO A CLUSTER OF SERVERS
FR3100350A1 (en) migration of a data blockchain
FR3073061B1 (en) PROCESS COMMUNICATION METHOD, COMPUTER PROGRAM AND CORRESPONDING COMPUTER INSTALLATION

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20120629