本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 HealthOmics 工作流程中运行存储类型
开始运行时, HealthOmics 会分配临时运行存储空间供工作流引擎在运行期间使用。 HealthOmics以文件系统的形式提供临时运行存储。
对于给定的工作流程或工作流程运行,您可以选择动态或静态运行存储。默认情况下, HealthOmics 提供静态运行存储。
注意
运行存储空间使用量会对您的账户产生费用。有关静态和动态运行存储的定价信息,请参阅 HealthOmics定价
以下各节提供了在决定使用哪种运行存储类型时需要考虑的信息。
动态运行存储
我们建议在大多数运行中使用动态运行存储,包括需要更快启动时间的运行、事先不知道存储需求的运行以及迭代开发测试周期。
您无需估计运行所需的存储空间或吞吐量。 HealthOmics 根据运行期间的文件系统利用率,动态地向上或向下扩展存储大小。 HealthOmics 还可以根据工作流程的需求动态扩展吞吐量。由于文件系统存储空间不足错误,运行永远不会失败。
动态运行存储提供的 provisioning/deprovisioning 时间比静态运行存储更快。对于大多数工作流程来说,更快的设置都是一个优势,在 development/test 周期中也是一个优势。
运行完成(成功路径或失败路径)后,GetRun API 操作会在 StorageCapacity 字段中返回运行使用的最大存储空间。您也可以在日志组中的运行清单omics日志中找到此信息。对于在 2 小时内完成的动态存储运行,最大存储值可能不可用。
对于动态运行存储,运行会提供使用 NFS 协议的文件系统。NFS 将 “创建”、“删除” 和 “重命名” 文件操作视为非等性,这有时可能会导致您的代码需要优雅处理的这些操作出现竞争条件。例如,如果您的代码尝试删除不存在的文件,则不应失败。在采用动态运行存储之前,我们建议您调整工作流程代码,使其能够适应非等性文件操作。请参阅用于安全处理非等性运算的代码示例。
用于安全处理非等性运算的代码示例
以下 python 示例显示了如果文件不存在,如何删除该文件而不会失败。
import os import errno def remove_file(file_path): try: os.remove(file_path) except OSError as e: # If the error is "No such file or directory", ignore it (or log it) if e.errno != errno.ENOENT: # Otherwise, raise the error raise # Example usage remove_file("myfile")
以下示例使用 Bash 外壳。要安全地删除文件(即使该文件不存在),请使用:
rm -f my_file
要安全地移动(重命名)文件,请仅在该文件old_name
存在于当前目录中时才运行移动命令。
[ -f old_name ] && mv old_name new_name
要创建目录,请使用以下命令:
mkdir -p mydir/subdir/
静态运行存储
对于静态运行存储,运行会提供使用 Lustre 协议的文件系统。默认情况下,此协议可适应非等效文件操作。您无需调整工作流程代码即可处理非等性文件操作。
HealthOmics 分配固定数量的运行存储空间。您可以在开始运行时指定此值。如果您未指定值,则默认运行存储空间为 1200 GiB。当您在 StartRun API 请求中为存储大小指定值时,系统会将该值四舍五入到最接近的 1200 GiB 的倍数。如果该存储大小不可用,则四舍五入到最接近的 2400 GiB 的倍数。
对于静态运行存储, HealthOmics 请配置以下吞吐量值:
-
预配置的 MB/s 每 TiB 存储容量的基准吞吐量为 200。
-
配置的 MB/s 每 TiB 存储容量最高可达 1300 的突发吞吐量。
如果指定的存储大小太小,则运行将失败,并显示文件系统存储空间不足错误。静态运行存储非常适合具有已知存储要求的可预测工作流程。
静态运行存储适用于具有高任务并发性的大型、突发性工作负载(例如,并行处理大量 RNASeq 样本)。与动态运行存储相比,它可提供更高的每 GiB 文件系统吞吐量和更低的每 GiB 成本。
计算所需的静态运行存储空间
工作流程在使用静态运行存储(与动态运行存储相比)时需要额外的容量,因为基础文件系统安装使用静态文件系统容量的 7%。
如果您运行动态运行存储工作流程来测量运行使用的最大存储空间,请使用以下计算来确定所需的最小静态存储量:
static storage required = maximum storage in GiB used by the dynamic run storage + (total static file system size in GiB * 0.07)
例如:
Maximum storage measured from a dynamic run storage workflow run: 500GiB File system size: 1200GiB 7% of the file system size: 84GiB 500 + 84 = 584GiB of static run storage required for this run.
因此,1200GiB(静态运行存储的最小容量)足以满足此次运行的需求。