SAN 磁盘分配

Dan*_*iel 4 virtualization storage-area-network hard-drive

我正在寻找一个带有 24 个驱动器的 MD3620i SAN 来虚拟化我们的环境,并且想知道分割磁盘的最佳方法。

首先,我将运行 DC、SQL 数据库、SQL 转储、Exchange 和 Web 服务器,最终希望将我们环境的其余部分移至此设置。我预算紧张,或者会考虑购买额外的 MD1220。我这里有足够的磁盘吗?关于我应该如何设置的任何建议?

sys*_*138 6

我会将所有 24 个磁盘放到同一个磁盘组中,以便为您提供最大的 I/O 开销。您将在该阵列(SQL DB、SQL Reporting 和 Exchange)上托管一些非常高的 I/O 密集型应用程序,因此您将需要所有可以获得的东西。并且请不要使用 7.2K RPM 驱动器;它们可能既便宜又大,但您会在性能扩展方面付出代价。

在我看来,像将 DB 和 Log 流量放在不同的主轴上这样的优化很可能会被整个虚拟化 I/O 流量淹没。您将在此存储上拥有两个大型数据库 I/O 应用程序(SQL 和 Exchange),并且(同样,我认为)您将需要尽可能多的 I/O 开销,因此将它们全部集中到一个大的水池; 严格地分离 DB 和 Log I/O 会导致您更快地遇到瓶颈。

还要考虑确保您的 Exchange 服务器在线碎片整理和备份与您的 SQL 备份不一致。这三个操作是非常繁重的 I/O,如果可能,您不希望它们重叠。至于 Reporting Services,如果您有任何非常大的查询/报告/作业正在运行,请尽量避免那些备份期。

DC 和网络服务器在这里是非常小的参与者,所以应该没问题。


为什么要将它们全部捆绑到一个组中而不是将它们分开?

对于 12 个 15K 驱动器和 12 个 10K 驱动器,您可能最终必须拥有两个磁盘组,每个速度一个。我不建议进一步拆分。

对于 R0 中的完全随机 I/O,12 个 15K 驱动器应为您提供大约 2270 I/O Ops/s,R10 为 1135-2270,R5 为 2080。12 个 10K 驱动器应为您提供 1700 I/O Ops/s(R10 中为 850-1700,R5 中为 1560)。R10 速度是可变的,因为它取决于您的读/写百分比,以及控制器是否会从多个条带读取(我不知道戴尔是否这样做)。显着的顺序操作会更快,但您不能指望使用共享存储系统。

这些是一些可观的速度,但它们也代表了每种磁盘类型的最高性能。为您确定的五个服务中的每一个使用完整的分离模型:

  • SQL
  • SQL 报告
  • 交换
  • AD DC
  • 网络服务

我会将最后两个放在 R1 配置中的一对 300GB 10K 驱动器上,将其他 22 个磁盘留给其余的。至于其余...

  • SQL
    • 1x R5 组 6 个 15K 驱动器用于日志
    • 用于数据库的 1 个 R5 组 4 个 10K 驱动器
  • SQL 报告
    • 1x R5 组 3 个 10K 驱动器,用于数据库等
  • 交换
    • 1 个 R5 组 6 个 15K 驱动器,用于邮件存储
    • 1x R5 组 4 个 10K 驱动器用于日志

根据您的容量要求,您可能需要交换 DB/日志卷。这样的配置使 SQL 和 Exchange 分别为日志和邮件存储提供了 945 个 I/O Ops/s,为数据库和日志分别提供了 420 个 I/O Ops/s。报告获得 280 I/O ops/s。这提供了 3230 I/O Ops/s 的整体磁盘子系统性能。

将其与 3640 相比,仅使用两个磁盘组即可获得整体系统性能。这是为了隔离生产系统而牺牲的性能的 12%。像这样的共享存储系统的主要好处之一是您可以更有效地使用存储。将上述内容分开意味着您的主要好处是将所有存储存储在一组 RAID 控制器上的一个设备中,而不是拥有多个 RAID 控制器,从而节省成本。

通过使用上面的孤立配置,您可以更快地遇到 I/O 瓶颈:

  • 您的数据库备份可以使分配给它们的 945 I/O Ops/s 完全饱和,并且比将可用空间增加一倍需要更长的时间。在此期间,数据库查询会明显变慢。这是一个 I/O 瓶颈。
  • 在处理偶尔的复杂查询时,您的数据库卷无法使用其他孤岛中未使用的容量来更快地返回结果。它们将受到明确分配给它们的磁盘的约束。这是一个 I/O 瓶颈。
  • 备份 Exchange 时(它可以运行得非常快,这样很好)您的备份将花费更长的时间,从而导致在备份期间与系统交互的用户出现明显的性能问题。这是一个 I/O 瓶颈。

当其他人说“一个大磁盘组意味着您可以更快地遇到 I/O 瓶颈”时,他们通常的意思是,一个表现不佳的应用程序会影响整个应用程序的性能,最好将所有内容孤立起来以保护所有内容免受其他一切影响。他们像对待内存的旧操作系统一样对待存储:每个人在启动时都会获得一个离散的内存分配,没有人可以超出它。与内存不同,在这个模型中没有虚拟内存这样的东西,所以它是在启动时分配给进程的物理内存。

最好像现代操作系统对待内存一样对待它:虚拟。系统有 3640 个 I/O 操作可供它使用,为什么不让所有的东西都认为它有那么多可玩的。一切都不会一直使用它,存储子系统将能够很好地满足大多数请求。如果需求确实达到了那个水平,那么事情就会开始陷入停滞(IOWAIT 增加),是时候分析系统以找出导致速度下降的原因了。