BBWC: en théorie une bonne idée mais en a-t-on déjà enregistré vos données?


26

Je connais bien ce qu'un BBWC (cache d'écriture avec batterie) est destiné à faire - et les ai déjà utilisés sur mes serveurs, même avec un bon onduleur. Il y a évidemment des défaillances pour lesquelles il ne fournit pas de protection. Je suis curieux de savoir si cela offre réellement un réel avantage dans la pratique.

(NB, je recherche spécifiquement des réponses de personnes qui ont une BBWC et qui ont eu des plantages / échecs et si la BBWC a aidé à la récupération ou non)

Mise à jour

Après les commentaires ici, je suis de plus en plus sceptique quant à savoir si un BBWC ajoute une valeur.

Pour avoir une confiance en l'intégrité des données, le système de fichiers DOIT savoir quand les données ont été validées dans un stockage non volatile (pas nécessairement le disque - un point sur lequel je reviendrai). Il convient de noter que de nombreux disques reposent sur le moment où les données ont été validées sur le disque ( http://brad.livejournal.com/2116715.html ). Bien qu'il semble raisonnable de supposer que la désactivation du cache sur disque pourrait rendre les disques plus honnêtes, il n'y a toujours aucune garantie que ce soit le cas non plus.

En raison des tampons généralement volumineux dans un BBWC, une barrière peut nécessiter beaucoup plus de données à enregistrer sur le disque, entraînant ainsi des retards sur les écritures: le conseil général est de désactiver les barrières lors de l'utilisation d'un cache de réécriture non volatile (et de désactiver mise en cache disque). Cependant, cela semble compromettre l'intégrité de l'opération d'écriture - ce n'est pas parce que davantage de données sont conservées dans un stockage non volatil qu'elles seront plus cohérentes. En effet, sans démarcation entre les transactions logiques, il semble qu'il y ait moins de possibilités d'assurer la cohérence qu'autrement.

Si le BBWC devait reconnaître les barrières au moment où les données entrent dans leur stockage non volatile (plutôt que d'être engagé sur le disque), il semblerait qu'il satisfasse à l'exigence d'intégrité des données sans pénalité de performance - ce qui implique que les barrières devraient toujours être activées. Cependant, étant donné que ces appareils présentent généralement un comportement compatible avec le vidage des données vers l'appareil physique (nettement plus lent avec des barrières) et les conseils répandus pour désactiver les barrières, ils ne peuvent donc pas se comporter de cette façon. POURQUOI PAS?

Si les E / S dans le système d'exploitation sont modélisées comme une série de flux, il est possible de minimiser l'effet de blocage d'une barrière d'écriture lorsque la mise en cache d'écriture est gérée par le système d'exploitation - car à ce niveau, seule la transaction logique (un seul flux) ) doit être engagé. D'un autre côté, un BBWC n'ayant aucune connaissance des bits de données qui composent la transaction devrait valider l'intégralité de son cache sur le disque. Que le noyau / système de fichiers implémente réellement cela dans la pratique nécessiterait beaucoup plus d'efforts que je ne souhaite investir pour le moment.

Une combinaison de disques informant les fibs de ce qui a été commis et d'une coupure de courant soudaine conduit sans aucun doute à la corruption - et avec un système de fichiers journalisé ou structuré qui ne fait pas un fsck complet après une panne, il est peu probable que la corruption soit détectée et encore moins une tentative de réparation.

En termes de modes de défaillance, d'après mon expérience, la plupart des coupures de courant soudaines se produisent en raison d'une perte d'alimentation secteur (facilement atténuée avec un onduleur et un arrêt géré). Les personnes qui sortent le mauvais câble du rack impliquent une mauvaise hygiène du centre de données (étiquetage et gestion des câbles). Il existe certains types d'événements de perte de puissance soudaine qui ne sont pas empêchés par un onduleur - une défaillance de l'alimentation ou du VRM, un BBWC avec des barrières fournirait l'intégrité des données en cas de défaillance ici, mais quelle est la fréquence de tels événements? Très rare à en juger par le manque de réponses ici.

Il est certain que déplacer la tolérance aux pannes plus haut dans la pile est beaucoup plus cher qu'un BBWC - cependant, la mise en œuvre d'un serveur en tant que cluster présente de nombreux autres avantages en termes de performances et de disponibilité.

Une autre façon d'atténuer l'impact d'une perte de puissance soudaine serait d'implémenter un SAN - AoE en fait une proposition pratique (je ne vois pas vraiment l'intérêt de l'iSCSI) mais encore une fois, il y a un coût plus élevé.


3
Les serveurs de fichiers NetApp ont depuis de nombreuses années des caches d'écriture NVRAM, et j'ai vu bon nombre de ceux-ci perdre de la puissance et ne pas jeter leurs systèmes de fichiers. Il est difficile de prouver que quelque chose en a sauvé un, car depuis que l'un a été sauvé, la catastrophe ne s'est pas produite; quelles preuves rechercheriez-vous?
MadHatter prend en charge Monica

Sans doute, vous devriez également penser aux modes de défaillance d'un cache d'écriture sauvegardé par batterie par rapport à un cache d'écriture sans batterie.
Stefan Lasiewski

1
Pas un sondage - j'ai passé beaucoup de temps à enquêter sur cela - et je peux trouver beaucoup d'informations sur ce que le BBWC est censé faire - mais très peu d'informations sur les avantages qui ont été réalisés dans la pratique. Notez que la seule réponse que j'ai eu ci-dessous où quelqu'un dit qu'un BBWC a enregistré ses données est où il n'y avait pas d'arrêt géré en cas de panne de courant. Jusqu'à présent, rien n'a réfuté mes soupçons: alors qu'un BBWC peut enregistrer vos données dans certaines circonstances, ces circonstances peuvent être évitées par d'autres moyens.
symcbean

1
Non, c'est la preuve que ne pas avoir BBWC peut perdre vos données . Prouver que - et je soupçonne que la plupart des administrateurs système longue distance sur ce système ont des histoires où des données volatiles ont été perdues lors de pannes de courant; Je le fais très certainement - ne prouverait pas qu'avoir BBWC peut sauvegarder vos données , ce que le PO a demandé.
MadHatter prend en charge Monica

1
Une analyse et une modélisation supplémentaires suggèrent que BBWC + aucune barrière ne peut conduire à une corruption non détectée avec tout planificateur d'E / S autre que NOOP (je pourrais me tromper à ce sujet mais j'ai essayé très fort de trouver des preuves pour suggérer le contraire). Voir aussi symcbean.blogspot.co.uk/2014/03/…
symcbean

Réponses:


34

Sûr. J'ai eu un cache sauvegardé par batterie (BBWC) et plus tard un cache d'écriture sauvegardé par flash (FBWC) protège les données en vol après les plantages et les coupures de courant soudaines.

Sur les serveurs HP ProLiant, le message typique est:

POST Error: 1792-Drive Array Reports Valid Data Found in Array Accelerator

Ce qui signifie, " Hé, il y a des données dans le cache d'écriture qui ont survécu au redémarrage / à la perte de puissance !! Je vais les réécrire sur le disque maintenant !! "

Un cas intéressant était mon post-mortem d'un système qui a perdu de la puissance pendant une tornade , la séquence du tableau était:

POST Error: 1793-Drive Array - Array Accelerator Battery Depleted - Data Loss
POST Error: 1779-Drive Array Controller Detects Replacement Drives
POST Error: 1792-Drive Array Reports Valid Data Found in Array Accelerator

L'erreur 1793 POST est unique. - Pendant que le système était en cours d'utilisation, l'alimentation a été interrompue alors que les données se trouvaient dans la mémoire de l'accélérateur RAID. Cependant, en raison du fait qu'il s'agissait d'une tornade, l'alimentation n'a pas été rétablie dans les quatre jours, de sorte que les batteries de la baie ont été épuisées et les données à l'intérieur ont été perdues. Le serveur avait deux contrôleurs RAID. L'autre contrôleur avait une unité FBWC, qui dure beaucoup plus longtemps qu'une batterie. Ce lecteur a récupéré correctement. Une corruption de données s'est produite sur la baie, soutenue par la batterie vide.


Malgré l'abondance de la batterie dans l'installation, quatre jours sans alimentation et dans des conditions dangereuses, il a été impossible pour quiconque d'arrêter les serveurs en toute sécurité. entrez la description de l'image ici


5
Très instructif, bon travail pour garder ces sorties aussi longtemps.
deed02392

Intéressant! Je me demande si HP prévoit d'inclure dans les contrôleurs Smart Arrays le même cache sans batterie qu'ils ont mis dans le P2000
Gabriel Talavera

4
@GabrielTalavera Oui, HP utilise un cache à mémoire flash (condensateurs) depuis 2010 environ. Plus de piles.
ewwhite

Même chose ici avec Adaptec;) Plus de soucis et de remplacements réguliers.
TomTom

Merci ewwhite - exactement le genre de chose que je recherche. Une question: qu'est-il advenu de l'alimentation UPS? Votre UPS ne fait-il pas tomber le système lorsqu'il est bas?
symcbean

10

Oui, avait ce cas.

Serveur "sans UPS" dans un centre de données (le centre de données ayant un UPS). Échec de la PDU - le système est tombé en panne. Aucune perte de données.

Et c'est tout. La bonne chose à propos d'un BBWC est qu'il est dans la machine. Ayez un UPS - croyez-moi, parfois quelqu'un fait quelque chose de stupide (comme tirer le mauvais câble). Un onduleur est externe. Oh, ce câble;)


Merci TomTom. Il vous permet donc de faire avancer vos données vers la barrière suivante au lieu de les restaurer vers la précédente (sauf si vous n'utilisez pas de journalisation ou de journalisation des systèmes de fichiers structurés). C'est l'un des points clés que j'essaie d'évaluer ici. Il semblerait donner une rétention légèrement meilleure pour un rôle de serveur de fichiers, mais n'aide pas avec l'intégrité du système de fichiers ou de la base de données OLTP.
symcbean

En fait, il le ferait - OLTP est structuré pour gérer les pannes d'alimentation du serveur avec élégance tant que les écritures du journal sont écrites de manière précise;) Et comme la vitesse des E / S du journal est limitée, les «fausses écritures» (signalées par le contrôleur de raid) donnent de la vitesse - mais au risque de perte de données, sauf si vous disposez d'un cache non volatile.
TomTom

Je note que RedHat est d'avis que vous devriez désactiver les barrières avec BBWC - bien que cela améliore les performances, il n'offre aucune protection en cas de panne soudaine telle qu'une perte de puissance - erk! access.redhat.com/site/documentation/en-US/…
symcbean

@symcbean Vous ne devriez pas avoir de coupure de courant soudaine dans votre environnement. C'est l'une des situations les plus faciles à éviter. Pourquoi faire fonctionner votre serveur comme de la merde 100% du temps pour une occurrence relativement peu fréquente?
ewwhite

1
En réalité, toute la raison pour laquelle un BBWC existe est d'atténuer le problème d'une perte de puissance soudaine. Par conséquent, il est normal de n'avoir aucune barrière.
TomTom

4

J'ai eu 2 cas où le cache sauvegardé par batterie dans les contrôleurs RAID HW a échoué complètement (dans 2 sociétés distinctes).

La BBC s'appuie sur l'idée sans surprise que la batterie fonctionne. Le hic, c'est qu'à un moment donné, la batterie du contrôleur échoue et ce qui est dévastateur, c'est que dans de nombreux contrôleurs de raid HW, il échoue silencieusement . Nous pensions avoir un cache protégé contre les coupures de courant, mais nous ne l'avons pas fait.

En cas de perte d'alimentation, la perte de données de la matrice RAID était si importante que tout le contenu du disque était rendu irrécupérable. Tout était perdu. L'un des cas impliquait une machine entièrement dédiée aux tests, mais quand même.

Après cela, j'ai dit "plus jamais", je suis passé à la mise en miroir de disques basée sur logiciel (mdadm) dans Linux + fs basé sur le journal qui a une résilience décente contre la perte de puissance (ext4) et n'a jamais regardé en arrière. Certes, je l'ai utilisé sur des serveurs qui n'avaient pas une utilisation IO extrêmement élevée.


Merci JD: bien que ce ne soit pas précisément ce que je demandais, je peux voir que cela a beaucoup de pertinence avec les hypothèses que les gens font à propos de BBWC. Il fait entrer en résonance avec beaucoup de discussion sur le matériel vs RAID logiciel, je pense que je devrais pont pour la postérité que le RAID logiciel n'empêche l'utilisation d'un contrôleur de mise en cache (volatile ou autre).
symcbean

Les cartes de raid IME, Dell et HP se plaindront (en supposant que vous avez un système de surveillance approprié) de batteries défaillantes dans un BBWC.
mfinni

Les procédures appropriées pour BBWC doivent inclure des tests de batterie - par exemple, les contrôleurs 3ware vous avertiront si la batterie n'a pas été testée pendant un certain temps, et il est facile de tester que la batterie est toujours en bonne santé (le seul inconvénient est que le cache d'écriture est désactivé pendant le test).
iustin

4

Cela semble nécessiter une deuxième réponse à la question ...

Je viens de faire perdre à un hôte autonome VMware ESXi un disque dans une matrice RAID 5. La baie dégradée a eu un impact sur les performances au niveau de la machine virtuelle et de l'application.

Smart Array P410i in Slot 0 (Embedded)    (sn: 5001438011138950)

   array A (SAS, Unused Space: 0  MB)

      logicaldrive 1 (1.6 TB, RAID 5, Recovering, 42% complete)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, Rebuilding)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 300 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 300 GB, OK, spare)

Le responsable informatique de cette entreprise ne savait pas qu'un disque était tombé en panne et avait réinitialisé le serveur ( pour le rendre encore meilleur? ).

L'effet intéressant de le faire sur une baie compromise avec des machines virtuelles occupées exécutées au sommet était le suivant:

Détails de l'état du cache: le contrôleur de baie actuel avait des données valides stockées dans son cache d'écriture soutenu par la batterie / le condensateur lors de sa dernière réinitialisation ou de sa mise sous tension. Cela indique que le système n'a peut-être pas été arrêté correctement. Le contrôleur RAID a automatiquement écrit ou tenté d'écrire ces données sur les disques. Ce message continuera à s'afficher jusqu'à la prochaine réinitialisation ou redémarrage du contrôleur RAID.

Ainsi, même si le système a été interrompu brusquement, les données en vol ont été protégées par le BBWC. Les machines virtuelles ont toutes récupéré correctement et le système est maintenant en bon état.


3

En plus de "sauvegarder vos données", ils sont bons pour d'autres choses. Ils sont également bons pour mettre en mémoire tampon les écritures (dans le cache) afin d'améliorer les performances du sous-système d'E / S en gardant la file d'attente d'écriture sur disque faible. Ceci est particulièrement important pour les serveurs où les performances interactives sont primordiales - par exemple, Citrix XenApp ou Windows Terminal Services.

Ceci est moins important pour un serveur Web ou un serveur de fichiers. Vous pourriez ne pas remarquer ou même être habitué à un petit décalage. Cependant, lorsque vous cliquez sur une icône dans une application Office, vous vous attendez à une réactivité. Et votre PDG aussi.


"Je sais ce que doit faire un BBWC (cache d'écriture avec batterie)"
symcbean

2
Vous avez également déclaré: "Je suis curieux de savoir si cela offre réellement un réel avantage dans la pratique". Je vous en ai donné (et aux futurs lecteurs) un exemple concret. D'après votre question, il n'était pas du tout clair que vous connaissiez cet avantage. Et ma réponse n'est pas fausse.
mfinni

Alors, comment les points que vous avez soulevés diffèrent-ils d'un cache d'écriture volatile?
symcbean

De toute évidence, c'était la caractéristique que vous connaissiez. Mais encore une fois, vous n'avez pas précisé cela. @mfinni est juste utile.
deed02392

Certains systèmes ne vous permettent pas d'activer un cache d'écriture volatile, il y a donc cela. Mais non, si vous ne vous souciez pas des données et que vous pouvez utiliser un cache d'écriture volatile, allez-y.
mfinni
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.