Partitionnement et réplication des données
Ce que ce chapitre apporte 6 points
- Distinguer les modes de raccordement du stockage : direct, en réseau de fichiers, en réseau de blocs.
- Expliquer le passage d'une grosse machine à un ensemble de machines ordinaires, et ce qu'il impose, jusqu'au choix de la règle qui répartit les données : par plages ou par hachage.
- Décrire le fonctionnement d'un système de fichiers distribué : découpe en blocs, réplication, catalogue.
- Calculer la durabilité obtenue par une réplication, et comparer avec un codage à effacement.
- Décrire les formes de stockage du cloud et ce qui les distingue réellement.
- Situer les couches d'une architecture de traitement de données massives.
Le partitionnement répartit les données entre plusieurs machines, la réplication en garde plusieurs copies. Une machine plus grosse coûte cher, et finit toujours par ne plus exister en plus gros. Plusieurs machines ordinaires coûtent moins et n'ont pas de plafond, à une condition : accepter qu'elles tombent en panne, et concevoir le stockage pour que cela n'ait aucune conséquence. Toute l'infrastructure de ce chapitre découle de cette bascule, y compris ses aspects les moins intuitifs, comme le fait de conserver trois copies de chaque donnée.
Les trois chapitres précédents ont supposé les données accessibles, sans se demander où elles se trouvent. Cette question devient centrale dès que le volume dépasse ce qu'un disque contient, et sa réponse conditionne tout le reste : la façon dont un calcul se découpe, la vitesse à laquelle il lit, et ce qui se passe quand une machine s'arrête.
Trois façons de brancher du disque
DAS, pour direct attached storage : le disque est branché sur la machine, et seule cette machine le voit. C'est le disque d'un ordinateur ordinaire.
NAS, pour network attached storage : un boîtier expose des fichiers sur le réseau, via un protocole de partage. Plusieurs machines montent le même dossier et se partagent les fichiers.
SAN, pour storage area network : un réseau dédié expose des blocs de disque. La machine cliente voit ce qu'elle prend pour un disque local, et y installe son propre système de fichiers.
La distinction qui compte n'est pas la marque du boîtier mais le niveau auquel le partage a lieu.
| DAS | NAS | SAN | |
|---|---|---|---|
| Ce qui est exposé | un disque | des fichiers | des blocs |
| Qui gère le système de fichiers | la machine | le boîtier | la machine cliente |
| Partage entre machines | non | naturel | possible, mais délicat |
| Réseau | aucun | réseau courant | réseau dédié |
| Usage typique | poste de travail | dossiers partagés | bases de données, machines virtuelles |
Deux machines qui montent le même dossier NAS s'entendent, parce que le boîtier arbitre les accès concurrents aux fichiers.
Deux machines qui montent le même volume SAN avec un système de fichiers ordinaire détruisent les données en quelques secondes : chacune croit être seule à écrire les structures du système de fichiers. Il faut un système de fichiers prévu pour cela, ou bien réserver le volume à une seule machine.
C'est une erreur classique, et elle ne prévient pas : tout fonctionne jusqu'à la première écriture simultanée.
Ces trois modes partagent une limite : ils reposent sur un équipement, et cet équipement a une taille maximale, un prix qui croît plus vite que sa capacité, et une panne possible qui arrête tout ce qui en dépend.
Quelle est la différence essentielle entre un NAS et un SAN ?
Grossir, ou se multiplier
La mise à l'échelle verticale consiste à remplacer la machine par une plus puissante : plus de processeurs, plus de mémoire, plus de disques.
La mise à l'échelle horizontale consiste à ajouter des machines ordinaires et à répartir le travail entre elles.
Le choix n'est pas une question de goût, mais de plafond et de prix. La mise à l'échelle verticale ne demande aucun changement au logiciel, et c'est son immense avantage. Elle rencontre deux murs : un plafond physique, puisque la plus grosse machine du marché existe, et un prix qui croît plus vite que la capacité, un serveur deux fois plus puissant coûtant nettement plus du double.
La mise à l'échelle horizontale n'a pas de plafond et emploie du matériel bon marché. Elle exige en revanche que le logiciel sache répartir, ce qui est exactement le sujet du chapitre précédent, et elle rend les pannes ordinaires : sur mille machines, il en tombe une chaque semaine.
Un cluster est un ensemble de machines reliées par un réseau et pilotées comme une ressource unique. Chaque machine est appelée un nœud.
Les nœuds sont ordinaires et interchangeables. La disponibilité de l'ensemble ne vient pas de la fiabilité de chaque nœud, mais du fait qu'aucun nœud n'est indispensable.
La virtualisation se superpose souvent à cela sans la remplacer. Elle découpe une machine physique en plusieurs machines virtuelles, ce qui permet de mutualiser du matériel sous-employé, d'isoler des environnements et de déplacer une machine virtuelle d'un hôte à l'autre.
Dix machines virtuelles sur un hôte se partagent les disques, la mémoire et le réseau de cet hôte. Un traitement qui sature le disque le sature pour toutes les autres, et le voisin bruyant est une cause fréquente de lenteurs inexpliquées.
Plus grave dans le contexte des données réparties : trois copies d'un même bloc placées sur trois machines virtuelles du même hôte physique ne protègent de rien. La panne de l'hôte les emporte toutes les trois.
Un système de stockage réparti doit donc connaître la topologie physique, et pas seulement la liste des nœuds.
Le système de fichiers distribué
Un système de fichiers distribué présente un espace de nommage unique, alors que les données résident sur de nombreuses machines. Il repose sur trois mécanismes.
La découpe en blocs. Un fichier est coupé en blocs de taille fixe, souvent 128 Mio, soit octets ou 134 mégaoctets, que les calculs de ce chapitre arrondissent à 128 mégaoctets. Chaque bloc est stocké indépendamment. Un fichier de 10 téraoctets occupe ainsi des dizaines de milliers de blocs répartis sur tout le cluster.
La réplication. Chaque bloc est copié sur plusieurs nœuds, classiquement trois, placés dans des emplacements physiques distincts.
Le catalogue. Un service dédié retient l'arborescence et, pour chaque bloc, la liste des nœuds qui en détiennent une copie. Il ne voit jamais les données elles-mêmes.
La séparation entre le catalogue et les données explique presque tout le comportement de ces systèmes. La lecture d'un fichier se déroule ainsi :
- Client vers Catalogue : ouvrir("2024.csv").
- Catalogue vers Client, en réponse : bloc 1 sur A, B, D. Note : des adresses, jamais de données.
- Client vers Nœud A : lire bloc 1.
- Nœud A vers Client, en réponse : 128 Mo. Note : bloc 2 : depuis un autre nœud.
Le catalogue ne rend que des adresses. Les données, elles, passent directement du nœud qui les détient au client, sans jamais transiter par lui : c'est cette séparation qui permet à un seul service de cataloguer des pétaoctets sans en devenir le goulot d'étranglement. Les blocs suivants se lisent en même temps, sur d'autres nœuds.
Le débit vient du nombre de nœuds, pas de la vitesse d'un disque. Un disque lit à environ 200 mégaoctets par seconde. Cent nœuds lisant chacun un bloc différent au même moment délivrent 20 gigaoctets par seconde.
C'est la raison d'être de la découpe en blocs qui compte le plus : elle permet bien de ranger un fichier plus gros qu'aucun disque, mais elle sert surtout à le lire en parallèle. Un fichier stocké en un seul morceau sur un seul nœud n'irait pas plus vite que ce nœud.
Cela explique aussi pourquoi ces systèmes détestent les petits fichiers : chacun coûte deux entrées au catalogue et une ouverture à la lecture, sans rien ajouter au parallélisme. Leur prix se chiffre un peu plus bas.
Transférer 128 mégaoctets sur le réseau prend du temps. Transférer le programme qui doit les traiter, quelques kilo-octets, n'en prend aucun.
Un moteur de traitement réparti demande donc au catalogue où se trouvent les blocs, puis lance chaque tâche sur un nœud qui détient déjà le bloc. La lecture devient locale, et le réseau n'est plus sollicité que pour le mélange.
Cette idée, appelée localité des données, est celle qui rend le motif du chapitre précédent efficace en pratique. Elle explique aussi pourquoi séparer le calcul du stockage, comme le fait le cloud, se paie en bande passante.
Le prix des petits fichiers
Le catalogue garde toute l'arborescence en mémoire vive, pour répondre sans lire de disque : une entrée par fichier, une entrée par bloc, chacune de l'ordre de 150 octets. Ce chiffre est la règle d'usage des exploitants de HDFS, le système de fichiers distribué de l'écosystème Hadoop, et il se lit comme un ordre de grandeur, pas comme une mesure. Les emplacements des trois copies tiennent dans l'entrée du bloc : la réplication ne multiplie pas les entrées.
Dix téraoctets rangés en mille fichiers de 10 gigaoctets occupent 79 blocs par fichier, 78 pleins et un dernier de 16 mégaoctets : 79 000 entrées de blocs et 1 000 entrées de fichiers, soit 80 000 entrées et 12 mégaoctets de mémoire. Les mêmes dix téraoctets en fichiers de 100 kilo-octets font fichiers. Chacun tient dans un seul bloc, qui n'occupe sur le disque que ses 100 kilo-octets, mais qui compte pour une entrée en plus de celle du fichier : au moins entrées, soit 30 gigaoctets de mémoire pour le seul catalogue. Les disques portent les mêmes 30 téraoctets avec trois copies ; la mémoire du catalogue a été multipliée par 2 500.
Le second coût est le temps. Ouvrir un fichier demande une question au catalogue, une connexion au nœud qui détient le bloc et un positionnement sur le disque : de l'ordre de 5 à 10 millisecondes, quelle que soit la taille du fichier. Un disque rapide, qui lit à 500 mégaoctets par seconde, lit un bloc de 128 mégaoctets en 256 millisecondes. Les mêmes 128 mégaoctets en 1 280 fichiers de 100 kilo-octets demandent 1 280 ouvertures : 6,4 secondes à 5 millisecondes l'une, 12,8 secondes à 10, avant même de lire. L'ouverture coûte alors vingt-cinq à cinquante fois la lecture, et ce coût ne dépend pas du débit : plus le disque est rapide, plus il pèse.
| 1 000 fichiers de 10 Go | fichiers de 100 ko | |
|---|---|---|
| Place sur les disques, trois copies | 30 To | 30 To |
| Entrées du catalogue | 80 000 | |
| Mémoire du catalogue, à 150 octets l'entrée | 12 Mo | 30 Go |
| Lire 128 Mo à 500 Mo/s | 256 ms | 6,4 s d'ouvertures à 5 ms, puis 256 ms |
Le remède ne demande aucun matériel : regrouper les petits fichiers avant de les déposer, en archives ou en fichiers en colonnes de la taille d'un bloc ou plus. La place sur les disques ne change pas ; le catalogue et le temps d'ouverture retrouvent ceux des gros fichiers.
1.À quoi sert principalement la découpe d'un fichier en blocs ?
2.Les mêmes 10 To sont rangés en fichiers de 100 ko plutôt qu'en gros fichiers. Qu'est-ce qui change ?
Qui va où : répartir par plages ou par hachage
Un système de fichiers distribué laisse son catalogue retenir l'emplacement de chaque bloc. Une base répartie range des lignes, bien trop nombreuses pour qu'un catalogue retienne l'emplacement de chacune : l'emplacement se calcule à partir de la clé, et il suffit de connaître la règle pour savoir où lire. C'est le partitionnement des données entre machines, et deux règles dominent.
Par plages : chaque machine reçoit un intervalle de clés consécutives, dont les bornes sont connues de tous. Une lecture qui parcourt un intervalle ne touche qu'une machine, ou quelques-unes.
Par hachage : l'empreinte de la clé, ramenée au nombre de machines, désigne la machine. Les clés se dispersent, et une lecture par intervalle doit interroger tout le monde.
Rangées par horodatage, les 18 000 écritures de la minute tombent sur la même machine, et les trois autres attendent : c'est un point chaud, le déséquilibre du chapitre précédent appliqué au stockage. Rangées par empreinte du capteur, elles se répartissent à peu près également, mais relire la minute oblige à interroger les quatre machines. Les lectures par capteur suivent la règle inverse : la journée d'un capteur tient sur une seule machine par hachage, et se disperse sur les quatre plages par horodatage. Aucune règle n'est meilleure dans l'absolu : la clé de répartition se choisit d'après les écritures et les lectures réellement faites, et le chapitre sur les familles NoSQL y revient avec les séries chronologiques.
Le hachage par modulo a un second défaut, qui se voit le jour où le cluster grandit. Passer de quatre à cinq machines change le reste de la division pour presque toutes les empreintes, et presque toutes les données doivent changer de machine. Le hachage cohérent l'évite : machines et clés sont placées sur un même cercle d'empreintes, chaque machine en plusieurs points, et chaque clé va à la machine du premier point qui la suit sur le cercle. Une machine ajoutée ne prend que les clés qui précèdent ses propres points.
Avec le modulo, l'ajout d'une cinquième machine déplace ici 228 clés sur 300, et la plupart d'entre elles passent d'une ancienne machine à une autre ancienne : presque tout le cluster se recopie pour gagner une machine. Avec le hachage cohérent, 60 clés bougent, environ une sur cinq, et toutes vont vers la nouvelle machine, ce qui est le minimum pour lui donner sa part.
Des mesures sont réparties par plages d'horodatage sur quatre machines. Que se passe-t-il à l'écriture ?
Combien de copies, et pourquoi trois
Répliquer coûte : trois copies occupent trois fois la place. Le nombre de copies n'est donc pas un réglage de confort, mais un arbitrage qui se calcule.
Le système n'attend pas qu'une copie manque pour agir. Chaque nœud donne des nouvelles au catalogue toutes les trois secondes ; celui qui se tait une dizaine de minutes est déclaré mort, et chacun de ses blocs est recopié ailleurs à partir des copies restantes. Perdre un bloc demande donc que toutes ses copies disparaissent avant d'avoir été refaites, pendant une réparation de quelques minutes à quelques heures, et non au cours de la même année. Une machine seulement injoignable ne perd rien : ses blocs sont indisponibles un moment. Dans le calcul qui suit, p est la probabilité qu'une copie disparaisse pendant cette fenêtre.
De deux à trois copies, la perte attendue est divisée par , soit par cent quand vaut 1 % et par dix quand il vaut 10 %, pour une place multipliée par 1,5. Le même calcul donnerait encore ce facteur de trois à quatre copies : il dit ce que chaque copie achète, pas où s'arrêter. Ce qui distingue trois de deux, c'est la marge pendant une réparation. Avec deux copies, un disque tombé laisse ses blocs sur une seule copie le temps de les refaire, et une deuxième panne à ce moment les perd ; avec trois, il en reste deux. Au-delà, ce sont les pannes corrélées qui dominent, et une copie de plus sur le même matériel ne les évite pas.
Le calcul ci-dessus suppose que les nœuds tombent indépendamment. Trois copies sur trois machines du même hôte physique, de la même baie, ou alimentées par le même onduleur ne sont pas indépendantes : un seul incident les emporte ensemble, et la probabilité réelle de perte n'est plus p³ mais p.
C'est pourquoi les systèmes de stockage réparti placent les copies selon la topologie : une copie sur le nœud local, une deuxième sur une autre baie, une troisième sur la même autre baie mais un nœud différent. Ce placement précis équilibre la tolérance aux pannes et le trafic entre baies.
Répliquer n'est pas la seule technique.
Le codage à effacement tolère plus en occupant moins, et coûte du calcul. Un schéma 6+3 supporte la perte de trois fragments sur neuf en n'occupant qu'une fois et demie la taille des données, là où la réplication triple supporte deux pertes en occupant trois fois.
La contrepartie est le calcul : reconstituer un fragment perdu exige de lire les six autres et de refaire l'algèbre, alors qu'une réplication n'exige que de recopier. La lecture d'un fragment manquant devient donc coûteuse.
En pratique, les données récentes et souvent lues restent répliquées, et les données anciennes et rarement lues passent au codage à effacement. C'est le même arbitrage que partout : la place contre le temps.
1.Trois copies d'un bloc sur trois machines virtuelles du même hôte physique…
2.Un schéma de codage à effacement 6+3 comparé à une réplication triple…
Le stockage dans le cloud
Le cloud propose trois formes de stockage, qui correspondent aux trois niveaux vus plus haut.
| Forme | Ce qui est exposé | Correspond à | Usage typique |
|---|---|---|---|
| Stockage objet | des objets nommés, écrits en une fois | une variante du NAS, sans arborescence réelle | données brutes, archives, data lake |
| Stockage bloc | un volume attaché à une machine | un SAN | disque système, base de données |
| Stockage fichier | un partage réseau monté | un NAS | applications qui exigent un système de fichiers |
Le stockage objet range des objets identifiés par une clé dans des conteneurs, sans arborescence véritable : les barres obliques d'une clé ne sont qu'une convention d'affichage.
Un objet s'écrit en entier et se remplace en entier ; il ne se modifie pas au milieu. Cette contrainte, qui semble sévère, simplifie tout le reste : une copie est complète ou absente, jamais à moitié à jour, et une lecture rend l'ancienne version ou la nouvelle, jamais un mélange. La durabilité annoncée par les grands fournisseurs, « onze neuf » (99,999999999 % sur un an), vient d'ailleurs : de copies réparties sur plusieurs centres de données distants, et de la réparation rapide de toute copie perdue.
C'est la forme naturelle des données massives, et le socle de la plupart des data lakes.
Il change l'élasticité : la capacité s'obtient en quelques secondes et se rend aussi vite, ce qui transforme un investissement en dépense proportionnelle à l'usage.
Il change le modèle de coût : le stockage est bon marché, la lecture l'est moins, et la sortie des données hors du fournisseur se facture souvent plus cher que tout le reste. Un traitement mal placé peut coûter davantage en transfert qu'en calcul.
Il ne change pas la physique. Un octet met le même temps à traverser un continent, qu'il soit facturé ou non. Séparer le stockage du calcul, ce que fait le cloud par construction, supprime la localité des données décrite plus haut, et il faut la remplacer par des caches et par des formats de fichiers qui permettent de ne lire que les colonnes utiles.
Il ne change pas les responsabilités. Le fournisseur garantit la durabilité du support ; la conformité, le chiffrement, les droits d'accès et la localisation des données personnelles restent à la charge de celui qui les dépose.
1.Quelle propriété du stockage objet permet sa réplication multi-sites peu coûteuse ?
2.Que ne change pas le passage au cloud ?
Les couches d'une architecture de données
Les composants vus jusqu'ici s'organisent presque toujours de la même façon, quel que soit l'outillage retenu.
Cinq couches, et une règle par couche. Collecte. Les données entrent, par lots ou en continu, depuis des sources hétérogènes. Règle : ne rien transformer ici, sinon l'erreur de transformation devient irrattrapable.
Stockage brut. Les données sont conservées telles qu'arrivées, dans un espace peu structuré. Règle : garder l'original, toujours, parce qu'aucun besoin futur n'est connu aujourd'hui.
Traitement. Nettoyage, croisement, agrégation, avec les motifs des chapitres précédents. Règle : rendre chaque traitement rejouable à l'identique.
Stockage exploitable. Les données mises en forme pour l'usage, modélisées pour l'analyse. Règle : modéliser selon les questions posées, sujet du chapitre sur l'entrepôt.
Restitution. Requêtes, indicateurs, visualisations. Règle : la couche visible ne doit contenir aucun calcul métier que les couches précédentes ne sachent reproduire.
Deux mots reviennent pour désigner ces stockages, et ils ne sont pas interchangeables. Le data lake, ou lac de données, commence au stockage brut : tout y entre, sans schéma imposé, et le sens est donné à la lecture. Organisé en zones, il conserve aussi ce que produit le traitement : la zone brute est le stockage brut, la zone raffinée garde les données nettoyées, la zone exploitable les données mises en forme pour l'usage. Chaque zone s'ajoute aux précédentes sans les remplacer, puisque la règle du stockage brut est de garder l'original. L'entrepôt est un stockage exploitable dont le schéma est décidé avant l'écriture : ce qui n'y rentre pas n'y entre pas. Le chapitre sur l'entrepôt et le lac traite l'un et l'autre.
Mettre en pratique
La durabilité d'un stockage réparti n'est pas une impression, c'est un produit de probabilités. Et son prix n'est pas une impression non plus.
Durabilité et prix d'une réplication
- 1.
Un disque a 2 % de chances de tomber dans l'année, et aucune copie perdue n'est refaite avant la fin de l'année. Un million de données sont chacune répliquées sur 3 disques indépendants. Combien en perd-on dans l'année, en moyenne ?
- 2.
Sur ce même million, chacune sur un seul disque, combien en perd-on en moyenne sans aucune réplication ?
- 3.
Quel surcoût de stockage, en pour cent, une réplication en 3 exemplaires impose-t-elle ?
- 4.
Un codage à effacement en 6 fragments de données et 3 de parité impose quel surcoût, en pour cent ?
- 5.
Cent disques de 4 téraoctets sont regroupés. Quelle capacité utile, en téraoctets, la réplication en 3 exemplaires laisse-t-elle ?
- 6.
Quelle capacité utile, en téraoctets, le codage 6 plus 3 laisse-t-il sur ces mêmes disques ?
L'écart entre les deux dernières réponses est l'argument entier du codage à effacement : il double presque la capacité utile pour une durabilité comparable. Son prix est ailleurs, dans le calcul qu'exige la reconstruction d'un fragment perdu, qui mobilise plusieurs machines là où une copie se recopie sans rien calculer.
Un fichier de 1,2 téraoctet est déposé dans un système de fichiers distribué à blocs de 128 mégaoctets, avec trois copies. Combien de blocs, et quelle place occupée ?
1,2 téraoctet vaut 1 200 000 mégaoctets, soit 9 375 blocs de 128 mégaoctets.
Avec trois copies, 28 125 blocs sont stockés, occupant 3,6 téraoctets sur le cluster.
Le catalogue, lui, ne retient qu'une entrée de fichier et 9 375 entrées de blocs avec leurs emplacements : à 150 octets l'entrée, environ 1,4 mégaoctet. C'est cette asymétrie qui permet à un seul service de cataloguer des pétaoctets, et qui explique en même temps sa fragilité face aux petits fichiers.
Pourquoi un million de fichiers d'un kilo-octet posent-ils un problème là où un fichier d'un gigaoctet n'en pose aucun ?
Les deux représentent le même volume de données, un gigaoctet, et des charges sans commune mesure pour le catalogue.
Un fichier d'un gigaoctet occupe huit blocs, sept pleins et un dernier de 104 mégaoctets : neuf entrées, environ 1 350 octets de mémoire à 150 octets l'entrée. Un million de fichiers d'un kilo-octet occupent un million d'entrées de fichiers et un million d'entrées de blocs, que le catalogue garde toutes en mémoire vive : environ 300 mégaoctets pour décrire un gigaoctet de données. Sur un cluster qui en accumule des milliards, c'est la mémoire du catalogue qui arrête la croissance, bien avant les disques.
À la lecture, la différence est du même ordre : huit blocs lus en 2 secondes à 500 mégaoctets par seconde, contre un million d'ouvertures qui, à 5 millisecondes l'une, prennent 5 000 secondes, près d'une heure et demie. Le débit s'effondre.
Le remède habituel consiste à regrouper les petits fichiers en archives ou en fichiers colonnes avant de les déposer.
Un cluster place les trois copies de chaque bloc sur trois machines virtuelles choisies au hasard parmi cent, hébergées sur dix hôtes physiques. Quel est le défaut ?
Rien ne garantit que les trois machines virtuelles soient sur des hôtes différents. Le tirage peut placer les trois copies sur le même hôte, et la panne de cet hôte perd le bloc définitivement malgré la triple réplication.
La probabilité n'est pas négligeable : avec dix hôtes équipeuplés, la probabilité que les deux autres copies rejoignent l'hôte de la première vaut environ 1 sur 100 par bloc. Sur cent mille blocs, cela fait un millier de blocs exposés à une panne unique.
La correction consiste à rendre le placement conscient de la topologie, en interdisant deux copies sur un même hôte physique, une même baie, ou une même alimentation.
Un service conserve 800 téraoctets d'archives lues moins d'une fois par an. Le stockage est répliqué trois fois. Que proposer ?
Passer au codage à effacement. Un schéma 10+4 occupe 1,4 fois les données au lieu de 3, soit 1 120 téraoctets au lieu de 2 400, tout en tolérant quatre pertes simultanées au lieu de deux.
Le surcoût en calcul lors d'une reconstruction est réel, et sans importance ici : des archives lues moins d'une fois par an supportent une lecture plus lente.
C'est l'arbitrage inverse pour les données chaudes, lues en permanence par des traitements répartis, où la réplication garde l'avantage de permettre une lecture locale sur trois nœuds différents.
Chapitre révisé en octobre 2026 · Une erreur dans ce chapitre ?
Dans la bibliothèque d'exercices
Combien de copies, découpage en blocs, et réplication contre codage.
- Découper un fichier en blocsNiveau 2
- Combien de copies, et pourquoi troisNiveau 3
- Répliquer ou coderNiveau 3
- Le même volume en petits fichiersNiveau 3
- Ce que garde chaque coucheNiveau 3