如何在SQL Server上配置SSD驱动器的RAID阵列?


14

我正在构建一个具有48 GB RAM,1个CPU和8个SATA III(6GB / s)SSD驱动器(128 GB Crucial m4)和LSI MegaRAID控制器(SAS 9265-8i)的SQL Server。我希望典型的工作量主要来自阅读。会有一段时间的写入活动增加(与第三方数据提供者每小时进行一次数据同步-每晚备份),但是我怀疑典型的读写比率约为90%读取/ 10%写入。

选项1:
逻辑驱动器C:-RAID 1(2个物理驱动器)-OS
逻辑驱动器D:-RAID 10(6个物理驱动器)-DB文件/日志/ tempdb /备份?

要么

选项2:
逻辑驱动器C:-RAID 1(2个物理驱动器)-OS
逻辑驱动器D:-RAID 1(2个物理驱动器)-Db文件
逻辑驱动器E:-RAID 1(2个物理驱动器)-日志文件/备份?
逻辑驱动器F:-RAID 1(2个物理驱动器)-tempdb

要么

选项3:
其他建议?

我认为选项1会给我带来更好的性能,因为所有数据库活动都将在3个驱动器上进行条带化(并在阵列中的其他3个驱动器上进行镜像),尽管选项2似乎模仿了传统的观点(这似乎更适用于机械驱动器而不是SSD)。似乎选项1的堆栈溢出已消失。

我猜固态硬盘可以将所有东西都放在一个逻辑驱动器上,因为此时服务器可能受到更多CPU约束,而不是受I / O约束?

我还有一个问题是每晚备份应该放在哪里?我们不希望备份减慢SQL Server的其余部分的速度,并且我猜测将备份与日志写入相同的位置是一个好习惯,因为在这两种情况下,读/写行为都是顺序写入。


我曾经相信逻辑分布有好处,但是经过一些相当广泛的研究(Michael可能仍然有一些研究),我们得出的结论是,逻辑分布@目标级别并不能提高性能。因此,如果我们正在谈论物理(旋转)磁盘,并且您想要8个数据文件以利用核心亲缘关系,那么它们是否是单个逻辑卷(在同一物理磁盘上)上的8个文件还是您为这8个文件(在同一物理磁盘上)剪切了8个逻辑分区。我认为您会在逻辑上削减SSD时发现类似的情况
Eric Higgins 2012年

Answers:


9

关于RAID的传统观点不适用于SSD。他们真的不需要分条(RAID0)。他们还容易被设计的失败,但是RAID-1通常不是SSD正确的答案,原因有二:1)是一种浪费,半SSD阵列的容量(他们昂贵的)和2)固态硬盘的故障特征线索朝向镜像中的两个驱动器的故障间隔非常短(即相关故障),从而使整个阵列失效。有关冗长的讨论,请参见差异RAID:重新思考RAID以提高SSD的可靠性。一些建议将Raid-6用于SSD。

此外,SQL Server文件布局的常规知识不适用于SSD。我建议您观看SSD上的SQL:Hot and Crazy Love并仔细阅读此答案中的基准链接。


好的一点是,有了RAID 10,我可能更容易受到相关故障的影响。感谢差异RAID链接。
罗比2012年

8

从日志顺序中分离数据的随机IO模式的标准方法根本不适用于SSD,因此,我将选择带有警告的选项1:

  • 备份必须存储在单独的计算机上。如果服务器出现问题,备份将无法访问。
  • 分离数据驱动器和日志驱动器有一些价值,这样数据阵列的故障将使您可以进行日志备份。
  • 请注意,您没有热备用。
  • 请注意,您具有消费者级别的驱动器。不要以为它们会像企业同类产品那样可靠,而且成本要高出几倍。
  • 观看关于SSD的有趣且非常有用的SQL: Brent Ozar撰写的Hot and Crazy Love

将日志与使用SSD的数据分开的问题是系统的RPO(恢复点目标)问题,而不是性能问题。如果以分钟为单位定义RPO,则使用一个共享阵列,每[RPO]分钟进行一次日志备份。如果以秒为单位定义RPO,请使用单独的阵列。

老实说,如果RPO太紧,我会保留SSD用作数据阵列,并使用一对镜像的昂贵(企业)可靠的微调器存储日志。


备份将复制到单独的计算机上。它们是在本地计算机上创建的,因此我可以使用SQL比较/数据比较并在发生回归/用户错误的情况下还原更改。
罗比2012年

另外,RPO的定义是分钟(我认为即使是10分钟,我的情况也完全可以接受)。 Hot&Crazy Love帖子确实让我考虑了相关的失败。以我有限的经验,我遇到了更多的主板故障和整个系统故障(电源/电源浪涌炸毁了一切),然后是驱动器故障,因此我仍在尝试确定最经济有效的偏执狂/预防水平。
罗比2012年

1

您应该选择选项2,如下所示:

Logical Drive - RAID 1 (2 physical drives)
 1 partition C: OS
 2 partition D: backups / log files
Logical Drive E: - RAID 1 (2 physical drives) - DATA files
Logical Drive F: - RAID 1 (2 physical drives) - INDEX files
Logical Drive G: - RAID 1 (2 physical drives) - tempdb

通过将数据和索引分离到2个不同的数据文件中,然后将其存储在2个不同的物理逻辑驱动器中,您将获得大量的磁盘io,这仅仅是因为查询时,您将有一个磁盘在旋转表数据,而另一个在磁盘上旋转同时为您的索引旋转。

还要将tempdb与备份分开,因为那里也会发生很多事情。不要混淆备份和数据文件。即使不每天进行一次备份,当备份发生时,它们也会对您的IO造成巨大影响。根据您的业务和数据库的使用情况,某些人或很多人在备份期间可能会抱怨。

希望这可以帮助


6
废话。这些是SSD,而不是微调器。
Mark Storey-

即使使用sdd也不是胡说八道,尽管没有那么多的性能达到了许多目的。
Nicolas de Fontenay 2012年

2
即使使用微调器,将数据与索引分离也没有任何价值,直到您在SQLCAT领域中发挥作用。分离tempdb的情况也从未明确,而且很少用于如此少的磁盘。
Mark Storey-Smith'3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.