Vidéo pédagogique

Pannes de disque

Durée : 00:10:26 -Réalisation : 2 mars 2015 -Mise en ligne : 2 mars 2015
  • document 1 document 2 document 3
  • niveau 1 niveau 2 niveau 3
  • audio 1 audio 2 audio 3
Descriptif

Nous allons conclure cette partie 5 en examinant le cas de panne le plus grave qui est la perte d'un disque.

Intervenant
Thème
Discipline :
Notice
Langue :
Français
Crédits
Serge Abiteboul (Intervenant), Benjamin Nguyen (Intervenant), Philippe Rigaux (Intervenant)
Conditions d'utilisation
L'ensemble de ce contenu est mis à disposition sous licence CC BY-NC-ND 3.0 France https://creativecommons.org/licenses/by-nc-nd/3.0/fr/
Citer cette ressource :
Serge Abiteboul, Benjamin Nguyen, Philippe Rigaux. Inria. (2015, 2 mars). Pannes de disque. [Vidéo]. Canal-U. https://www.canal-u.tv/86535. (Consultée le 4 juin 2023)
Contacter
Documentation

Erratum

Il est indiqué dans la vidéo du cours qu'en cas de panne du disque contenant le log, il suffit d'arrêter proprement le serveur pour récupérer l'état de la base. C'est malheureusement faux: si des mises à jour ont été effectuées sur le disque de la base par des transactions avant leur validation, l'image avant a été écrasée. Dans un tel cas, la règle du write-ahead logging assure que l'image avant est dans le fichier journal, mais la perte de ce dernier entraine sa perte définitive.

L'affirmation faite dans le cours n'est donc valable qu'en cas de mise à jour différée, ce qui n'est pas le plus courant. La perte du disque du log implique en général une reprise depuis la dernière sauvegarde du log. D'où l'intérêt de sauvegarder ce dernier fréquemment ou, mieux, de répliquer le log.

Toutes nos excuses pour cette erreur.

Vers la très haute disponibilité

La reprise sur panne telle qu’elle est présentée dans le cours permet de s’assurer de l’absence de perte de données, ce qui est déjà beaucoup. En revanche, elle n’assure pas la disponibilité constante du serveur de données puisque ce dernier peut être arrêté pour cause de panne pendant une période allant de quelques secondes (par exemple, relance instantanée du processus serveur après plantage) à quelques heures (par exemple, perte d’un disque suivie d’un remplacement, suivie d’une restauration à partir de la sauvegarde).

De nombreux systèmes applicatifs ne peuvent pas tolérer une telle période d’indisponibilité. C’est le cas par exemple des grands sites de commerce électronique, ou plus généralement des applications dont dépendent de très nombreux utilisateurs (transports, banques, etc.). Il faut dans ce cas développer des méthodes de reprise sur panne pour diminuer le temps de restauration des services et arriver — idéalement — à la garantie d’une disponibilité totale, 24 heures sur 24, 365 jours par an.

Examinons la chaine complète des communications entre un client et les données. On peut imaginer par exemple un navigateur web accédant à une application de commerce électronique, lui-même s’appuyant sur un serveur de données gérant le catalogue, le stock, etc. Cette chaine est résumée sur la figure ci-dessous:

Comment assurer une disponibilité totale de cette chaîne ? Il est clair que la communication entre le client et l’application est hors de notre contrôle. Si le boitier ADSL de l’utilisateur est défaillant, la transaction sera perdue. Nous pouvons envisager d’agir, en revanche, sur la disponibilité de l’application et du serveur de données.

Les solutions de haute disponibilité s’appuient sur la redondance des données et des services. La reprise sur panne telle que nous l’avons exposée en cours s’appuie d’ailleurs également sur ce principe. Pour être capable de pallier immédiatement la défaillance d’un serveur, il faut un serveur de secours ; pour pallier la défaillance d’un disque, il faut un disque de secours.

Le schéma de base est donc celui présenté sur la figure suivante. Le serveur et la base disposent de copies « fantômes », inactives, mais prêtes à prendre le relais en cas de panne. En mode normal, le serveur fantôme se contente de surveiller l’état du serveur principal en échangeant avec lui des messages à intervalles réguliers (mécanisme dit de « heartbeat »). Une copie continue et de préférence synchrone de la base et du journal est effectuée par ailleurs depuis les disques principaux vers les disques fantômes.

Un petit composant complémentaire, le routeur, sert à orienter la connexion des applications. En mode normal, l’adresse fournie par le routeur est celle du serveur principal. En cas de panne de ce dernier, le serveur fantôme va détecter la panne grâce à l’absence de réponse aux messages heartbeat, et prendre immédiatement le relais en demandant au routeur de lui adresser les requêtes. Si la base et le journal sont des copies fidèles de la base initiale, le service peut continuer sans interruption et sans perturbation des applications.

Conceptuellement, c’est simple, mais en pratique c’est bien entendu assez compliqué, et donc... coûteux. Il faut doubler l’infrastructure (deux fois plus de disques, deux fois plus de serveurs). Il est essentiel de répartir ces infrastructures dans deux clouds séparés physiquement, pour éviter la dépendance à de grosses pannes électriques affectant tout un centre de données, des inondations, ou autres catastrophes naturelles. Il faut mettre en place une architecture logicielle assez lourde, avec le personnel, les procédures de contrôle et de test qui vont avec. Il faut enfin assurer la synchronisation des services fantômes et des services principaux grâce à des composants logiciels spécialisés.

Pour les bases de données (qui ne sont qu’un exemple particulier de service dont la disponibilité doit être assurée), la synchronisation des fichiers de base et du journal pose des problèmes spécifiques. Une solution prête à l’emploi est celle des disk arrays, qui assurent des écritures en parallèle sur plusieurs disques. Ces dispositifs permettent de se prémunir contre des pannes fréquentes venant de problèmes matériels sur les disques : il est peu probable que plusieurs disques soient affectés simultanément. En revanche, ils sont peu efficaces contre les événements externes plus exceptionnels, qui demandent d’autres solutions. Certains SGBD proposent une réplication basée sur les écritures dans le fichier journal. Les mises à jour de ce fichier sont transmises vers un disque miroir, ce qui assure une reprise sur panne rapide (mais pas instantanée) avec le serveur fantôme. Enfin, on peut ajouter des composants de réplication synchrone au niveau du système de fichiers lui-même.

Les architectures de haute disponibilité sont étroitement liées aux systèmes de gestion de données distribués. Il est en effet tentant d’utiliser le serveur fantôme pour satisfaire des requêtes au lieu de le confiner à un rôle essentiellement passif. Les systèmes relationnels, dans leur version distribuée, associent clairement les deux problématiques. Une des (rares) caractéristiques commune des systèmes dits « NoSQL » est cette combinaison des fonctionnalités de reprise sur panne et de passage à l’échelle par distribution, au prix de l’abandon de certaines fonctionnalités.

Pour conclure, on notera que le sujet de la haute disponibilité date des débuts de l’informatique. Par exemple, la NASA a fait fortement progresser le domaine dans les années soixante avec le projet Apollo. Il faut aussi noter que les exigences en terme de haute disponibilité dépendent de façon directe de l’application et des coûts induits par une interruption de service. Une panne même de moins d’une minute dans une base de données d’une centrale nucléaire peut avoir des coûts potentiels en vie humaine inacceptables. L’arrêt pendant plusieurs heures du système de paiement d’une entreprise de vente sur Internet peut avoir un coût financier lourd pour l’entreprise. En revanche, la non-disponibilité pendant plusieurs jours de la base de données d’une association locale de protection des grenouilles, si elle peut être gênante pour les membres de l’association, a des conséquences moins sérieuses. La très haute disponibilité coûte cher, on adaptera donc les solutions aux besoins de l’application.

Pour en savoir plus :

Dans la même collection

  • Algorithmes de reprise sur panne
    Vidéo pédagogique
    00:08:56
    Algorithmes de reprise sur panne
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Avec le journal de transactions que nous avons présenté dans la séquence précédente, nous sommes maintenant en mesure d'avoir un algorithme de reprise sur panne qui est tout à fait robuste. Nous

  • Première approche
    Vidéo pédagogique
    00:05:48
    Première approche
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette troisième séquence, nous allons regarder comment effectuer la reprise sur panne. Nous savons qu'il nous faut assurer deux garanties : la garantie de durabilité après un commit et la

  • Lectures et écritures, buffer et disque
    Vidéo pédagogique
    00:05:09
    Lectures et écritures, buffer et disque
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette deuxième séquence, pour essayer de bien comprendre ce qu'implique une panne, on va revoir de manière assez détaillée les échanges entre les différents niveaux de mémoire précédemment

  • Le journal des transactions
    Vidéo pédagogique
    00:07:45
    Le journal des transactions
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette séquence, nous allons étudier le mécanisme principal qui assure la reprise sur panne qui est le journal de transactions ou le log.

  • Reprise sur panne : introduction
    Vidéo pédagogique
    00:06:18
    Reprise sur panne : introduction
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Nous débutons la partie 5 de ce cours qui va être consacré à la reprise sur panne. La reprise sur panne est une fonctionnalité majeure des SGBD, elle est extrêmement apprciable puisqu'elle garantit la

Avec les mêmes intervenants

  • Verrouillage à 2 phases
    Vidéo pédagogique
    00:09:18
    Verrouillage à 2 phases
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette séquence, nous allons présenter une deuxième manière d'atteindre la sérialisabilité qui est le verrouillage à deux phases ou "two-phase locking" en anglais noté 2PL. En fait, ce qu'on a vu

  • Sérialisabilité
    Vidéo pédagogique
    00:10:18
    Sérialisabilité
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette troisième séquence, nous nous intéressons maintenant au concept de sérialisabilité. On a vu précédemment qu'une transaction est une séquence d'opérations. Et lorsqu'on a de nombreuses

  • Les problèmes
    Vidéo pédagogique
    00:09:31
    Les problèmes
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette deuxième séquence, nous allons discuter des problèmes qui vont apparaitre lorsque de nombreuses transactions sont mises en concurrence. En effet, dans le cas général une base de données n

  • Les transactions : introduction
    Vidéo pédagogique
    00:08:01
    Les transactions : introduction
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette première partie, nous allons étudier les transactions et la concurrence c'est à dire le fait qu'il y ait plusieurs transactions qui arrivent en même temps. On va commencer par expliquer ce

  • Conclusion : cinq tendances
    Vidéo pédagogique
    00:08:18
    Conclusion : cinq tendances
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette dernière séquence du cours, nous allons examiner des tendances des bases de données distribuées.

  • Réplication
    Vidéo pédagogique
    00:04:45
    Réplication
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette cinquième séquence, nous allons étudier la réplication. L'idée à retenir : la raison essentielle à la réplication c'est la fiabilité.

  • Concurrence
    Vidéo pédagogique
    00:06:05
    Concurrence
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    On a vu dans une séquence précédente, comment étendre l'optimisation de requête au cas distribué. Nous allons regarder maintenant comment étendre la concurrence au cas distribué.

  • Optimisation de requête
    Vidéo pédagogique
    00:05:38
    Optimisation de requête
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette séquence, on va parler d'optimisation de requête, on va montrer comment toutes les techniques d'optimisation de requête qui avaient été développées dans le cas centralisé peuvent être

  • Fragmentation
    Vidéo pédagogique
    00:07:29
    Fragmentation
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette troisième séquence, on va parler de fragmentation.

  • Différentes architectures
    Vidéo pédagogique
    00:04:47
    Différentes architectures
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette deuxième séquence, on va considérer différentes sortes d'architectures utilisées pour faire des bases de données distribuées.

  • Algorithmes de reprise sur panne
    Vidéo pédagogique
    00:08:56
    Algorithmes de reprise sur panne
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Avec le journal de transactions que nous avons présenté dans la séquence précédente, nous sommes maintenant en mesure d'avoir un algorithme de reprise sur panne qui est tout à fait robuste. Nous

  • Bases de données distribuées : introduction
    Vidéo pédagogique
    00:10:02
    Bases de données distribuées : introduction
    Abiteboul
    Serge
    Nguyen
    Benjamin
    Rigaux
    Philippe

    Dans cette dernière partie, on va toucher à un sujet particulièrement à la mode, les bases de données distribuées. Vous allez voir qu'on va rencontrer plein de "buzzword". Alors on va parler des