自定义 Azure HPC 缓存中的文件写回
HPC 缓存用户可以使用 flush_file.py 实用工具按需请求该缓存将特定单个文件写入后端存储。 此实用工具是一个单独下载的软件包,可在 Linux 客户端计算机上安装和使用。
此功能专门针对你希望将缓存文件更改尽快提供给未装载缓存的系统的情况而设计。
例如,你可能会使用 Azure HPC 缓存来缩放云中的计算作业,但将数据集永久存储在本地数据中心。 如果计算任务发生在数据中心并且依赖于使用 Azure HPC 缓存创建的更改,则可以使用此实用工具将云任务生成的输出或更改“推送”回本地 NAS 存储。 这让本地计算资源几乎可以立即使用新文件。
在自定义写回和刷新之间进行选择
可以使用内置于 Azure HPC 缓存的“存储目标刷新”选项强制将数据写回,但此方法可能并非适合所有情况。
将所有已修改的文件写回存储系统可能需要几分钟甚至几个小时,具体取决于数据量和返回本地系统的网络链接速度。 此外,你不能只选择已完成的文件进行写入;仍在积极修改的文件将包含在此计算中。
在刷新过程中,缓存可能会阻止为来自该存储目标的某些请求提供服务。 这可能会在有其他计算客户端使用驻留在同一存储目标上的文件时延迟处理。
触发此操作需要对 Azure 资源管理器的参与者访问权限,而最终用户可能没有该权限。
例如,你可以拥有多个并行(但不重叠)的计算作业,这些作业使用驻留在同一 HPC 缓存存储目标上的数据。 一个作业完成后,你希望立即将该作业的输出从缓存写入后端的长期存储。
您有三种选择:
等待缓存文件从缓存中自动写回 - 但文件可能会在缓存中放置一个多小时,然后才能完全写回。 时间取决于缓存用法模型的回写延迟,以及网络链接性能和文件大小等其他因素。 (请阅读了解缓存用法模型,详细了解写回延迟。)
立即刷新整个存储目标的缓存文件 - 但这会中断同样使用此存储目标的数据的其他计算作业。
使用此自定义写回实用工具可将特殊的 NFS 请求发送到缓存,以仅写回所需的特定文件。 此方案不会中断其他客户端的访问,并且可以在计算任务中的任何时间点触发。
关于写回实用工具
写回实用工具有一个脚本,可用于指定将从缓存写入到长期存储系统的各个文件。
该脚本采用要写入的文件的输入流、存储目标导出的缓存命名空间路径,以及 HPC 缓存装载 IP 地址。
该脚本使用启用了特殊参数的 NFSv3“commit”调用。 Linux nfs 通用客户端无法正确传递这些参数,因此 flush_file.py 实用工具使用 Python 库中的 NFS 客户端模拟器与 HPC 缓存 NFS 服务通信。 该库包含所需的一切,从而可以绕过计算客户端的基于 Linux 内核的 NFS 客户端中可能存在的任何限制。
若要使用此功能,需要执行以下操作:
将位于 https://github.com/microsoft/hpc-cache-nfsv3-client 的 GitHub Microsoft HPC-Cache-NFSv3-client 存储库中的
hpc-cache-nfsv3-client
库安装。 在一个或多个计算客户端上。 存储库自述文件中包含先决条件信息和说明。使用包含的“flush_file.py”脚本告知缓存将所需的确切文件写入长期存储系统。
详细了解如何安装和使用 GitHub 存储库中的 flush_file.py 脚本。