
我想知道BBU的用途是什麼。我的第一個理解是,它使快取能夠在斷電期間將資料寫入光碟。但一些規範稱 BBU 最多可以保存資料 72 小時。我希望資料能在幾毫秒內寫入光碟(假設光碟仍然有電)。
那麼 BBU 不僅應該保護緩存,還應該保護整個光碟幾秒鐘嗎?這不是更安全嗎,因為快取資料被寫入光碟,而不是在快取中等待再次通電?大約一秒鐘後,光碟可能會關閉。
答案1
它不為磁碟供電,只是將資料保留在快取中(在本例中)長達 72 小時,直到您將電腦重新上線。當您重新啟動電腦時,它會將快取的內容寫回磁碟。
它所做的只是防止斷電。如果(由於某種原因)機器斷電而沒有將資料乾淨地刷新到磁碟,則電池會使快取內容保持活動狀態,直到您可以重新啟動機器。
它不是磁碟的 UPS,因為磁碟可能位於外部磁碟陣列中,甚至位於不同的電源電路上。即使 UPS 也可能發生故障。
答案2
它的工作原理如下:
大多數作業系統都有一個系統調用,允許所謂的「同步寫入」。這意味著在寫入操作期間,如果寫入已完成,則可以保證它已提交到磁碟。
因此,同步寫入是不被快取的。它會阻止應用程式直至完成。這種操作顯然比快取寫入慢,快取寫入將資料保留在作業系統記憶體中,直到磁碟夠空閒,然後再寫入資料。
一些關鍵軟體(例如資料庫軟體)會對關鍵資料執行同步寫入,因為斷電時的半寫入更新可能會損害資料庫完整性。
眾所周知,RAID 控制器的 RAID-5 寫入速度很慢,因此如果您的應用程式軟體使用大量同步寫入,這就會成為問題。因此,RAID-5 控制器配備了自己的快取。
RAID 控制器所做的是將資料寫入其緩存,並向作業系統撒謊,告訴作業系統已將資料提交到磁碟,而資料實際上仍在 RAID 快取中。
但是,如果當資料仍在 RAID 控制器的緩衝區中時斷電怎麼辦?您的磁碟上會有半寫入且可能不一致的資料。
您可能會說這種行為違反了同步寫入的目的......如果可以進行快取寫入,那麼應用程式軟體首先就不會要求同步寫入。
妥協是這樣的:RAID 控制器仍然向作業系統謊稱它已將數據提交到磁碟,但為了在發生電源故障時保護這些關鍵數據,RAID 控制器有一個電池,可以使快取保持活動一段時間,直到電源恢復為止。
因此,在電源恢復、磁碟旋轉並初始化後,由於電池的原因,控制器的快取中仍保留有該數據,並且可以完成將交易寫入磁碟。
每個人都很高興。
這就是為什麼 RAID 控制器通常不會讓您啟用寫入緩存,除非您有功能正常且已充電的電池單元。
答案3
值得一提的是,一些較新的磁碟控制器現在配備了高速閃存緩存,其保留資料的時間遠遠超過典型的 72 小時,而且通常也大得多(~1GB)。如果您需要零件詳細信息,請告訴我。
答案4
儘管電源故障很少見,但購買價值 100 美元的電池是必須的,尤其是在資料庫伺服器上。即使您啟用了交易,並且您的伺服器在這些變更離開快取並提交到磁碟之前斷電,您將留下不完整的查詢或損壞的資料。