我对 RAID 5、BBWC(电池支持的写缓存)、文件系统(ext3)以及可选的 mysql 有几个问题。
我有一个假设并请求 Server Fault 社区验证这个假设:
- 系统已启动,应用程序与数据库协同工作并使用事务
- RAID 系统配置有 RAID5、写入缓存和电池 (BBWC)
使用此解决方案,当操作系统收到写入 ACK 时,数据可能位于 RAID 控制器缓存中,而不是持久存储器(我的 RAID 驱动器磁盘)中。
如果发生电源故障,且数据位于 RAID 控制器缓存中,BBWC 将使用电池组保存数据。在此之前,一切都很好。
但电池容量是一定的,不是无限的,如果断电时间超过两三天,RAID缓存就会丢失。
对我来说这是一个戏剧性的、并且很可能发生的场景。
我的问题是:
- ext3 能解决这个问题吗?可能不能
- mysql 数据库有可能被损坏吗?
- Mysql 事务丢失了?我认为是这样
硬件:惠普 DL380 G7
操作系统:使用 ext3 的 Centos 5
答案1
是的,这就是电池供电的写入缓存的局限性——如果电池耗尽,未写入的数据将无法使用。这就是我更喜欢较新的基于 NVRAM 的 RAID 控制器的原因。文件系统无法帮助您,因为它们认为数据已被写入——它们最多可以提供数据的一致视图,而不能确保数据是最新的。
答案2
您预计会有多少次停电/断电?电池的使用寿命为几天。但是,自 G7 ProLiant 服务器以来,使用闪存备份缓存 (FBWC) 单元变得越来越流行。如果您的Smart Array P410 控制器还没有。此处更详细地描述了该技术FBWC 单元中的超级电容器的作用是提供足够的电力将写入缓存内容写入闪存,这些内容将一直存在,直到系统电源恢复。另一个好处是无需处理和丢弃电池。因此,从制造商的角度来看,推广使用闪存而不是老式电池是有利的。
我认为,停电时间长到电池寿命成为问题还意味着还有其他基础设施问题需要担心。如果在这段时间内没有人在现场提供电力救援,情况也是如此。明智的建议是使用可靠的 UPS 解决方案保护您的系统。
至于缓存中任何时候包含的数据量,通常很小。您的情况是缓存可能为 512MB 或 1024MB。随机和流式写入需要在那里停留足够长的时间,直到它们被刷新到磁盘。在任何时候,您可能都在查看几兆字节的数据。在突然崩溃导致缓存数据丢失(RAID 电池故障)后,我还没有遇到过重大损坏。除非您的系统的写入模式异常繁重,并且您同时以意外的方式断电……(如雷击),否则这对您来说可能不是问题。不过,ext3 非常有弹性。
答案3
您应该购买 UPS,这样服务器就可以正常关闭,BBWC 就完全不需要使用了。即使是相对较小的 UPS 也可以提供几分钟的关机时间,这通常足以将这些缓存刷新到磁盘。
虽然我认为大多数人会同意 UPS 是一个更好的主意,但 Flash Backed Write Caches 可以提供帮助。
更昂贵的选择:如果您经常遇到 3 天以上的停电,您可能需要考虑购买发电机。我发现这种情况非常罕见,但我知道您住在大西洋彼岸。
答案4
感谢您的回复。我知道其他替代方案,例如 FBWC,但我的问题是基于我的场景:
在我的工作中,我们已经部署了这个解决方案,并且我必须预见到问题。
您是否认为 mysql 可能会损坏并拒绝在我的场景中启动?