我想知道BBU的目的是什么。 我的第一个理解是,它允许caching在电源故障期间将数据写入光盘。 但有些规格说BBU可以保存72小时的数据。 我希望数据可以在几毫秒内写入光盘(因为光盘还有电源)。
所以BBU不仅要保护caching,还要保护整个光盘几秒钟? 难道这不是更安全,因为caching数据写入光盘,而不是在caching中,并再次等待电源? 一秒钟左右后,光盘可以closures。
它不会为磁盘供电,它只会将数据保存在caching中(在这种情况下)达72小时,直到您重新启动机器。 当您重新启动计算机时,它会将caching内容写回磁盘。
它所做的就是防止停电。 如果(出于某种原因)机器断电而没有将数据清除到磁盘上,则电池会保持高速caching内容一直存在,直到您可以重新启动机器。
它不是用于磁盘的UPS,因为磁盘可能在外部磁盘arrays中,甚至在不同的电源电路上。 即使UPS可能会失败。
它是这样工作的:
大多数操作系统都有一个允许所谓的“同步写入”的系统调用。 这意味着在写入操作期间,如果写入已经完成,则保证它被提交到磁盘。
因此同步写入是非caching的。 它阻止应用程序,直到它完成。 这种操作明显比caching写操作要慢,该操作将数据保存在操作系统内存中,直到磁盘足够空闲,然后写入数据。
一些关键软件(如数据库软件)对关键数据执行同步写入,因为在掉电情况下进行半写更新可能会损害数据库的完整性。
RAID控制器在RAID-5写入方面速度慢,所以如果您的应用程序软件使用大量的同步写入,这将成为一个问题。 为此,RAID-5控制器配备了自己的caching。
RAID控制器所做的是将数据写入caching,并将其写入操作系统,告诉它将数据提交到磁盘,而数据实际上仍然在RAIDcaching中。
但是,如果数据仍然在RAID控制器的缓冲区中,电源是否会丢失呢? 你的磁盘上有一半的数据可能是不一致的。
您可能会说这种行为违背了同步写入的目的…如果可以使用caching写入,则应用软件首先不会要求同步写入。
妥协是这样的:RAID控制器仍然在操作系统,它将数据提交到磁盘,但为了保护这个关键的数据在电源故障的情况下,RAID控制器有一个电池,保持高速caching存活一段时间,直到电源可以恢复。
因此,在电源恢复之后,磁盘启动并初始化,控制器仍然在caching中拥有该数据,这要归功于电池,并且可以将您的事务写入磁盘。
大家都开心
这就是为什么RAID控制器通常不会让你启用写入caching,除非你有一个function和充电电池单元。
值得一提的是,一些较新的磁盘控制器现在提供高速闪存caching,保存数据的时间比典型的72小时长得多,通常也相当大(〜1GB)。 如果你需要零件的细节让我知道。
将BBUcaching看作是为日志文件系统所提供的保护添加了类似的保护级别。 在这种情况下,为了允许交易,在这种情况下简单的写入,如果它们由于电源故障而中断,那么就完成了。 一旦电力下降,控制器不能继续写入,因为这将导致完全不可预知的结果。 相反,它会保存数据,只要它能够,并且会在恢复供电时完成写入。 它不能做的就像驱动器的UPS一样。
获得这100美元的电池是必须的,特别是在数据库服务器上,即使电源故障很less。 即使启用了事务 ,并且在这些更改离开caching并提交到磁盘之前服务器断电,您仍将留下不完整的查询或损坏的数据。
如果您的服务器崩溃,挂起或有人拉动电源线,BBU将保护您免受损坏或丢失的数据,如果您正在使用写caching。 使用USV只能保护您免受电力故障。
如果您不想使用写caching,则不需要BBU。
RAID卡可以有1 GB的caching; 即使通常不会全部用于写入caching,但您可以假设它将存储相当长的未写入数据队列。
文件系统和数据库假定即使在电源故障的情况下,它们的同步写入也不会重新sorting。 通常情况下,同步写入只会在数据在磁盘上后才会返回,但是这相对较慢。 RAID卡通过将较小的写入分组在一起并将其重新sorting以减less随机性,从而提高了性能。
如果没有BBU,负载下的电源故障会导致灾难性的结果,写入的RAID卡已承诺丢失(如在文件系统的情况下,您可能有一个新的文件或目录的引用,但缺乏说文件或目录,即使文件系统在引用之前专门创build了新文件以避免这种情况),要求您从备份中还原,或者希望数据不会太糟糕。 更糟糕的是,如果有人删除了一个秘密文件,而其他人创build了一个世界可读的文件,则可能发生秘密文件的一些内容在世界上可读的文件中。 一旦你打破了文件系统build立的假设,任何事情都是可能的。
假设UPS保证不间断电源是天真的; 如果机器崩溃,你需要拉动电源线,或者有人绊倒它呢?
消费类SATA磁盘(和固态硬盘)有时也会caching同步写入,但是它们的高速caching要小得多,消费者的使用也不那么苛刻,所以通常可以避开它。
现代RAID控制器也具有闪存,在发生电源故障时,它们将写入caching的内容复制到闪存中,所以电池不需要持续超过几秒钟。