我们有一台高事务(大量读写)数据库服务器(运行 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 来避免大量使用交换分区?