如何在 Server 2012 R2 中使用 File Server Capacity Tool (FSCT)
大家好,我是 Tom Ausburne,我最近写了一篇文章,简化了使用 ADTest 工具的指令,并验证了其可以在新的操作系统中使用。这个逻辑也适用于微软的另一个测试工具: File Server Capacity Tool (FSCT)。当文件服务器产生负载时,该工具可以帮助模拟 CIFS/SMB/SMB2 客户端。它比 ADTest 工具稍新,支持的操作系统为 Windows Server 2008 和 Windows Server 2008 R2。虽然这些操作系统如今还在广泛使用,但并不是最新版本,也不是客户想要的。所以让我们深入研究一下,看看这个工具是否同样适用于 Windows Server 2012 R2 和 Windows 8.1。如果想跟随我们的演示,请按以下网址下载该工具。
File Server Capacity Tool v1.2- (64 位)
https://www.microsoft.com/en-us/download/details.aspx?id=27284
下载并解压缩该工具,得到一个名为 64bit 的文件夹。此文件夹中的内容是您所需的全部文件,包括名为 FSCTStepbyStepGuide.doc 的说明文档。本文涉及的所有步骤都来自这个文档,并且工具运行在 Active Directory 上。文档中也有适用于其他环境的说明,如 Windows Workgroups、非 Windows Servers 和单独的 Windows 群集。
免责声明:循序渐进指南在描述每个场景方面做得十分出色,并且使用了标准的微软命名约定。我设置的是现有的域,所以名称会有所不同。我会指出在您的场景中哪里需要更改,以方便您的操作。还需指出的是这只用于测试或实验室环境,不可用于生产。不要在您的生产服务器中使用。
这个练习使用的是以下配置:
DC3 – Domain Controller
FSCTServer – 共享文件的文件服务器,用于测试服务器性能
FSCTController – 用于同步测试活动和收集测试数据
81Client – Client Computer 生成工作负载来给文件服务器加压
显然,这是一个非常简单的设置,不会给服务器增加较大负载。循序渐进指南中说明可以通过多个网络设置大量客户端。但本文的目的是让您轻松学会设置并运行。一旦学会了这些,您可以试着添加其他内容使其变得复杂一点。
看过了以前的文章,我假设您了解了如何在服务器和客户端中设置基本的 Active Directory 域。下面让我们开始吧。
硬件规格
- Active Directory 基础结构(至少1 个域控制器)
- 有 1 台服务器至少运行Windows Server 2008 R2,并且在 1 个或多个卷中有足够的磁盘空间专用于测试
注意 : 这些卷将被格式化。 - 有 1 个域控制器至少运行 Windows Server 2008 R2,并有 1 GB 的可用磁盘空间
- 有 1 个或多个客户端计算机至少运行 Windows 7 客户端,并有 1 GB 的磁盘空间
机器设置
将 64bit 文件夹中包含的文件复制到要测试的每个机器的目录中。为了简便,我在 C 盘中创建了一个目录,叫做 FSCT。
本文的目的就是让事情简单化。对我来说,语法是最难的,而且缺少容易理解的例子。希望我可以帮您解决这些问题。文章的最后列出了几个关于语法的例子。
您需要准备的是域控制器、服务器、FSCT 控制器和使用 FSCT 的客户端,以确保创建了所有的用户、文件和目录。
准备域控制器
打开提升的命令提示符,更改为 FSCT 目录并使用以下命令:
fsct prepare dc /users 10 /clients 81Client /password Password1
其中:
/users – 指定每个客户端计算机中的用户数量
/clients – 指定客户端计算机的名称(本例为 81Client)
如果有多个,可全部列出并用逗号隔开。
如:81Client,82Client,83Client,84Client
/password – 为所有用户指定密码(全部使用相同密码)
在 Active Directory 中用户已被创建。
准备文件服务器
打开提升的命令提示符,更改为 FSCT 目录并使用以下命令:
fsct prepare server /clients 81Client /password Password1 /users 10 /domain domain2.com /volumes D: /workload HomeFolders
其中:
/clients – 指定客户端计算机的名称(本例为 81Client)
如果有多个,可全部列出并用逗号隔开。
如:81Client,82Client,83Client,84Client
/password – 上一步中指定的密码
/users – 上一步中指定的用户数量
/domain – 指定域的名称(本例为 domain2.com)
/volumes – 在准备和清理阶段指定格式化卷的列表。(本例为 D: 卷)。如果有多个卷,可用逗号隔开。如:D:,E:,F:
/workload – 指定工作负载的名称。FSCT 包括 HomeFolders 这个工作负载,当服务器的主要功能是存储用户的主目录时,它可以模拟用户活动。
这一步将格式化指定的卷,并创建一个用于测试的文件夹结构。
准备控制器
打开提升的命令提示符,更改为 FSCT 目录并使用以下命令:
fsct prepare controller
这里不需要命令参数,虽然循序渐进指南中显示了参数。您可以指定一个配置文件和日志选项。参数的详细信息在循序渐进指南的第 39 页。
准备客户端
打开提升的命令提示符,更改为 FSCT 目录并使用以下命令:
fsct prepare client /server fsctserver /password Password1 /users 10 /domain domain2.com /server_ip 192.168.0.203
其中:
/server – 指定要测试的服务器名称
/password – 上一步中指定的密码
/users – 上一步中指定的用户数量
/domain – 指定域的名称(本例为 domain2.com)
/server_ip - 指定客户端计算机使用的文件服务器的 IP 地址
准备完成了,就是这么简单。当然,这里只使用一个客户端,一个网络和一个卷。但是您可以按照这个思路扩展该设置,也很容易。现在来进行测试。
运行测试
在客户端上
打开提升的命令提示符,更改为 FSCT 目录并使用以下命令:
fsct run client /controller fsctcontroller /server fsctserver /password Password1 /domain domain2.com
其中
/controller – 指定控制器的名称
/server – 指定测试服务器的名称
/password – 上一步中指定的密码
/domain – 指定域的名称(本例为 domain2.com)
在控制器上
打开提升的命令提示符,更改为 FSCT 目录并使用以下命令:
fsct run controller /server fsctserver /password Password1 /volumes D: /clients 81Client /min_users 2 /max_users 10 /step 2 /duration 360 /workload HomeFolders
其中:
/server – 指定测试服务器的名称
/password – 上一步中指定的密码
/volumes – 在准备和清理阶段指定格式化卷的列表。(本例为 D: 卷)。如果有多个卷,可用逗号隔开。如:D:,E:,F:
/clients – 指定客户端计算机的名称(本例为 81Client)
如果有多个,可全部列出并用逗号隔开。
如:81Client,82Client,83Client,84Client
/min_users - 测试中使用的用户的最小数量。
/max_users - 测试中使用的用户的最大数量。
(该数值可少于或等于创建的用户数量)
/step - 该值指的是测试时,在 min_users 和 max_users 之间每次迭代会增加多少用户。
/duration - 在测试中指定每次迭代的时间(几秒钟内)。如果该值设置为 0 (zero),当所有高优先级场景全部完成时,测试结束。此外,如果该值设置为 0 (zero),那么配置文件必须包含运行的最大迭代数量,否则测试将会无限期运行下去。
/workload – 指定工作负载的名称。FSCT 包括 HomeFolders 这个工作负载,当服务器的主要功能是存储用户的主目录时,它可以模拟用户活动。
测试运行时,可以查看 Resource Monitor (或 Perfmon Counters),以检验一切是否按预期进行。
清理
测试完成后,清理程序将清理服务器,控制器和客户端计算机中的用户、文件和目录。
以下情况需要进行清理:
- 所有的测试已完成
- 改变了服务器、控制器、客户端、卷和用户的配置,或者在测试运行期间失败或中止。
清理文件服务器
打开提升的命令提示符,更改为 FSCT 目录并使用以下命令:
fsct cleanup server /clients 81Client /users 10 /volumes D: /domain domain2.com
其中:
/clients – 指定客户端计算机的名称(本例为 81Client)
如果有多个,可全部列出并用逗号隔开。
如:81Client,82Client,83Client,84Client
/users – 测试中使用的用户数量
/volumes – 在准备和清理阶段指定格式化卷的列表。(本例为 D: 卷)。如果有多个卷,可用逗号隔开。如:D:,E:,F:
/domain – 指定域的名称(本例为 domain2.com)
清理控制器
打开提升的命令提示符,更改为 FSCT 目录并使用以下命令:
fsct cleanup controller /backup c:\fsct_backup
其中
/backup – 备份数据收集的文件夹
清理客户端
打开提升的命令提示符,更改为FSCT目录并使用以下命令:
fsct cleanup client /users 10 /domain domain2.com
其中:
/users – 测试中使用的用户数量
/domain – 指定域的名称(本例为 domain2.com)
清理域控制器
这是一个简单的手动程序。只需删除创建的所有用户,就可清理完毕。您可以按照所有的步骤,并利用不同的设置再做一次。
审阅FSCT 测试结果
测试结束后,测试结果被存储在控制器计算机中。结果文件样本可参考 FSCT 循序渐进指南。
几点想法
正如前面提到的,本文不详细讨论所有可能的场景或为服务器增加负载。主要目的是为了展示设置和运行的简单性。您可以利用其它客户端和不同设置为服务器加压,以达到其极限。这正是本工具的目的所在。
以下是几个扩展语法的例子:
如果想创建1000 个用户并使用10 个客户端计算机:
在 DC 中:
fsct prepare dc /users 1000 /clients Client1,Client2,Client3,Client4,Client5,Client6,Client7,Client8,Client9,Client10 /password Password1
如果想在两个不同的卷中,为1000 个用户和10 个客户端创建文件夹结构:
在服务器中:
fsct prepare server /clients Client1,Client2,Client3,Client4,Client5,Client6,Client7,Client8,Client9,Client10 /password Password1 /users 1000 /domain domain2.com /volumes D:,F: /workload HomeFolders
如果想让客户端准备运行一个有 1000 个用户的服务器测试:
在服务器中:
fsct prepare client /server fsctserver /password Password1 /users 1000 / domain domain2.com /server_ip 192.168.0.203
注意: 每个用户都需要一个单独的TCP 连接(重定向程序检查服务器名称,并在可能的情况下将多个连接合并成一个)。 FSCT 编辑主机文件( %windir%\system32\drivers\etc\hosts ),然后为每个用户添加单独的条目。在运行“ fsct prepare clients ”之前必须先运行“ fsct cleanup ”。如果没有运行,那么主机文件或许无法包含所有正确的信息,之后的运行可能会由于服务器访问错误而失败。
希望本文能够帮助您更轻松地使用该工具。我喜欢使用“按步骤讲解,并附图说明”这种方式,希望大家也喜欢。
Tom Ausburne