PowerScale OneFS:对性能问题进行故障排除
Summary: 查看有关网络配置、处理负载和使用 InsightIQ 进行监视以提高群集效率的综合指南,对 PowerScale OneFS 性能缓慢的问题进行故障处理。
Symptoms
客户端计算机运行缓慢。特定作业(尤其是在群集上运行的作业)失败或花费的时间比预期更长。
Cause
性能问题通常是由于网络流量、网络配置问题、客户端或群集处理负载或以上问题的组合造成的。本文介绍了对性能问题进行故障处理的几种有效方法。
Resolution
使用 InsightIQ
进行故障处理 目录:
- 使用 Isilon InsightIQ
- 不使用 InsightIQ 的故障处理
- 网络吞吐量
- 客户端连接的分布
- SmartConnect
- 群集吞吐量
- 群集处理
- 排队操作
- CPU
使用 Isilon InsightIQ
使用 Isilon InsightIQ 是监视性能和对性能问题进行故障处理的最佳方式。
借助 Isilon InsightIQ 虚拟设备,您可以通过基于 Web 的 InsightIQ 应用程序中灵活、可自定义的图表视图来监视和分析 Isilon 群集活动。这些图表提供有关群集硬件、软件以及文件系统和协议操作的详细信息。InsightIQ 将数据转换为可视化信息,强调任何性能异常值,从而实现对瓶颈的快速诊断或优化工作流。
有关使用 InsightIQ 的详细信息,请参阅《InsightIQ 用户指南》。
不使用 InsightIQ 的故障处理
如果不使用 InsightIQ,则可以运行各种命令来调查性能问题。要对性能问题进行故障处理,您可以首先检查网络和群集吞吐量,然后检查群集处理,最后检查单个节点 CPU 速率。
网络吞吐量
使用网络测试工具,例如 Iperf 确定群集和网络上客户端计算机的吞吐量功能。
使用 Iperf,在群集和客户端上运行以下命令。这些命令会定义一个足够大的窗口大小,以查明网络链路是否是延迟问题的潜在原因。
- 集群:
iperf -s -w 262144
- 客户端:
iperf -c <cluster IP> -w 262144
客户端连接的分布
检查连接到群集的 NFS 和 SMB 客户端数量,以确保它们不偏向于一个节点。
- 在群集中的任意节点上打开 SSH 连接,然后使用“root”帐户登录。
- 运行 以下命令以检查 NFS 客户端:
isi statistics query - nodes=all --stats=node.clientstats.connected.nfs,node.clientstats.active.nfs
输出会显示每个节点连接的客户端数量,以及每个节点上处于活动状态的客户端数量。 - 运行 以下命令以检查 SMB 客户端:
isi statistics query - nodes=all --stats=node.clientstats.connected.smb, node.clientstats.active.smb1,node.clientstats.active.smb2
输出会显示每个节点连接的客户端数量,以及每个节点上处于活动状态的客户端数量。
SmartConnect
检查以确保运行 SmartConnect 的节点没有承担网络流量。
- 在群集中的任意节点上打开 SSH 连接,然后使用“root”帐户登录。
- 运行 以下命令:
isi_for_array -sq 'ifconfig|grep em -A3'
输出显示绑定到外部接口的所有 IP 地址的列表。 - 检查是否存在比其他节点多一个 IP 地址的任何节点。
- 通过运行以下命令,检查您在步骤 3 中注意到的节点的状态:
isi status
检查输出的 THROUGHPUT列,以确定步骤 3 中发现的节点的负载。
群集吞吐量
通过执行写入和读取测试来评估群集吞吐量,这些测试可测量读取和写入文件所需的时间量。执行至少一次写入测试和一次读取测试,如下所示。
写入测试
- 在群集中的任意节点上打开 SSH 连接,然后使用“root”帐户登录。
- 切换到 /ifs 目录:
cd /ifs
- 从群集上的命令行界面 (CLI) 或者从 UNIX 或 Linux 客户端计算机,使用
dd命令将新文件写入群集。运行 以下命令:dd if=/dev/zero of=1GBfile bs=1024k count=1024
此命令创建一个示例 1GB 文件,并报告将其写入磁盘所花费的时间量。 - 从此命令的输出中,推断在单流工作流中每秒可以写入磁盘的 MB 数。
- 如果您有 MAC 客户端并希望进行进一步分析,
- 启动活动监视器。
- 运行 以下命令,其中
pathToFile是目标文件的文件路径:cat /dev/zero > /pathToFile
此命令可帮助测量 Isilon 群集上写入操作的吞吐量。(虽然可以从 Mac 客户端运行dd命令,结果可能不一致。) - 在活动监视器的 Network 选项卡中监视命令的结果。
读取测试
测量读取操作的吞吐量时,请确保不要对在写入测试期间创建的文件执行读取测试。由于该文件已被缓存,因此读取测试的结果将不准确。请测试尚未缓存的文件的读取操作。在群集上查找大于 1GB 的文件,并在读取测试中引用该文件。
- 在群集中的任意节点上打开 SSH 连接,然后使用“root”帐户登录。
- 从群集上的 CLI 或从 UNIX 或 Linux 客户端计算机中,使用
dd命令读取群集上的文件。运行 以下命令,其中pathToFile是目标文件的文件路径:dd if=/pathToLargeFile of=/dev/null bs=1024k
此命令读取目标文件并报告读取它所花费的时间量。 - 如果您有 MAC 客户端并希望进行进一步分析,
- 启动活动监视器。
- 运行 以下命令,其中
pathToFile是目标文件的文件路径:time cp /pathToLargeFile > /dev/null
此命令可帮助测量 Isilon 群集上读取操作的吞吐量。(虽然可以从 Mac 客户端运行dd命令,结果可能不一致。) - 在活动监视器的 Network 选项卡中监视命令的结果。
群集处理
重新条带化作业
检查群集的输入/输出 (I/O) 操作 (IOPS) 之前:
- 确定群集上正在运行的作业。如果重新条带化作业(如自动平衡、收集或多扫描)正在运行,请考虑这些作业运行的原因以及它们是否应继续运行。
- 考虑正在使用的数据类型。如果客户端计算机正在处理大型视频文件或虚拟机 (VM),则重新条带化的作业需要比正常情况更高的磁盘 IOPS 量。
- 考虑暂时停止重新条带化作业。这样做可以显著提高性能,并且可能是解决性能问题的可行的短期解决方案。
磁盘 I/O
检查磁盘 I/O 可帮助确定某些磁盘是否被过度使用。
按群集
- 在群集中的任意节点上打开 SSH 连接,然后使用“root”帐户登录。
- 运行 以下命令以确定磁盘 I/O:
isi statistics pstat
- 从此命令的输出中,将磁盘 IOPS 除以群集中的磁盘总数。例如,对于使用 Isilon IQ 12000x 节点的 8 节点群集(每个节点托管 12 个驱动器),您将磁盘 IOPS 除以 96。
对于 X 系列节点和 NL 系列节点,对于 100% 随机工作流,您应该会看到磁盘 IOPS 为 70 或更低,对于 100% 顺序工作流,应该会看到磁盘 IOPS 为 140 或更低。由于 NL 系列节点的 RAM 和 CPU 速度低于 X 系列节点,因此 X 系列节点可以处理更高的磁盘 IOPS。
按节点和按磁盘
- 在群集中的任意节点上打开 SSH 连接,然后使用“root”帐户登录。
- 运行 以下命令以按节点确定磁盘 IOPS,这可帮助发现过度使用的磁盘:
isi statistics query --nodes=all --stats=node.disk.xfers.rate.sum --top
- 运行以下命令以确定如何按磁盘查询统计信息:
isi statistics describe --stats=all | grep disk
排队操作
确定磁盘是否过度使用的另一种方法是确定群集中每个磁盘的排队操作数量。对于基于 SMB 的单个流工作流,队列为 4 可能表示存在问题,而对于高并发 NFS 命名空间操作,队列更大。
- 在群集中的任意节点上打开 SSH 连接,然后使用“root”帐户登录。
- 运行 以下命令以确定群集中每个磁盘排队的操作数:
isi_for_array -s sysctl hw.iosched | grep total_inqueue
- 确定队列操作导致的延迟:
sysctl -aN hw.iosched|grep bios_inqueue|xargs sysctl -D
CPU
CPU 问题通常可以追溯到客户端在群集上执行的操作。通过使用 isi statistics 命令,您可以确定在群集上执行的操作,按网络协议或客户端计算机编目。
- 在群集中的任意节点上打开 SSH 连接,然后使用“root”帐户登录。
- 运行 以下命令以确定正在通过网络执行哪些操作,并评估哪些操作花费的时间最长:
isi statistics protocol --orderby=TimeAvg --top
此命令输出提供所有网络协议的详细统计信息,并按群集响应客户端所需的时长进行组织。虽然此命令的结果可能无法确定哪个操作最慢,但它可以为您指明正确的方向。 - 运行 以下命令以获取有关 CPU 处理的更多信息,例如哪些节点的 CPU 使用率最高:
isi statistics system --top
- 运行 以下命令以获取每个节点上消耗最多 CPU 资源的四个进程:
isi_for_array -sq 'top -d1|grep PID -A4'
Additional Information
以下是可能您感兴趣的与此主题相关的推荐资源: