这有点冗长,所以请耐心等待。:)
我们有一个由 3 台 Oracle 11gR2 服务器组成的 RAC 集群,并为这些服务器购买了 FusionIO ioDrive2 PCIx 卡,用作 OracleDB 的闪存缓存。这些服务器运行我们的生产数据库实例和一个较小的开发数据库。我们希望将这两个实例都配置为使用这些设备作为闪存缓存,而开发数据库的大小要小得多。
据我了解,只有 1 个设备可以配置为 Flash Cache 的目标。
同时,ioDrive2 设备还支持所谓的“虚拟控制器”。它基本上是将该设备一分为二,使 IOP 翻倍(总组合带宽保持不变)。
因此,将整个情况综合起来:我需要 2 个分区,每个数据库实例一个。如果我使用“虚拟控制器”,我将拥有 2 个大小相同的驱动器。
我正在考虑使用 LVM 将 2 个虚拟控制器合并为 1 个,然后为每个数据库对一个组合卷进行分区。
使用 LVM 会给我带来多少性能和管理开销?使用此设置时我应该注意哪些事项?有没有更好的方法来解决这种情况?
答案1
我正在使用另一款产品做类似的事情,但你希望做的事情实际上开销非常低。我使用的设备每个 PCIe 卡有四个“驱动器”,使用 MDRAID 将其转换为 RAID0 设备,然后我在其上分层 LVM,效果非常好。你会丢失一些元数据块,但内核中的 I/O 代码路径确实为此进行了很好的优化。
此处需要注意的是“RAID0”问题。我曾经遇到过其中一个虚拟“驱动器”发生故障的情况,这确实导致我丢失了整个卡(没关系,此服务旨在容忍整个节点故障)。我不知道 Oracle 的闪存缓存,所以我无法告诉您它是否能容忍此类故障。
答案2
我认为这里没有人能告诉你你将经历多少性能开销。这真的是A测试并观察情况。我假设在其他所有条件相同的情况下,性能会有所提升。
您对主机系统有任何规格要求吗?当我评估 FusionIO 以及跨多个 FusionIO Duo 卡 (软件) RAID 1+0 的需要时,我关注了主机服务器的 CPU、RAM 和系统板功能。如果您正在推动您似乎计划的 I/O,那么 CPU 方面将会产生影响。
另一个问题...这将解决什么问题?您真的只是想向数据库添加另一层存储吗?对于 RAC 集群,工作数据集是什么;例如,您使用的驱动器容量是多少?
您是否已经准备好一切并购买完毕?