À quoi sert un BBU (contrôleur de raid)?

13

Je me demande quel est le but d'une BBU. Ma première compréhension a été qu'il permet au cache d'écrire les données sur le disque lors d'une panne de courant. Mais certaines spécifications disent qu'un BBU peut conserver ses données jusqu'à 72h. Je m'attendrais à ce que les données soient écrites sur le disque en quelques millisecondes (étant donné que le disque est toujours aussi alimenté).

Un BBU devrait-il donc non seulement protéger le cache, mais le disque entier pendant quelques secondes également? Cela ne serait-il pas encore plus sûr, car les données du cache sont écrites sur le disque au lieu d'être dans le cache et d'attendre à nouveau l'alimentation? Après environ une seconde, le disque pourrait être arrêté.

tanascius
la source
Bien que les batteries RAID n'alimentent pas les disques réels, il y a quelque chose dans notre monde qui ressemble à ce que vous aviez imaginé à l'origine: certains SSD de qualité serveur ont des "supercondensateurs" qui fournissent une alimentation de secours pour valider les écritures mises en cache pendant les millisecondes après une panne de courant.
Skyhawk

Réponses:

17

Il n'alimente pas les disques, il conserve simplement les données dans le cache pendant (dans ce cas) jusqu'à 72 heures jusqu'à ce que vous remettiez la machine en ligne. Lorsque vous remettez la machine sous tension, elle réécrit le contenu du cache sur les disques.

Il ne fait que protéger contre une panne de courant. Si (pour une raison quelconque) la machine perd de l'énergie sans vider proprement les données sur le disque, la batterie maintient le contenu du cache en vie jusqu'à ce que vous puissiez redémarrer la machine.

Ce n'est pas un onduleur pour disques, car les disques peuvent se trouver dans une matrice de disques externe, ou même sur un circuit d'alimentation différent. Même un onduleur pourrait échouer.

ConcernedOfTunbridgeWells
la source
1
Donc, la différence avec un onduleur pour disques est qu'il est conçu pour un scénario où les disques ne sont pas sur le même circuit d'alimentation? Dans tous les autres cas (contrôleur et disques dans un même circuit), un onduleur serait supérieur? Je préférerais toujours que les dernières commandes soient écrites sur le disque au lieu d'attendre dans le cache lors d'une panne de courant.
tanascius
Alors achetez également un onduleur pour votre serveur! Une BBU n'a pas assez de puissance pour exécuter un ensemble de disques. Il vous donne une fenêtre suffisamment grande pour vous permettre de rétablir le courant et de sauvegarder les modifications. La plupart des pannes sont très courtes et la plupart des gens n'ont pas besoin des frais supplémentaires d'un onduleur pour les machines non vitales.
JamesRyan
1
La BBU ne fait que conserver les données dans le cache jusqu'à ce que vous redémarriez l'ordinateur. Le contrôleur sait ce qui a été vidé sur le disque (le disque signale que l'opération est terminée). Tout ce qui n'est pas vidé sur le disque est conservé jusqu'au redémarrage de la machine.
ConcernedOfTunbridgeWells
13

Cela fonctionne comme ceci:

La plupart des systèmes d'exploitation ont un appel système qui permet une «écriture synchrone». Cela signifie que pendant une opération d'écriture, si une écriture est terminée, il est garanti qu'elle a été validée sur le disque.

L'écriture synchrone n'est donc pas mise en cache. Il bloque l'application jusqu'à ce qu'elle soit terminée. Ce type d'opération est évidemment plus lent que l'écriture en cache qui conserve les données dans la mémoire du système d'exploitation jusqu'à ce que le disque soit suffisamment inactif, puis écrit les données.

Certains logiciels critiques, tels que les logiciels de base de données, effectuent des écritures synchrones pour les données critiques, car une mise à jour à moitié écrite en cas de panne de courant peut nuire à l'intégrité de la base de données.

Les contrôleurs RAID sont notoirement lents avec les écritures RAID-5, donc cela devient un problème si votre logiciel d'application utilise beaucoup d'écritures synchrones. Pour cette raison, les contrôleurs RAID-5 sont équipés de leurs propres caches.

Ce que fait le contrôleur RAID, c'est qu'il écrit les données dans son cache à la place et se trouve sur le système d'exploitation, lui disant qu'il a validé les données sur le disque alors que les données sont en fait toujours dans le cache RAID.

Mais que se passe-t-il si l'alimentation est perdue alors que les données sont encore dans la mémoire tampon du contrôleur RAID? Vous auriez des données à moitié écrites et probablement incohérentes sur vos disques.

Vous pouvez dire que ce comportement va à l'encontre du but d'une écriture synchrone ... s'il était correct d'avoir une écriture en cache, le logiciel d'application ne demanderait pas une écriture de synchronisation en premier lieu.

Le compromis est le suivant: le contrôleur RAID repose toujours sur le système d'exploitation sur lequel il a validé les données sur le disque, mais pour protéger ces données critiques en cas de panne de courant, le contrôleur RAID dispose d'une batterie qui maintient le cache en vie pendant un certain temps jusqu'à ce que l'alimentation soit coupée. restauré.

Ainsi, après le retour de l'alimentation et la rotation et l'initialisation des disques, le contrôleur a toujours ces données dans son cache grâce à la batterie et peut terminer l'écriture de votre transaction sur le disque.

Tout le monde est content.

C'est pourquoi les contrôleurs RAID ne vous permettent généralement pas d'activer le cache d'écriture sauf si vous disposez d'une batterie fonctionnelle et chargée.

Terlisimo
la source
Je voudrais demander l'emplacement du contrôleur. Fait-il partie de la carte mère ou est-il intégré au disque dur?
Valentin Tihomirov
De plus, j'aimerais savoir comment le système d'exploitation peut envoyer une proper shutdowndemande si le RAID lui appartient lors du vidage?
Valentin Tihomirov
@ValentinTihomirov Il n'y a pas une telle chose comme properou l' improperarrêt. Le système d'exploitation émet un signal de mise hors tension et le bloc d'alimentation le fait, après la mise hors tension. Lorsque l'alimentation est coupée, la mémoire volatile et tout son contenu sont perdus!
PF4Public
4

Il convient de mentionner que certains contrôleurs de disque plus récents sont désormais dotés d'un cache flash haute vitesse qui conserve les données beaucoup plus longtemps que les 72 heures habituelles, il est souvent beaucoup plus volumineux (~ 1 Go). Si vous avez besoin de détails sur les pièces, faites-le moi savoir.

Chopper3
la source
Merci pour l'info, mais je ne suis pas administrateur système et je ne concevrai probablement jamais de RAID professionnel ... Je suis simplement curieux de connaître le BBU :)
tanascius
3

Considérez ce cache BBU comme ajoutant un niveau de protection similaire à celui offert par un système de fichiers journalisé. Il est là pour permettre aux transactions, simples écritures dans ce cas, de se terminer si elles sont interrompues par une panne de courant. Une fois l'alimentation coupée, le contrôleur ne peut pas continuer à écrire, car cela entraînerait des résultats complètement imprévisibles. Au lieu de cela, il conserve les données aussi longtemps qu'il le peut et finira de les écrire si / quand l'alimentation reprend. Ce qu'il ne fait pas, c'est agir comme un onduleur pour les disques.

John Gardeniers
la source
Mais quand j'ai un onduleur pour les lecteurs + contrôleur - pourquoi ai-je besoin du BBU? Uniquement pour un scénario où l'onduleur tombe en panne, aussi?
tanascius le
Bonne question. Si vous savez que le serveur sera TOUJOURS fermé normalement, je ne suis pas convaincu non plus de la nécessité d'un BBU.
John Gardeniers
2
Un BBU est généralement utilisé pour les configurations de réécriture. Certains contrôleurs RAID ne permettent pas l'écriture différée sans BBU présent. Cependant, je pense que c'est probablement une mauvaise idée de supposer que votre serveur sera toujours arrêté correctement.
ConcernedOfTunbridgeWells
2

Obtenir cette batterie de 100 $ est un must, en particulier sur un serveur DB, même si les pannes de courant sont rares. Même si les transactions sont activées et que votre serveur perd de l'énergie avant que ces modifications aient quitté le cache et soient validées sur le disque, vous vous retrouverez avec une requête incomplète ou des données corrompues.

Andy
la source
1

Si votre serveur tombe en panne, se bloque ou que quelqu'un tire le câble d'alimentation, une BBU vous protégera des données corrompues ou perdues, si vous utilisez le cache d'écriture. L'utilisation d'un USV ne vous protège que contre les pannes de courant.

Si vous ne souhaitez pas utiliser le cache d'écriture, vous n'avez pas besoin d'un BBU.

JPS
la source
1

Une carte RAID peut avoir 1 Go de cache; même s'il n'est généralement pas entièrement utilisé pour un cache d'écriture, vous pouvez supposer qu'il stockera une longue file d'attente de données non écrites.

Les systèmes de fichiers et les bases de données supposent que leurs écritures synchrones ne sont pas réorganisées même en cas de panne de courant. Normalement, une écriture synchrone ne reviendra qu'une fois les données sur le disque, mais cela est relativement lent. Les cartes RAID améliorent les performances en regroupant les écritures plus petites et en les réorganisant pour qu'elles soient moins aléatoires.

S'il n'y avait pas de BBU, une panne de courant sous charge aurait des résultats désastreux, avec des écritures que la carte RAID avait promis d'être là en train d'être perdue (comme dans le cas d'un système de fichiers, vous pouvez avoir des références à un nouveau fichier ou répertoire, mais manque dit fichier ou répertoire, même si le système de fichiers a spécifiquement créé le nouveau fichier avant toute référence à celui-ci pour éviter cela), vous obligeant à restaurer à partir de sauvegardes ou simplement espérer que vos données ne sont pas trop mal gâchées. Pire encore, si quelqu'un a supprimé un fichier secret et que quelqu'un d'autre a créé un fichier lisible par le monde, il peut arriver que certains des contenus du fichier secret se trouvent dans le fichier lisible par le monde. Une fois que vous avez brisé les hypothèses sur lesquelles le système de fichiers est construit, tout est possible.

Supposer qu'un onduleur garantit une alimentation ininterrompue est naïf; que faire si la machine tombe en panne et que vous devez tirer sur le cordon d'alimentation, ou si quelqu'un trébuche dessus?

Les disques SATA grand public (et SSD) mettent parfois en cache les écritures synchrones également, mais leurs caches sont beaucoup plus petits et l'utilisation par le consommateur est moins exigeante, de sorte qu'ils peuvent généralement s'en tirer.

Les contrôleurs RAID modernes ont également un flash, dans lequel ils copient le contenu du cache d'écriture en cas de panne de courant, de sorte que la batterie n'a pas besoin de durer plus de quelques secondes.

Jussi Peltola
la source