XenServer 的 RAID 10 条带大小

Rea*_*ado 2 raid optimization xenserver raid10

以下是我们当前的服务器配置。几周后,我将通过安装 5 个新磁盘(1 个热备用)并从备份中恢复所有 VM 来模拟灾难恢复。

通过将 RAID 条带大小更改为 64KB 以外的大小,我会得到什么吗?RAID 控制器有 8KB、16KB、32KB、64KB、128KB、256KB、512KB、1MB 的选项。

任何基于以下规范的建议将不胜感激 - 谢谢。

Hardware:

Dell PowerEdge 2900 III
Dell PERC 6/i
Intel Xeon 2.5GHz (x2)
32GB RAM
Seagate ST32000645SS ES.2 2TB Near-Line SAS 7.2K (x4)

Software:

Citrix XenServer 6.2 SP1
VM - Windows SBS 2008 x64 - Exchange & multiple SQL express instances
VM - Windows Server 2003 R2 x86 - single SQL express instance
VM - CentOS 6.6 x64 (x2) - cPanel & video transcoding and streaming
VM - CentOS 6.3 x86 - Trixbox (VoIP)
VM - PHD Virtual Backup 6.5.3 (running Ubuntu 12.04.1 LTS)

Configuration:

RAID 10, 64k Stripe Size
Run Code Online (Sandbox Code Playgroud)

the*_*bit 5

我将尝试将我的评论总结为一个答案。基本线路是:

除非您有充分的证据表明它会有益于您的工作量,否则您不应修改条带大小。

推理:

  • 对于条带化,您必须选择一些条带大小,64 KB 是制造商选择的默认值。由于制造商(在这种情况下为 LSI,由戴尔更名)确实在运行具有不同 RAID 级别和工作负载的大量设置方面拥有丰富的经验,您可能只是相信他们的选择是明智的
  • 64 KB 可能与虚拟化环境中请求的平均大小大致匹配(至少比 256 KB 或 1 MB 大得多),因此是延迟和寻道时间优化之间的良好折衷1
  • 由于工作负载的高度可变性和模型的复杂性,考虑到不同层的不同预读和缓存算法,对不同条带大小的应用程序性能进行准确的模型驱动预测几乎是不可能的

如果您是获得此证据的那种人,您可以通过运行典型负载和一些具有不同条带大小配置的非典型负载场景来实现,收集数据(Xen 服务器层的 I/O 子系统性能、后端服务器性能)和应用层的回答次数)并通过统计评估运行它。然而,这将非常耗时,并且除了“我可能最终将其保留为默认值”之外不太可能产生任何开创性的结果,因此我认为这是一种资源浪费。


1如果假设单个磁盘的传输速率为 100MB/s,则很容易看出读取 1 千字节需要大约 0.01 毫秒,因此 64 KB 的读取延迟为 0.64 毫秒。考虑到随机 I/O 请求的平均“服务时间”通常在 5-10 毫秒的范围内,读取延迟只是总等待时间的一小部分。另一方面,读取 512 KB 将需要大约 5 毫秒 - 这对于“随机小读取”类型的工作负载很重要,大大减少了您的阵列在这种特定情况下能够提供的 IOPS 数量 1.5 倍 - 2. 并发随机大读取操作的场景将受益,因为更大的块读取将导致更耗时的查找,但您不太可能在虚拟化环境中看到这种场景。

  • 重申第 1 点:[此处](http://www.ilsistemista.net/index.php/linux-a-unix/35-linux-software-raid-10-layouts-performance-near-far-and-offset -benchmark-analysis.html?start=4) 我对 RAID 布局进行了深入分析。从第一张图中可以看出,对于单个数据流(本质上是 4K,一次敲击 1 个磁盘),RAID10 阵列中的单个 7200 RPM 磁盘具有 512KB 块大小提供大约 130 IOPS。用 64 KB 的块大小重复相同的测试不会显示任何改进(也不会显示任何问题)。 (2认同)