OLTP SQL Server 的最佳磁盘设置

OLTP SQL Server 的最佳磁盘设置

我们有一台高事务(大量读写)数据库服务器(运行 SQL 2005),目前设置了一个 RAID 1 OS 分区(C:)和一个 RAID 5 数据/日志/临时数据库分区(D:)。C: 有 2 个驱动器,D: 有 4 个驱动器。该服务器有大约 300 个数据库,大小从 10MB 到 2GB 不等。

我一直在阅读有关对磁盘进行分区的最佳实践,但由于我们的磁盘数量非常有限,因此希望听取一些关于我们设置的意见。

看起来 RAID 10 很流行,但是我认为我们不能在只有 6 个磁盘的情况下使用它。

谢谢。

更新

我使用了 3 个 RAID 1 分区(每个分区 2 个磁盘)

  • 分区 1:OS、TempDB、备份
  • 分区 2:日志
  • 分区 3:数据

答案1

设置仅具有 6 个主轴的 RAID 卷的常见“最佳”方法是:

  • 第 1 卷,操作系统和 SQL 事务日志。2 个磁盘镜像 (RAID1),带有 BBWC。事务日志的写入缓存对于获得良好性能非常重要,因为 SQL 引擎会等待日志写入完成,而缓存写入可显著减少写入延迟。(BBWC 表示电池备份写入缓存,即打开写入缓存的控制器以及连接到控制器的电池备份单元。)
  • 第 2 卷,剩余的数据库文件。RAID 10(或 RAID1+0 或 RAID 0+1)中的 4 个磁盘。

操作系统的放置位置其实并不重要。当系统启动并运行时,操作系统应逐渐进入稳定状态,操作系统仅偶尔接触磁盘。如果您需要将操作系统放在 4 磁盘 RAID 0+1 阵列上,那么不必担心。

此外,您必须确保分区边界(以及文件系统块)与 RAID 条带边界对齐

上述设置可能对您有用,也可能没用——当您告别 RAID5 时,您将失去一些容量。使用现代磁盘驱动器,您可能有足够的磁盘空间(每秒 I/O 通常会成为容量之前的瓶颈)。对于较旧的驱动器,容量可能是一个限制因素。

Kendal Van Dyke 写了一篇很好的概述不同 RAID 级别、分区对齐以及它们对 SQL 服务器工作负载的性能。

答案2

如果您的 C: 卷上有空间,请考虑将非常活跃的数据库的事务日志文件和/或 TempDB 数据和日志文件移动到该卷。对于写入,RAID 1 比 RAID 5 更好。

投资尽可能多的内存以减少磁盘 IO 量(内存目前很便宜)。这将提高您的读取速度。如果您在 32 位环境中,请记住您必须配置 AWE 以处理 4GB 以上的内存。

答案3

由于驱动器数量有限,不可能获得最佳设置。这将是单独的磁盘组:

  • 系统
  • 数据
  • 日志
  • 临时数据库

如果您可以承受丢失一个磁盘所造成的空间损失(在 RAID 5 空间方面,您丢失了 4 个磁盘中的 1 个用于奇偶校验,在 RAID 10 空间方面,您丢失了第 2 个磁盘),如果瓶颈是磁盘,那么重新配置驱动器可能会在一定程度上提高性能。

您看到了具体问题吗?还是您只是想在出现问题之前优化设置?

答案4

如何将所有 6 个磁盘设置为一个 RAID 10,并为操作系统设置一个分区,为数据设置另一个分区(1 或 2 个)?假设您可以通过在机器中添加大量 RAM 来避免大量使用交换分区?

相关内容