• Aucun résultat trouvé

Robustesse des systèmes à large échelle

1. PROPOSITION DE L’ALGORITHME SD2S 109

1 Proposition de l’algorithme SD2S

La méthode de placement que nous proposons a pour but d’offrir à un système de stockage, un schéma de placement alliant robustesse et performance. Elle est appelée Symmetric Difference of Source Sets algorithm (SD2S) et son principe de base repose sur l’indépendance entre les ensembles de provenance des blocs de données.

2 Matrice des degrés

La contrainte la plus critique pour la robustesse d’un système de stockage est celle concernant les ensembles de provenance des données. Il s’agit également de la plus difficile à respecter car elle ne peut être vérifiée qu’une fois le schéma de redirection établi. Nous allons définir un lexique propre au respect de cette contrainte, débouchant sur une méthode de détermination d’optimalité d’un schéma de placement orienté robustesse.

2.1 Définition d’un degré

Undegré, notédeg, est un couple de valeurs résultant de la comparaison entre deux ensembles de provenance. Elle exprime la disjonction des ensembles de provenance et leur différence de cardinal. Soient deux disques physiquesi et j distincts, on a :

deg (i, j) = (α, β) (6.1)

α= min (card (Ei),card (Ej))−card (EiEj) (6.2)

β =|(card (Ei)−card (Ej)| (6.3) Le paramètreαdu degré donne le nombre minimal de blocs de données qui pourront être récupérés si une double défaillance des disques i et j intervient. Le paramètre β

indique si les ensembles de provenance possèdent un cardinal différent. Ce qui nous permet de mesurer la reconstruction des données sur les disquesi etj, notéers en cas de double défaillance de ces deux disques qui est :

rs (i, j) = card (2×α+β

Ei) + card (Ej) (6.4) On peut vérifier avec cette équation les cas où les ensembles de provenance des deux disques i etj sont égaux, et où ils sont disjoints.

Cas des ensembles de provenance égaux

Si les deux ensembles sont égaux, alors on a :

Ei =Ej ⇒card (Ei) = card (Ej) et card (EiEj) = card (Ei)

α = card (Ei)−card (Ei) = 0 etβ = 0

rs (i, j) = card (2×0 + 0

Ei) + card (Ej)

Par conséquent, la fraction des données reconstruites est nulle, et effectivement, aucune donnée ne peut être reconstruite.

Cas des ensembles de provenance disjoints

Si les deux ensembles sont disjoints, alors on a, pour card (Ei)≥card (Ej) :

EiEj ={} ⇒α= card (Ej)−0 = card (Ej) et β = card (Ei)−card (Ej)

rs (i, j) = 2×card (Ej) + card (Ei)−card (Ej) card (Ei) + card (Ej)

rs (i, j) = card (Ei) + card (Ej) card (Ei) + card (Ej) = 1

Par conséquent, la fraction des données reconstruites obtenue est maximale. Toutes les données peuvent donc être reconstruites.

Nous introduisons alors le terme de classe de degré, catégorisant les valeurs en fonction de la sauvegarde possible de données en cas de multiple défaillance. La classe d’un degré est notée Cd et vaut pour chaque deg (i, j) :

Cd (deg (i, j)) = 0 si α = 0 etβ = 0 1 si α = 0 etβ >0 2 si α >0

2.2 Construction de la matrice des degrés

A partir des degrés définis précédemment, nous allons établir une matrice des degrésMdeg avec pour indice de ligne et de colonne les disques du systèmes. La taille de la matrice est donc de n2

p. La matrice est construite comme suit :

Mdeg (i, j) =deg (i, j) (6.5) La diagonale de cette matrice ne contient pas de valeur, car n’aurait pas de sens sinon. En effet, une défaillance ciblant deux fois le même disque n’a pas plus d’impact qu’une seule, et n’a donc pas d’intérêt ici. La table 6.1 montre un exemple de matrice des degrés obtenue à partir du schéma de placement représenté sur la figure 6.1. On peut constater dans la matrice que l’un des degrés est de classe 0, ce qui indique qu’en cas de double défaillance ciblant ces deux disques, la totalité des données stockées dans ces disques sera perdue.

stripe 1 stripe 2 stripe 3 stripe 4 stripe 5 1.1 2.1 3.1 4.1 5.1 1.2 2.2 3.2 4.2 5.2 1.3 2.3 3.3 4.3 5.3 1.4 2.4 3.4 4.4 5.4 1.5 2.5 3.5 4.5 5.5 dP1 dP2 dP3 dP4 dP5 dP6 dP7 1.1 1.5 1.2 1.3 1.4 2.4 2.1 2.3 2.5 3.4 3.2 4.5 4.2 4.3 5.4 5.1 5.2 2.2 3.1 3.3 3.5 4.4 4.1 5.5 5.3 dL1 dL2 dL3 dL4 dL5 dL6 dL7

3. ALGORITHME SD2S 111 1 2 3 4 5 6 7 1 - (1, 1) (1, 1) (2, 0) (1, 1) (1, 1) (0, 0) 2 (1, 1) - (0, 0) (1, 1) (1, 0) (1, 0) (1, 1) 3 (1, 1) (0, 0) - (1, 1) (1, 0) (1, 0) (1, 1) 4 (2, 0) (1, 1) (1, 1) - (0, 1) (0, 1) (2, 0) 5 (1, 1) (1, 0) (1, 0) (0, 1) - (1, 0) (1, 1) 6 (1, 1) (1, 0) (1, 0) (0, 1) (1, 0) - (1, 1) 7 (0, 0) (1, 1) (1, 1) (2, 0) (1, 1) (1, 1)

-Table 6.1 – Matrice des degrés du système de la figure 6.1

On définit alors, de manière équivalente aux degrés, la classe d’une matrice, notée

CM et qui vaut :

CM = mini,j Cd (Mdeg (i, j)) (6.6) En fonction de la classe de la matrice, on a donc les implications suivantes :

CM = 0⇒ ∃(i, j)∈[0, nd[2 tel que rs (i, j) = 0

CM ≥1⇒ ∀(i, j)∈[0, nd[2, rs (i, j)>0

La différence entre les matrices de classe 1 et 2 est que les schémas de placement impliquant une matrice des degrés de classe 2 assure une reconstitution des données des deux disques défaillants quelque soit la double défaillance, c’est à dire qu’importe les indices des deux disques défaillants. Si la matrice est de classe 1, pour au moins une double défaillance, la reconstruction des données n’est possible que pour un seul des deux disques.

Avec l’utilisation de cette matrice des degrés, nous pouvons sélectionner les schémas de placement calculés pour assurer la reconstruction d’une fraction des données en cas de double défaillance, et donc respecter la contrainte sur les ensembles de provenance des données (contrainte 3).

3 Algorithme SD2S

Outre le besoin de robustesse du système qui doit être garanti par le schéma de placement, notre autre objectif est de proposer un algorithme de création de schéma de manière rapide, afin de ne pas pénaliser la performance pour autant. Après avoir fixé les différentes contraintes à respecter et proposé un premier algorithme satisfaisant l’ensemble des contraintes, nous avons observé que sélectionner le placement de chaque bloc de données selon ces contraintes était consommateur de temps.

Pour remédier à cela, on s’est orienté pour la sélection du placement vers un schéma satisfaisant les contraintes 1, 2 et 4, et de vérifier s’il respecte la troisième contrainte grâce à l’utilisation de la matrice des degrés. Pour une plus grande rapidité de calcul, nous avons également fait le choix de diviser le système de stockage en périodes, et de

trouver un schéma optimal pour une période, qui sera ensuite répété pour l’ensemble du système. La taille de cette période est de (npns), qui n’est que le nombre de disques logiques de donnée.

3.1 Le fonctionnement en mode normal

Nous avons fait le choix de créer nos schémas de placement à partir d’opérations modulo. Le schéma de placement effectue un décalage horizontal d’une valeur notéeλ

aux blocs de données d’un stripe. Un exemple est donné figure 6.2 pour λ = 2.

1.1 1.5 1.2 1.3 1.4 2.4 2.1 2.3 2.5 3.4 3.2 4.5 4.2 4.3 5.4 5.1 5.2 2.2 3.1 3.3 3.5 4.4 4.1 5.5 5.3 stripe 1 stripe 2 stripe 3 stripe 4 stripe 5 dL1 dL2 dL3 dL4 dL5 dL6 dL7 dP1 dP2 dP3 dP4 dP5 dP6 dP7 1.1 2.1 3.1 4.1 5.1 1.2 2.2 3.2 4.2 5.2 1.3 2.3 4.3 5.3 3.3 1.4 2.4 3.4 4.4 5.4 1.5 2.5 3.5 4.5 5.5

Figure 6.2 – Exemple de placement avec décalage à gauche (λ = 2)

Cette construction de schéma par décalage nous assure automatiquement la satis-faction de la seconde contrainte, basée sur le parallélisme des stripes, car le décalage est horizontal : les blocs appartenant à un mêmestripe logique feront partie du même stripe physique. La première contrainte, sur le parallélisme des disques, peut être sa-tisfaite également dans le cas où le λ choisi est premier avec le nombre de disques physiques du système. Dans ce cas, les blocs prendront toutes les positions disponibles dans [1, np] pour un cycle denp opérations de décalage.

Le respect de la dernière contrainte, sur l’équilibrage de charge, n’est par contre pas observé dans tous les cas lors de la construction, et dépend directement du nombrens

de disques libres.

La méthode SD2S (Symmetric Difference of Source Sets) est la combinaison de l’utilisation d’un schéma de placement avec décalage et du calcul de la matrice des degrés. Elle est décrite dans l’algorithme 12 qui est découpé en deux parties. Tout d’abord, pour satisfaire la première contrainte, nous recherchons la première valeur de λ première avec np donnant une classe de matrice CM optimale. Si aucun λ n’est trouvé, nous ignorons alors le respect de la première contrainte, qui n’a pas d’impact sur la robustesse du système, pour se focaliser sur lesλ non premiers avec np.

3.2 Le fonctionnement en mode défaillant

Lorsqu’une défaillance survient, le système va être amené, s’il en est capable, à reconstruire les données perdues. Dans le cas du declustered RAID, les blocs de données issus du disque défaillant sont réécrits sur des emplacements libres des disques sains.

3. ALGORITHME SD2S 113