本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 HealthOmics 工作流程中執行儲存類型
當您開始執行時,HealthOmics 會配置暫時執行儲存體,供工作流程引擎在執行期間使用。HealthOmics 提供暫時執行儲存做為檔案系統。
對於指定的工作流程或工作流程執行,您可以選擇動態或靜態執行儲存。根據預設,HealthOmics 會提供靜態執行儲存體。
注意
執行儲存體用量會對您的帳戶產生費用。如需靜態和動態執行儲存的定價資訊,請參閱 HealthOmics 定價
下列各節提供決定要使用的執行儲存類型時所要考慮的資訊。
動態執行儲存
我們建議對大多數執行使用動態執行儲存,包括需要更快開始時間的執行、您事先不知道儲存需求的執行,以及反覆開發測試週期。
您不需要預估執行所需的儲存體或輸送量。HealthOmics 會根據執行期間的檔案系統使用率,動態擴展或縮減儲存體大小。HealthOmics 也會根據工作流程的需求動態擴展輸送量。執行永遠不會因為檔案系統錯誤的儲存空間不足而失敗。
動態執行儲存提供比靜態執行儲存更快的佈建/取消佈建時間。更快速的設定是大多數工作流程的優點,也是開發/測試週期期間的優點。
執行完成後 (成功路徑或失敗路徑),getRun API 操作會在 storageCapacity 欄位中傳回執行所使用的最大儲存體。您也可以在位於日誌群組的執行資訊omics清單日誌中找到此資訊。對於在 2 小時內完成的動態儲存執行,最大儲存值可能無法使用。
對於動態執行儲存,執行會佈建使用 NFS 通訊協定的檔案系統。NFS 將 CREATE、DELETE 和 RENAME 檔案操作視為非等冪性,有時可能會導致程式碼必須正常處理的這些操作的競爭條件。例如,如果程式碼嘗試刪除不存在的檔案,則不應失敗。採用動態執行儲存之前,建議您調整工作流程程式碼,使其對非等冪檔案操作具有彈性。請參閱 安全處理非等冪操作的程式碼範例。
安全處理非等冪操作的程式碼範例
下列 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 shell。若要安全地移除檔案,即使檔案不存在,請使用:
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 會佈建下列輸送量值:
-
每個 TiB 佈建儲存容量的基準輸送量為 200 MB/s。
-
每個佈建 TiB 儲存容量的爆量輸送量高達 1300 MB/s。
如果指定的儲存體大小太低,則執行會失敗,並因檔案系統錯誤導致儲存不足。靜態執行儲存非常適合具有已知儲存需求的可預測工作流程。
靜態執行儲存體適用於具有高任務並行的大型高載工作負載 (例如,平行處理的大量 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 (靜態執行儲存體的最小容量) 足以進行此執行。