什么是(raid-controller-)BBU?

tan*_*ius 14 raid hardware-raid controller bbu

我想知道 BBU 的目的是什么。我的第一个理解是,它使缓存能够在断电期间将数据写入磁盘。但是一些规范说 BBU 可以保存其数据长达 72 小时。我希望数据能在几毫秒内写入光盘(假设光盘仍然有电)。

那么,BBU 是否应该不仅保护缓存,还要保护整个磁盘几秒钟?这不是更安全,因为缓存数据被写入磁盘而不是在缓存中等待再次通电吗?大约一秒钟后,光盘可以关闭。

Con*_*lls 20

它不为磁盘供电,它只是将数据保存在缓存中(在这种情况下)长达 72 小时,直到您将机器重新联机。当您重新启动机器时,它会将缓存的内容写回磁盘。

它所做的只是防止电源故障。如果(由于某种原因)机器断电而没有将数据干净地刷新到磁盘,则电池会保持缓存内容处于活动状态,直到您可以重新启动机器。

它不是用于磁盘的 UPS,因为磁盘可能位于外部磁盘阵列中,甚至位于不同的电源电路上。即使是 UPS 也可能发生故障。


小智 15

它是这样工作的:

大多数操作系统都有一个允许所谓的“同步写入”的系统调用。这意味着在写入操作期间,如果写入已完成,则可以保证它已提交到磁盘。

因此同步写入是非缓存的。它会阻止应用程序,直到它完成。这种操作显然比缓存写入慢,缓存写入将数据保存在操作系统内存中,直到磁盘足够空闲,然后再写入数据。

一些关键软件(例如数据库软件)对关键数据执行同步写入,因为断电情况下的半写入更新可能会损害数据库的完整性。

RAID 控制器在使用 RAID-5 写入时非常慢,因此如果您的应用程序软件使用大量同步写入,这就会成为一个问题。因此,RAID-5 控制器配备了自己的缓存。

RAID 控制器的作用是将数据写入其缓存,然后向操作系统 LIES,告诉它它已将数据提交到磁盘,而数据实际上仍在 RAID 缓存中。

但是,如果数据仍在 RAID 控制器的缓冲区中时断电怎么办?您的磁盘上会写入一半且可能不一致的数据。

您可能会说这种行为违背了同步写入的目的……如果可以缓存写入,那么应用软件一开始就不会要求同步写入。

妥协是这样的:RAID 控制器仍然依赖操作系统将数据提交到磁盘,但为了在断电时保护这些关键数据,RAID 控制器有一块电池可以让缓存保持活动一段时间,直到断电恢复了。

因此,在电源恢复并且磁盘旋转并初始化之后,由于电池,控制器仍然在其缓存中保存该数据,并且可以完成将您的事务写入磁盘。

每个人都很高兴。

这就是为什么 RAID 控制器通常不会让您启用写入缓存的原因,除非您有一个功能正常且已充电的电池单元。