IBM Cloud Docs
最佳实践 File Storage for Classic

最佳实践 File Storage for Classic

请遵循我们的最佳实践,以最大限度地提高存储性能,避免应用程序停机。

最佳实践 1-清除路径

要实现最大 IOPS,需要落实足够的网络资源。

  • 在专用 VLAN 上运行存储流量。 通过软件防火墙运行存储流量会延长等待时间,并对存储器性能产生负面影响。 最好是在绕过防火墙的 VLAN 上运行存储流量。 有关更多信息,请参阅 将存储流量路由到其自己的 VLAN 接口

  • 尽可能 避免将存储流量路由到网关设备。 将存储流量路由到网关设备时,可能会增加存储流量的等待时间,或者如果网关设备中的防火墙配置错误,可能会导致存储流量中断。 当需要在单个 (非集群) 网关设备上进行诸如重新启动之类的维护时,尤其会发生存储器中断。 如果存储流量必须通过网关设备进行路由,请确保该网关设备至少具有10 Gbps的接口,否则网关设备可能会成为网络瓶颈。

  • 使用子网地址 而不是防火墙上的单个 IP 地址来获取 NFS 流量。 NFS 主机名提供 6 IP 地址,这些 6 IP 地址可以更改。

  • 使用更快的 NIC。 某些限制是在 LUN 级别设置的,更快的接口不会增加该限制。 但是,通过速度较慢的以太网连接,您的带宽可能会成为实现最佳性能级别的潜在障碍。

  • 选择更高的带宽。 以太网连接速度必须快于卷的预期最大吞吐量。一般情况下,不要指望以太网连接饱和到超过可用带宽的 70%。

    例如,如果您有 6,000 IOPS 并且使用的是 16 KB 块大小,那么卷可以处理约 94 MBps 的吞吐量。然而,当您的LUN连接到1-Gbps以太网时,当您的服务器尝试使用最大可用吞吐量时,它就会成为瓶颈。 这是因为1-Gbps以太网连接的理论极限(每秒125 MB)的70%仅允许每秒88 MB。

最佳实践 2-优化主机和应用程序

  • 使用最能满足您需求的 I/O 调度程序。 I/O 调度程序有助于优化磁盘访问请求。 传统上,它们通过合并 I/O 请求来实现优化。 通过在磁盘的类似部分对请求进行分组,磁带机不需要经常“查找”,从而缩短磁盘操作的总体响应时间。 在现代 Linux 实现上,提供了多个 I/O 调度程序选项。 其中每个选项都有自己独特的方法来调度磁盘访问请求。

    • 截止期限 是 Red Hat 7.9上的缺省 I/O 调度程序,通常不需要将其更改为其他 I/O 调度程序。 这是一个面向等待时间的调度程序,它通过创建单独的读队列和单独的写队列来工作。 每个 I/O 请求都有一个与之关联的时间戳记,供内核在到期时间内使用。 虽然此调度程序还尝试根据最有效的排序为队列提供服务,但到期时间充当每个 I/O 请求的“截止期限”。 当 I/O 请求达到其截止期限时,会将其推送到最高优先级。

    • 无操作 (NOOP) 是传递到它的 I/O 的基本调度程序。 此调度程序将所有 I/O 请求放入 FIFO (先进先出) 队列中。 它是一个有用的工具,用于检查其他调度程序的复杂 I/O 调度决策是否导致 I/O 性能回归。 建议使用此调度程序来设置本身执行 I/O 调度的设备,例如智能存储器或多路径环境中的设备。 如果在主机上选择更复杂的调度程序,那么主机的调度程序和存储设备的调度程序可以相互竞争并降低性能。 存储设备通常可以确定如何调度 I/O 的最佳方式。 有关如何检查和配置 I/O 调度程序的更多信息,请参阅 Red Hat的 How to use the NOOP or None IO Schedulers

    • 完全公平排队 (CFQ) 使用电梯和请求合并,这比 NOOP 或截止期限调度程序更复杂一些。 它是许多 Linux 发行版的标准调度程序。 它在分配时间片以将磁盘用于每个队列之前,会将操作发出的同时请求分组到一系列每个进程池中。

    如果您的工作负载由交互式应用程序主导,那么用户可能会抱怨具有许多 I/O 操作的数据库性能不振。 在此类环境中,与写操作相比,读操作发生的频率要高得多,而应用程序更有可能等待读取数据。 您可以检查默认的IO调度程序设置,并尝试不同的调度程序,以优化您的特定工作负载。

  • 来自源设备 > 交换机 > 路由器 > 交换机 > 目标设备的 启用巨型帧,并配置它们在整个网络路径上都是相同的。 如果整个链设置不相同,那么缺省为沿链的最低设置。IBM Cloud® 当前已将网络设备设置为 9,000。 为了获得最佳性能,所有客户设备都需要设置为相同的9000值。

    在主机上将 MTU 设置为 9000 具有以下优点:

    • 可以在更少的帧中传输数据。
    • 可以更快地传输数据,因为更少的包需要更少的字节的格式信息存储在包头中。
    • 通过减少用于包处理的 CPU 周期数和指令数来增加吞吐量。
    • 巨型帧提供了较少的机会,使包无法按顺序到达或丢失,从而减少了重新传输。 减少重新传输意味着在 TCP 恢复中花费的时间更少。 结果是吞吐量更高。
  • 如果可能,请使用 NFSv3 协议。 网络文件系统 (NFS) 是用于分布式文件共享的网络协议。 它允许远程主机通过网络安装文件系统,并与这些文件系统进行交互,就像它们安装在本地一样。 NFSv3 支持安全异步写入,并且在错误处理时比先前的 NFSv2更健壮。 它支持 64 位文件大小和偏移量,允许客户机访问超过 2 GB 的文件数据。 NFSv3 原生支持,允许根用户保留对 共享的根权限。no_root_squash NFS NFSv4.1 也受支持。 在 VMware® 部署中使用 File Storage for Classic 时,NFSv4.1 可能是实现的更好选择。 如需了解各版本的不同功能以及 VMware® vSphere, 支持的内容,请参阅 《运行 NFS 与 VMware vSphere 的最佳实践 》。

  • 遵循 VMware® 特定于组队的最佳实践。 如果计划使用团队合作来提高对存储阵列的网络访问可用性,那么必须对共享虚拟 IP 地址的两个端口关闭交换机上的端口安全性。 此端口安全设置的目的是防止 IP 地址欺骗。 因此,许多网络管理员都会启用此设置。 但是,如果不进行更改,那么端口安全性设置会阻止将虚拟 IP 从一个交换机端口故障转移到另一个交换机端口。 然后,团队合作无法从一条路径故障转移到另一条路径。 对于大多数 LAN 交换机,将在端口级别上启用端口安全性,因此可以为每个端口设置开启或关闭。