我寻求您的意见和提示/建议,以优化我正在构建的新 Windows 文件服务器的性能。我继承了一台戴尔 NF500 存储服务器(基本上是带有 Windows 2k3 存储服务器操作系统的戴尔 2950)。它有一个 PERC 6i,带有 256mb BBU 缓存和 6x 750gb SATA 驱动器和 4gb 系统内存。我想我会使用 RAID6,因为我担心如果 RAID6 卷出现问题,在长时间重建期间会丢失第二个驱动器。RAID6 卷将使用 5 个驱动器和 1 个驱动器作为热备用,是的,我们非常偏执,但也遵循我们的标准,即所有服务器都有热备用。
话虽如此,我还是想征求您对优化性能的其他技巧和建议的意见。它将通过 SMB/CIFS/NFS 为 Windows、Mac 和 Linux 客户端提供文件服务器(随机读写,文件大小通常较小,但也有一些较大)。
RAID 控制器端有任何特殊设置吗?目前,条带元素设置为 256kb(最高可达 512k,甚至 1mb),自适应预读策略和缓存写回(这要归功于 BBU)。我应该将条带元素大小调大吗?
有任何分区/文件系统级别的调整吗?我依稀记得读过一些关于对齐磁盘分区的开始、驱动器数量、使用正确的块大小构建文件系统等内容。如果您能将任何信息(包括链接)发送给我以便我进行查看,我将不胜感激。
有任何操作系统级别的调整吗?由于它是一个单一的 RAID 卷,如果我将操作系统和数据存储放在一个分区上,或者我应该将其分开,这有关系吗?我还打算使用 VSS,那应该是另一个单独的分区吗?它甚至可以在同一个分区上吗?
其他最佳实践?
提前致谢。我是一名路由器/交换机/防火墙专家,所以这对我来说有点新。C.
答案1
磁盘子系统: 以下是 Microsoft 的一篇有关 SQL Server 2008 中的分区对齐的文章:http://msdn.microsoft.com/en-us/library/dd758814.aspx
文章中解释的理论是我给你提供链接的原因,而不是因为我认为你会运行 SQL Server。文件服务器的工作负载不像 SQL Server 那样容易对分区对齐那么敏感,但每一点都有帮助。
NTFS:
您可以使用以下方法禁用 NTFS 中的最后访问时间戳:
fsutil behavior set disablelastaccess 1
您可以使用以下方式禁用短文件名创建(如果您没有需要它的应用程序):
fsutil behavior set disable8dot3 1
考虑一下您要放入机箱的文件类型的最佳 NTFS 簇大小。一般来说,您希望簇大小尽可能大,以平衡子簇大小文件的浪费空间。您还希望尝试将簇大小与 RAID 条带大小相匹配(并且,如上所述,将条带与簇对齐)。
有一种理论认为大多数读取都是连续的,因此条带大小(通常是 RAID 控制器的最小读取)应该是群集大小的倍数。这取决于服务器的具体工作负载,您需要测量它才能确定。我会保持它们不变。
如果您将拥有大量小文件,您可能需要从更大的 NTFS 主文件表 (MFT) 保留开始,以防止将来出现 MFT 碎片。除了讨论上面的 fsutil 命令外,本文档还描述了“MFT 区域”设置:http://technet.microsoft.com/en-us/library/cc785435(WS.10).aspx 基本上,您需要根据预计的卷上文件数量,为 MFT 保留您认为需要的磁盘空间,以尝试防止 MFT 碎片化。
有关 NTFS 性能优化的 Microsoft 通用指南可在此处找到:http://technet.microsoft.com/en-us/library/cc767961.aspx 这是一个老的文档,但它还是提供了一些不错的背景知识。不必尝试它所说的任何“技术内容”,但要从中获取概念。
布局:
您将与人们就分离操作系统和数据展开激烈争论。对于此特定应用程序,我可能会将所有内容堆放在一个分区中。有人会来告诉你我错了。你可以自己决定。我认为没有理由在操作系统分区填满后再“进行工作”。由于它们不是单独的 RAID 卷,因此将操作系统和数据分成分区对性能没有好处。(如果它们是不同的主轴,情况就不同了……)
卷影副本:
卷影副本快照可以存储在同一卷中,也可以存储在另一个卷中。我对卷影副本相关的性能问题没有太多了解,所以在说一些愚蠢的话之前,我打算就此打住。
答案2
WSS 已经默认完成了许多建议的工作:参见Windows 存储服务器博客
“文件服务器性能优化 Windows Server 2003 中的一些设置可加快网络流量和 NAS 操作,例如删除文件系统别名、关闭 8.3 名称创建以及设置 TCP ACK 频率以更好地利用网络帧大小和速度。有关详细信息,请参阅性能调优白皮书。OEM 还可以通过设置 NIC 卡的中断亲和性并确保在设置 RAID 阵列时考虑正确的磁盘对齐来提高其性能。有关这两个主题的更多信息,请参阅下文。”
请注意,磁盘对齐应该在工厂完成。
答案3
与此设置中的其他 RAID 选项相比,RAID 6 将大大降低读取 IO,并且在写入 IO 方面会非常苛刻。除非您绝对需要所有空间,否则我建议您考虑 RAID 10。与 RAID 6 相比,您将在系统上损失 750GB,但性能差异将使您尝试的所有其他性能调整变得微不足道。分区对齐、将条带大小与文件系统块大小匹配以及更改 Evan 建议的上次访问时间等内容都是很好的建议,总共可以将吞吐量提高 30% 或更多。RAID 10 的读写速度至少全面提高 100%,其重建时间只是 RAID 5 或 6 的一小部分。
RAID 10 - 4 个驱动器,带 2 个热备用。有效容量 1500GB。持续随机读取将约为基本驱动器的 IOPS 的 4 倍。持续随机写入将(最多)为基本驱动器单元的写入 IOPS 的 2 倍。重建时间 - 像您这样的系统在空闲时需要 4-6 小时,在平均负载下可能需要两倍的时间。
RAID 5 - 5 个驱动器,1 个热备用。有效容量 3000GB。持续随机读取将约为基本驱动器的 IOPS 的 4 倍。持续随机写入将约为单个基本驱动器的写入 IOPS 的 1 倍(假设每个写入 IO 需要 2 次读取和 2 次写入)。重建时间 - 空闲时为一天以上,典型负载下为几天。
RAID 6 - 5 个驱动器,1 个热备用。有效容量 2250GB。持续随机读取将约为基本驱动器的 3 倍。持续随机写入将约为单个基本驱动器写入 IOPS 的 66%(每个写入 IO 需要 3 次读取和 3 次写入)。重建时间 - 系统相对空闲的几天,在典型负载下长达一周。
当然,您的里程可能会有所不同,如果您没有太多持续的随机 IO,那么其中大部分将被缓存隐藏,但 RAID 6 的持续性能下降非常严重,特别是在阵列中使用相对较少的驱动器实现时。
答案4
Evan 和 Helvick 的观点非常正确,所以我只需要添加额外的资源即可。Windows Server 2003 性能调优指南文档涵盖了许多考虑因素和内部调整,尽管正如 Jim 提到的,存储服务器已经进行了预先调整,以优化文件共享工作负载。