我不知道如何最好地配置磁盘阵列。我们有Hp 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?
将 xlog 和主堆/索引分开的建议是减少磁盘刷新的影响。
对于更高端的设置,这应该不是必需的。如果您关心性能,您应该在回写缓存模式下使用具有持久回写缓存(电池供电、闪存或混合)的 RAID 控制器。这将几乎完全消除同步刷新的成本,并允许您单独优化吞吐量。
这个 HP P2000 G3 磁盘阵列标配 2GB 读/写缓存。确保它处于回写模式。
一般来说,对于 RAID 控制器和磁盘阵列,一定要购买回写缓存模块并使用它。不管它的成本是多少,它都会极大地提高阵列的写入性能,以至于您简直不敢相信。
至于阵列布局,做出这些决定的最佳方法是对吞吐量进行基准测试。使用 PgBench(最好经过调整以模拟您的工作负载)和原始磁盘 I/O 基准测试。看看什么样的阵列安排可以为您提供最佳的吞吐量和最低的同步延迟。
请记住考虑多个磁盘故障。RAID10 中的 2x8 磁盘阵列(跨越 8 个磁盘,镜像一次)足够大,完全有可能出现双磁盘故障。你能承受停机时间吗?您是否会运行一个流式只读副本或 PITR 从站,以便在丢失阵列时不会丢失数据?计算出故障概率并记住,任何双磁盘故障都有 50% 的可能性会导致整个阵列失效。