A cosa serve una BBU (raid-controller-)?


13

Mi chiedo quale sia lo scopo di un BBU. La mia prima comprensione è stata che consente alla cache di scrivere i dati sul disco durante un'interruzione di corrente. Ma alcune specifiche dicono che un BBU può contenere i suoi dati fino a 72 ore. Mi aspetto che i dati vengano scritti sul disco entro millisecondi (dato che anche il disco ha ancora potenza).

Quindi una BBU non dovrebbe solo proteggere la cache, ma anche l'intero disco per alcuni secondi? Non sarebbe ancora più sicuro, perché i dati della cache vengono scritti sul disco invece di trovarsi nella cache e attendere di nuovo l'alimentazione? Dopo circa un secondo, il disco potrebbe essere spento.


Sebbene le batterie RAID non alimentino le unità reali, c'è qualcosa nel nostro mondo che ricorda quello che avevi inizialmente immaginato: alcuni SSD di livello server hanno "supercondensatori" che forniscono energia di backup per eseguire operazioni di scrittura nella cache durante i millisecondi in seguito a un'interruzione di corrente.
Skyhawk,

Risposte:


17

Non alimenta i dischi, mantiene solo i dati nella cache per (in questo caso) fino a 72 ore fino a quando non si riporta la macchina in linea. Quando si riavvia la macchina, i contenuti della cache verranno riscritti sui dischi.

Tutto ciò che fa è proteggere da un'interruzione di corrente. Se (per qualche motivo) la macchina perde energia senza scaricare i dati sul disco in modo pulito, la batteria mantiene in vita il contenuto della cache fino a quando non è possibile riavviare la macchina.

Non è un UPS per dischi, poiché i dischi potrebbero trovarsi in un array di dischi esterno o persino su un circuito di alimentazione diverso. Anche un UPS potrebbe fallire.


1
Quindi la differenza con un UPS per dischi è che è progettato per uno scenario in cui i dischi non si trovano sullo stesso circuito di alimentazione? In tutti gli altri casi (controller e dischi in un circuito) un UPS sarebbe superiore? Preferirei comunque che gli ultimi comandi vengano scritti sul disco invece di attendere nella cache durante un'interruzione di corrente.
Tanascius,

Quindi acquista anche un UPS per il tuo server! Una BBU non ha energia sufficiente per eseguire una serie di unità. Ti dà una finestra abbastanza grande per farti riaccendere e salvare le modifiche. La maggior parte delle interruzioni sono molto brevi e la maggior parte delle persone non ha bisogno delle spese aggiuntive di un UPS per macchine non vitali.
JamesRyan,

1
Tutto ciò che la BBU fa è mantenere i dati nella cache fino al riavvio del computer. Il controller sa cosa è stato scaricato su disco (il disco segnala che l'operazione è stata completata). Tutto ciò che non viene scaricato sul disco viene conservato fino al riavvio della macchina.
ConcernedOfTunbridgeWells,

13

Funziona così:

La maggior parte dei sistemi operativi ha una chiamata di sistema che consente una cosiddetta "scrittura sincrona". Ciò significa che durante un'operazione di scrittura, se una scrittura è stata completata, è garantito che è stato eseguito il commit su disco.

La scrittura sincrona non è quindi memorizzata nella cache. Blocca l'applicazione fino al completamento. Questo tipo di operazione è ovviamente più lenta della scrittura cache che mantiene i dati nella memoria del sistema operativo fino a quando il disco non è abbastanza inattivo e quindi scrive i dati.

Alcuni software critici, come il software di database, eseguono scritture sincrone per dati critici perché un aggiornamento semi-scritto in caso di interruzione dell'alimentazione può essere dannoso per l'integrità del database.

I controller RAID sono notoriamente lenti con le scritture RAID-5, quindi questo diventa un problema se il software applicativo utilizza molte scritture sincrone. Per questo motivo, i controller RAID-5 sono dotati di cache proprie.

Quello che fa il controller RAID è invece scrivere i dati nella sua cache e LIES nel sistema operativo, dicendo che ha eseguito il commit dei dati sul disco mentre i dati sono ancora nella cache RAID.

Ma cosa succede se l'alimentazione viene persa mentre i dati erano ancora nel buffer del controller RAID? Avresti dati scritti a metà e probabilmente incoerenti sui tuoi dischi.

Potresti dire che questo comportamento vanifica lo scopo di una scrittura sincrona ... se fosse ok avere una scrittura cache, il software dell'app non chiederebbe una scrittura sincronizzata in primo luogo.

Il compromesso è questo: il controller RAID sta ancora nel sistema operativo che ha impegnato i dati su disco, ma per proteggere questi dati critici in caso di interruzione dell'alimentazione, il controller RAID ha una batteria che mantiene la cache in vita per un po 'di tempo fino a quando l'alimentazione non può essere restaurato.

Quindi dopo il ripristino dell'alimentazione e l'avvio e l'inizializzazione dei dischi, il controller ha ancora quei dati nella sua cache grazie alla batteria e può finire di scrivere la transazione su disco.

Tutti sono felici.

Questo è il motivo per cui i controller RAID di solito non consentono di abilitare la cache di scrittura a meno che non si disponga di un'unità batteria funzionante e carica.


Vorrei chiedere la posizione del controller. Fa parte della scheda madre o è integrata nel disco rigido?
Valentin Tihomirov,

Inoltre, vorrei sapere come può il sistema operativo inviare una proper shutdownrichiesta se RAID si trova ad esso quando viene emesso flush?
Valentin Tihomirov,

@ValentinTihomirov Non esiste nulla di simile propero improperarresto. Il sistema operativo emette il segnale di spegnimento e l'alimentatore lo fa, dopo che l'alimentazione viene spenta. Quando l'alimentazione viene spenta, anche la memoria volatile e tutto il suo contenuto vengono persi!
PF4 Pubblico

4

Vale la pena ricordare che alcuni controller di disco più recenti ora dispongono di cache flash ad alta velocità che conserva i dati per molto più a lungo rispetto alle 72 ore tipiche, spesso è anche molto più grande (~ 1 GB). Se hai bisogno di dettagli sulle parti fammelo sapere.


Grazie per le informazioni, ma io non sono un amministratore di sistema e probabilmente non progetterò mai un RAID professionale ... Sono solo curioso del BBU :)
tanascius

3

Pensa a quella cache BBU come ad aggiungere un livello di protezione simile a quello offerto da un file system registrato su giornale. È lì per consentire che le transazioni, in questo caso semplici scritture, vengano completate se interrotte da un'interruzione di corrente. Una volta interrotta l'alimentazione, il controller non può continuare a scrivere, in quanto ciò comporterebbe risultati completamente imprevedibili. Al contrario, conserva i dati il ​​più a lungo possibile e finirà di scriverli se / quando l'alimentazione viene ripristinata. Ciò che non fa è agire come un UPS per le unità.


Ma quando ho un UPS per drive + controller - a cosa serve la BBU? Solo per uno scneario in cui anche l'UPS si guasta?
Tanascius,

Buona domanda. Se sai che il server verrà SEMPRE spento con garbo, non sono nemmeno convinto della necessità di un BBU.
John Gardeniers,

2
Una BBU è in genere spesso per le configurazioni write-back. Alcuni controller RAID non abiliteranno il write-back senza una BBU presente. Tuttavia, penso che sia probabilmente una cattiva idea presumere che il tuo server verrà sempre spento correttamente.
ConcernedOfTunbridgeWells il

2

Ottenere quella batteria da $ 100 è un must, soprattutto su un server DB, anche se le interruzioni di corrente sono rare. Anche se hai abilitato le transazioni e il tuo server perde potenza prima che tali modifiche abbiano lasciato la cache e siano impegnate sul disco, verrai lasciato con una query incompleta o con dati danneggiati.


1

Se il tuo server si arresta in modo anomalo, si blocca o qualcuno tira il cavo di alimentazione, una BBU ti proteggerà da dati corrotti o persi, se stai utilizzando la cache di scrittura. L'uso di un USV ti protegge solo dalle interruzioni di corrente.

Se non si desidera utilizzare la cache di scrittura, non è necessario un BBU.


1

Una scheda RAID può avere 1 GB di cache; anche se di solito non sarà tutto usato per una cache di scrittura, si può presumere che memorizzerà una lunga coda di dati non scritti.

I filesystem e i database presuppongono che le loro scritture sincrone non vengano riordinate anche in caso di mancanza di corrente. Normalmente una scrittura sincrona ritorna solo dopo che i dati sono sul disco, ma questo è relativamente lento. Le schede RAID migliorano le prestazioni raggruppando le scritture più piccole e riordinandole in modo che risultino meno casuali.

Se non ci fosse BBU, un'interruzione di corrente sotto carico avrebbe risultati disastrosi, con le scritture che la scheda RAID aveva promesso di essere persa (come nel caso di un filesystem, potresti avere riferimenti a un nuovo file o directory, ma la mancanza ha detto file o directory, anche se il filesystem ha creato specificamente il nuovo file prima di qualsiasi riferimento ad esso per evitarlo), richiedendo il ripristino dai backup o semplicemente sperando che i tuoi dati non siano troppo incasinati. Ancora peggio, se qualcuno ha eliminato un file segreto e qualcun altro ha creato un file leggibile in tutto il mondo, può accadere che parte del contenuto del file segreto venga trovato nel file leggibile in tutto il mondo. Una volta infranti i presupposti su cui si basa il filesystem, tutto è possibile.

Supponendo che un UPS garantisca che l'alimentazione ininterrotta sia ingenua; cosa succede se la macchina si arresta in modo anomalo e devi tirare il cavo di alimentazione o qualcuno inciampa su di esso?

I dischi (e SSD) SATA consumer talvolta memorizzano anche nella cache le scritture sincrone, ma le loro cache sono molto più piccole e l'uso del consumatore è meno impegnativo, quindi di solito possono cavarsela.

I moderni controller RAID hanno anche il flash, sul quale copiano il contenuto della cache di scrittura in caso di mancanza di corrente, quindi la batteria non deve durare più di qualche secondo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.