AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 114547
Accepted
tanascius
tanascius
Asked: 2010-02-20 00:54:55 +0800 CST2010-02-20 00:54:55 +0800 CST 2010-02-20 00:54:55 +0800 CST

什么是(RAID 控制器)BBU?

  • 772

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

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

raid hardware-raid controller bbu
  • 7 7 个回答
  • 58193 Views

7 个回答

  • Voted
  1. Best Answer
    ConcernedOfTunbridgeWells
    2010-02-20T01:02:55+08:002010-02-20T01:02:55+08:00

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

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

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

    • 20
  2. Terlisimo
    2011-11-09T06:15:57+08:002011-11-09T06:15:57+08:00

    它是这样工作的:

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

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

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

    众所周知,RAID 控制器的 RAID-5 写入速度很慢,因此如果您的应用程序软件使用大量同步写入,这将成为一个问题。出于这个原因,RAID-5 控制器配备了自己的缓存。

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

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

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

    折衷方案是这样的:RAID 控制器仍然向操作系统谎称它已将数据提交到磁盘,但为了在电源故障的情况下保护这些关键数据,RAID 控制器有一个电池,可以让缓存保持活动一段时间,直到可以供电恢复。

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

    每个人都很高兴。

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

    • 15
  3. Chopper3
    2010-02-20T02:22:53+08:002010-02-20T02:22:53+08:00

    值得一提的是,一些较新的磁盘控制器现在配备了高速闪存缓存,可以将数据保留的时间远远超过典型的 72 小时,它通常也大得多(~1GB)。如果您需要零件详细信息,请告诉我。

    • 4
  4. John Gardeniers
    2010-02-20T04:23:09+08:002010-02-20T04:23:09+08:00

    将 BBU 缓存视为添加了与日志文件系统提供的类似级别的保护。它的存在是为了允许事务(在这种情况下为简单的写入)在电源故障中断时完成。一旦断电,控制器就无法继续写入,因为这将导致完全不可预测的结果。相反,它会尽可能长时间地保存数据,并在电源恢复时完成写入。它不做的是充当驱动器的 UPS。

    • 3
  5. user11350
    2010-02-20T01:28:41+08:002010-02-20T01:28:41+08:00

    获得 100 美元的电池是必须的,尤其是在数据库服务器上,即使电源故障很少见。即使您启用了事务,并且您的服务器在这些更改离开缓存并提交到磁盘之前断电,您也会留下不完整的查询或损坏的数据。

    • 2
  6. JPS
    2011-10-01T05:15:59+08:002011-10-01T05:15:59+08:00

    如果您的服务器崩溃、挂起或有人拔掉电源线,如果您使用的是写入缓存,BBU 将保护您免受损坏或丢失的数据。使用 USV 只能保护您免受电源故障的影响。

    如果您不想使用 write-cache,则不需要 BBU。

    • 1
  7. Jussi Peltola
    2012-12-26T22:30:33+08:002012-12-26T22:30:33+08:00

    一张 RAID 卡可以有 1 GB 的缓存;尽管它通常不会全部用于写入缓存,但您可以假设它会存储相当长的未写入数据队列。

    文件系统和数据库假定它们的同步写入即使在电源故障的情况下也不会重新排序。通常同步写入只有在数据到磁盘后才会返回,但这相对较慢。RAID 卡通过将较小的写入分组在一起并将它们重新排序以减少随机性来提高性能。

    如果没有 BBU,负载下的电源故障将产生灾难性的后果,RAID 卡承诺的写入会丢失(例如在文件系统的情况下,您可能会引用新文件或目录,但缺​​少说文件或目录,即使文件系统在对它的任何引用之前专门创建了新文件以避免这种情况),要求您从备份中恢复或只是希望您的数据不会太糟糕。更糟糕的是,如果有人删除了一个秘密文件,而另一个人创建了一个世界可读文件,则可能会发生秘密文件的某些内容在世界可读文件中找到的情况。一旦你打破了构建文件系统的假设,一切皆有可能。

    假设 UPS 保证不间断电源是幼稚的;如果机器崩溃并且您需要拉电源线,或者有人绊倒它怎么办?

    消费级 SATA 磁盘(和 SSD)有时也会缓存同步写入,但它们的缓存要小得多,而且消费者的使用要求不高,因此他们通常可以侥幸逃脱。

    现代 RAID 控制器还具有闪存,它们在发生电源故障时会将写入缓存的内容复制到闪存中,因此电池的使用时间不会超过几秒钟。

    • 1

相关问题

  • Windows 文件服务器性能调优

  • SSD TRIM 的硬件 RAID 控制器支持

  • 了解磁盘队列长度

  • 使用混合磁盘突袭 0?

  • Windows Server 2008 Hyper-V 虚拟化服务器的最佳 RAID 配置?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve