我不知道如何最好地配置磁盘阵列。我们有惠普 P2000 G3磁盘阵列24 个 SAS 物理磁盘,每个 300Gb。我们需要配置这个阵列,因为两个系统不同,所以有 2 个 PostgreSQL 9.2 副本。我们知道,建议将数据库和事务日志 (pg_xlog) 文件存储在单独的磁盘上。
所以我们必须设置 4 个逻辑磁盘:
2 for transaction logs with RAID 1
2 for database with RAID 10
这是正确的分配方案吗?或者最好只用 4 个逻辑磁盘创建一个大的 RAID 10?
答案1
分离 xlogs 和主堆/索引的建议是为了减少磁盘刷新的影响。
对于高端设置来说,这应该不是必需的。如果您关心性能,则应该使用具有持久写回缓存(电池支持、闪存或混合)的 RAID 控制器,并采用写回缓存模式。这几乎可以完全消除同步刷新的成本,并允许您仅针对吞吐量进行优化。
这款 HP P2000 G3 磁盘阵列似乎标配 2GB 读/写缓存。确保它处于写回模式。
一般而言,对于 RAID 控制器和磁盘阵列,请务必购买并使用它回写缓存模块。无论它的价格是多少,它都会极大地提高阵列的写入性能,让您难以置信。
至于阵列布局,做出这些决定的最佳方法是对吞吐量进行基准测试。使用 PgBench(最好调整为模拟您的工作负载)和原始磁盘 I/O 基准测试。查看哪种阵列安排可以为您提供最佳吞吐量和最低同步延迟。
请记住考虑多个磁盘故障。RAID10 中的 2x8 磁盘阵列(8 个磁盘跨接,镜像一次)足够大,因此完全有可能出现双磁盘故障。您能承受停机时间吗?您是否会运行流式只读副本或 PITR 从属,以便在丢失阵列时不会丢失数据?计算故障概率并记住,任何双磁盘故障都有 50% 的可能性会破坏整个阵列。