首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(raid控制器-) BBU是用来做什么的?

(raid控制器-) BBU是用来做什么的?
EN

Server Fault用户
提问于 2010-02-19 08:54:55
回答 6查看 59.5K关注 0票数 14

我想知道BBU的目的是什么。我的第一个理解是,它使缓存能够在电源故障期间将数据写入磁盘。但是一些规范指出,BBU可以将其数据保存72h。我希望在毫秒内将数据写入磁盘(给定的话,磁盘仍然有能力)。

那么,BBU不应该仅仅保护缓存,还应该保护整个磁盘几秒钟吗?难道这不是更安全吗,因为缓存数据是写到磁盘上的,而不是在缓存中等待再次供电吗?再过一秒钟左右,光盘就可以关闭了。

EN

回答 6

Server Fault用户

发布于 2011-11-08 14:15:57

它的工作方式如下:

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

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

一些关键软件,如数据库软件,对关键数据执行同步写入,因为在发生停电的情况下,半书面更新可能会损害数据库的完整性。

RAID控制器以RAID-5写入速度慢而闻名,因此,如果应用程序软件使用大量同步写入,则这将成为一个问题。由于这个原因,RAID-5控制器配备了自己的缓存。

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

但是,如果当数据仍然在RAID控制器的缓冲器中时失去了电源,怎么办?你的磁盘上会有半写且可能不一致的数据。

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

折中之处在于: RAID控制器仍然存在于它将数据提交到磁盘的操作系统上,但是为了在发生电源故障时保护这些关键数据,RAID控制器有一个电池,在恢复电源之前将缓存保持一段时间。

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

大家都很开心。

这就是为什么RAID控制器通常不会让您启用写缓存,除非您有一个功能良好的电池单元。

票数 15
EN

Server Fault用户

发布于 2010-02-19 10:22:53

值得一提的是,一些较新的磁盘控制器现在配备了高速闪存,比通常的72小时保存数据的时间长得多,它通常也要大得多(~1GB)。如果你需要部分细节,请告诉我。

票数 4
EN

Server Fault用户

发布于 2010-02-19 12:23:09

将BBU缓存看作是在日志文件系统提供的保护上添加了类似级别的保护。它的存在是为了允许事务(在本例中是简单的写操作)在被电源故障中断时完成。一旦电源下降,控制器就不能继续写入,因为这将导致完全不可预测的结果。相反,只要能够保存数据,如果/当电力恢复时,它就会完成数据的写入。它所不做的是像一个UPS的驱动器。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/114547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档