我在优化我正在构建的新 Windows 文件服务器的性能方面寻求您的意见和提示/建议。我继承了戴尔 NF500 存储服务器(基本上是带有 Windows 2k3 存储服务器操作系统的戴尔 2950)。它有一个 PERC 6i,带有 256mb BBU 缓存和 6 个 750gb SATA 驱动器和 4gb 系统内存。我想我会使用 RAID6,因为如果 RAID6 卷变坏,我担心在长时间的重建过程中会丢失第二个驱动器。RAID6 卷也将使用 5 个驱动器和 1 个驱动器作为热备件,是的,我们非常偏执,但也遵循我们的标准,即所有服务器都有热备件。
话虽如此,我征求您对优化性能的其他提示和建议的意见。它将通过 SMB/CIFS/NFS 充当 Windows、Mac 和 Linux 客户端的文件服务器(随机 R/W 和文件大小通常很小,但也有一些较大的)。
RAID 控制器端有什么特殊设置吗?目前条带元素设置为 256kb(可以达到 512k 甚至可能 1mb)、自适应预读策略和缓存回写,这要归功于 BBU。我应该使条带元素大小更大吗?
任何分区/文件系统级别的调整?我隐约记得读过一些关于对齐磁盘分区开始、驱动器#、构建具有正确块大小的文件系统等的内容。任何信息,包括链接,您都可以发送给我,以便我查看,将不胜感激。
任何操作系统级别的调整?由于它是一个单一的 RAID 卷,我将操作系统和数据存储放在一个分区上还是应该分区有关系吗?我打算也使用 VSS,那应该是另一个单独的分区吗?它甚至可以在同一个分区上吗?
其他最佳实践?
提前致谢。我是一个路由器/交换机/fw 人,所以这对我来说有点新。C。
磁盘子系统: 这是 Microsoft 的一篇文章 re:SQL Server 2008 中的分区对齐:http: //msdn.microsoft.com/en-us/library/dd758814.aspx
文章中解释的理论是为什么我给你链接,而不是因为我认为你将运行 SQL Server。文件服务器的工作负载不像 SQL Server 那样对分区对齐敏感,但每一点都有帮助。
NTFS:
您可以使用以下方法禁用 NTFS 中的上次访问时间戳:
您可以使用以下方法禁用短文件名创建(如果您没有需要它的应用程序):
想一想您将要放在盒子上的文件种类的最佳 NTFS 群集大小。通常,您希望拥有尽可能大的集群大小,以平衡子集群大小文件的空间浪费。您还想尝试将您的集群大小与您的 RAID 条带大小相匹配(并且如上所述,让您的条带与您的集群对齐)。
有一种理论认为大多数读取都是连续的,因此条带大小(通常是 RAID 控制器的最小读取)应该是集群大小的倍数。这取决于服务器的特定工作负载,您需要对其进行测量才能确定。我会让它们保持不变。
如果您将拥有大量小文件,您可能希望从 NTFS 主文件表 (MFT) 的更大保留开始,以防止将来出现 MFT 碎片。以及上面讲的 fsutil 命令,本文档描述了“MFT 区域”设置:http ://technet.microsoft.com/en-us/library/cc785435(WS.10).aspx 基本上,你要保留MFT 所需的尽可能多的磁盘空间,根据您将在卷上预测的文件数量,尝试防止 MFT 碎片。
Microsoft 关于 NTFS 性能优化的一般指南可在此处获得:http ://technet.microsoft.com/en-us/library/cc767961.aspx 这是一个旧文档,但它提供了一些不错的背景。不一定要尝试它说要做的任何“技术东西”,但要从中获得概念。
布局:
您将与人们进行宗教争论:分离操作系统和数据。对于这个特定的应用程序,我可能会将所有内容都堆放在一个分区中。有人会过来告诉你我错了。你可以自己决定。当操作系统分区被填满时,我认为没有合理的理由继续“工作”。由于它们不是单独的 RAID 卷,因此将操作系统和数据分成分区并没有性能优势。(如果它们是不同的纺锤,那就另当别论了……)
影子副本:
卷影副本快照可以存储在同一卷中,也可以存储在另一个卷中。我没有太多关于与卷影副本相关的性能问题的背景知识,所以在我说一些愚蠢的事情之前,我将停在那里。
与此设置中的其他 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 的持续性能影响非常严重,尤其是在阵列中使用相对较少的驱动器实施时。
WSS 已经做了很多默认建议的事情:请参阅Windows Storage Server 博客
“文件服务器性能优化 Windows Server 2003 中有一些设置可以加快网络流量和 NAS 操作,例如删除文件系统别名、关闭 8.3 名称创建以及设置 TCP ACK 频率以更好地利用网络帧大小和速度。有关更多信息,请参阅性能调整白皮书。OEM 还可以通过设置 NIC 卡的中断亲和性并确保在设置 RAID 阵列时考虑正确的磁盘对齐来提高其性能。有关两者的更多信息,请参见下文这些话题。”
请注意,磁盘对齐应该在工厂完成。
Evan 和 Helvick 很到位,所以我将添加一个额外的资源。Windows Server 2003的性能调优指南文档涵盖了许多注意事项和内部调整,尽管正如 Jim 提到的,Storage Server 已预先调整以优化文件共享工作负载。