我想知道BBU的目的是什么。我的第一个理解是,它使缓存能够在电源故障期间将数据写入磁盘。但是一些规范指出,BBU可以将其数据保存72h。我希望在毫秒内将数据写入磁盘(给定的话,磁盘仍然有能力)。
那么,BBU不应该仅仅保护缓存,还应该保护整个磁盘几秒钟吗?难道这不是更安全吗,因为缓存数据是写到磁盘上的,而不是在缓存中等待再次供电吗?再过一秒钟左右,光盘就可以关闭了。
发布于 2011-11-08 14:15:57
它的工作方式如下:
大多数操作系统都有一个系统调用,允许所谓的“同步写入”。这意味着在写操作期间,如果写已经完成,那么就保证它被提交到磁盘。
因此,同步写入是非缓存的。它阻止应用程序,直到它完成为止。这种操作显然比缓存的写入要慢,后者将数据保存在OS内存中,直到磁盘足够空闲,然后再写入数据。
一些关键软件,如数据库软件,对关键数据执行同步写入,因为在发生停电的情况下,半书面更新可能会损害数据库的完整性。
RAID控制器以RAID-5写入速度慢而闻名,因此,如果应用程序软件使用大量同步写入,则这将成为一个问题。由于这个原因,RAID-5控制器配备了自己的缓存。
RAID控制器所做的是将数据写到缓存中,然后向操作系统撒谎,告诉它它将数据提交到磁盘,而数据实际上仍然在RAID缓存中。
但是,如果当数据仍然在RAID控制器的缓冲器中时失去了电源,怎么办?你的磁盘上会有半写且可能不一致的数据。
您可能会说,这种行为违背了同步写入的目的。如果有一个缓存的写是可以的,那么应用软件一开始就不会要求同步写。
折中之处在于: RAID控制器仍然存在于它将数据提交到磁盘的操作系统上,但是为了在发生电源故障时保护这些关键数据,RAID控制器有一个电池,在恢复电源之前将缓存保持一段时间。
因此,在电源恢复和磁盘旋转并初始化之后,由于电池的作用,控制器的缓存中仍然有这些数据,并且可以完成将事务写入磁盘。
大家都很开心。
这就是为什么RAID控制器通常不会让您启用写缓存,除非您有一个功能良好的电池单元。
发布于 2010-02-19 10:22:53
值得一提的是,一些较新的磁盘控制器现在配备了高速闪存,比通常的72小时保存数据的时间长得多,它通常也要大得多(~1GB)。如果你需要部分细节,请告诉我。
发布于 2010-02-19 12:23:09
将BBU缓存看作是在日志文件系统提供的保护上添加了类似级别的保护。它的存在是为了允许事务(在本例中是简单的写操作)在被电源故障中断时完成。一旦电源下降,控制器就不能继续写入,因为这将导致完全不可预测的结果。相反,只要能够保存数据,如果/当电力恢复时,它就会完成数据的写入。它所不做的是像一个UPS的驱动器。
https://serverfault.com/questions/114547
复制相似问题