混合式檔案存取需求
先前的單元大多著重在您的儲存體解決方案正在進行的「作業」。 此單元著重在您的資料所在的「位置」。 具體來說,就是混合式檔案存取考量,以及如何處理這些考量。
混合式檔案存取概觀
您已決定在 Azure 中執行目前在您的資料中心內執行的 HPC 工作負載。 您的計算環境會存取 NAS 上的資料,這會為您的工作負載提供 NFSv3 作業。 其已在那裡執行多年,但您的 NAS 環境可能即將到達其週期結束。 您正考慮長期移轉至雲端,而非更換它。
在您進行此決策之後,但在您的 HPC 工作負載進行完整雲端部署之前,您要判斷 Azure 策略,並建立基準帳戶/訂用帳戶/安全性設定。 現在困難的部分:移動您的 HPC 工作負載!
增建您的 HPC 叢集與其管理平面已超出此課程模組的範圍。 我們假設您已決定要在叢集中執行的虛擬機器類型和數量。
此時,我們也假設您的目標是要依原樣執行工作負載。 也就是說,您不會修改目前在內部部署中部署的邏輯或存取方法。 這意味著您的程式碼預期資料位於叢集成員本機檔案系統中的目錄路徑。
第一個目標是了解所需的資料和來源。 您的資料可能位於單一 NAS 環境的單一目錄中,也可能分散到各種不同的環境。
下一個目標是判斷執行工作負載所需的資料量。 來源資料有數 GB,還是有數百 TB?
最後,您必須決定如何在 Azure 計算中呈現資料。 它會在本機提供給每個 HPC 叢集機器,還是透過雲端式 NAS 解決方案共用?
遠端資料存取考量
您想要在 Azure 中執行基因體學工作負載。 您的資料會由基因定序儀在內部部署環境產生,並傳送至本機 NAS 環境。 內部部署研究人員會基於各種用途取用資料。 研究人員可能也想要取用您希望在 Azure 中執行的 HPC 工作負載結果。 但其中有些人使用內部部署工作站來執行此作業。 我們也假設會定期產生新的基因資料。 因此,在需要取代/重新整理資料之前,您可以在有限的間隔內執行目前的工作負載。
挑戰是以具成本效益的方式即時將資料呈現給 Azure 計算,但仍保留內部部署存取權。
以下是當您嘗試在 Azure 中執行 HPC 工作負載時要詢問的一些主要問題:
- 我們可以將來源資料移至 Azure,而不需保留內部部署的複本嗎?
- 我們可以在 Azure 儲存體中儲存結果資料,而不需保留內部部署的複本嗎?
- 內部部署使用者是否需要同時存取來源或結果資料?
- 如果需要,他們能夠在 Azure 中操作資料,還是需要將資料存放在內部部署?
如果資料需要保留在內部部署中,則需要複製多少資料到 Azure,才能供工作負載使用? 當您處理資料之後,一直到您需要處理一組新資料之前,相隔多長時間? 您的工作負載是否將在該時間範圍內執行?
您也需要考慮與 Azure 的網路連線能力。 您是否只能對 Azure 進行網際網路存取? 根據要複製/傳輸的資料大小和重新整理之間的時間量而定,該限制可能沒問題。 或許您每次都要複製大量資料。 您可能需要透過廣域網路 (WAN) 連線到使用 Azure ExpressRoute 的 Azure,其可提供更多頻寬來複製/傳輸資料。
如果您已經有與 Azure 的 ExpressRoute 連線,以下是下一個考量:您的資料複製作業有多少個連線可以使用? 如果連結過度飽和,您可能需要考慮傳輸資料的當日時段。 或者,您可能想要設定較大的 ExpressRoute 連線來容納大型資料傳輸。
如果您將資料移至 Azure,您可能需要考量如何加以保護。 例如,您可能有一個使用目錄服務的內部部署 NFS 環境,該服務有助於將權限延伸到您的使用者。 如果您計劃將此安全性複製到 Azure,就必須決定是否需要目錄服務作為 Azure 增建的一部分。 但是,如果您的工作負載受限於 HPC 叢集,而且結果會傳輸回到您的本機環境,則可以省略這些需求。
接下來,我們將考量存取資料的方法:快取、複製及同步處理。
快取、複製及同步處理
我們將討論您可用來將資料新增至 Azure 的一般方法。 這項資料傳輸討論的重點在於作用中資料,而不是資料封存和備份。
假設在我們的討論中傳輸的資料是 HPC 工作負載的「工作集」。 在生命科學 HPC 環境中,資料可能包含原始基因資料之類的來源資料、用來處理該資料的二進位檔,或參考基因體之類的補充資料。 它必須在抵達時或不久之後立即處理。 資料也必須存放於具有 IOPS、延遲、輸送量與成本之適當效能設定檔的媒體上。 相比之下,封存/備份資料最常傳輸到可能最便宜的儲存體解決方案,其不適合高效能存取。
傳輸使用中資料的主要方法是「快取」、「複製」及「同步處理」。 我們將從複製開始討論每個方法的優缺點。
複製資料是移動資料最常見的方法。 根據您使用的工具而定,資料會以各種不同的方式複製。
考量下列因素:
- 檔案大小。
- 檔案數目。
- 用來傳輸資料的可用輸送量。
- 您必須進行傳輸的時間量。
如果您要將數個合理大小的檔案傳輸到遠端目的地,就需要 cp
之類的基本複製工具。 如果您在不安全的網路上傳輸資料,建議您使用 scp
而不是cp
:scp
可透過安全殼層 (SSH) 連線提供加密。
根據您要複製資料的位置而定,有許多方法可將複製作業最佳化。 例如,若您要將檔案直接複製到每部 HPC 機器,您可以在每個節點上排程個別的複製作業。
當您跨 WAN 連結複製資料時,其中一個考量就是要複製的檔案與資料夾數量。 如果您要複製許多小型檔案,建議您合併使用複製與封存 (例如 tar
),以便從 WAN 連結移除中繼資料額外負荷。 將 .tar 檔案複製到 Azure,然後將資料複製到機器。
另一個有關複製的問題牽涉到中斷的風險。 例如,若您嘗試複製大型檔案且發生傳輸錯誤,則使用 cp
將沒有用,因為該命令無法從中斷處重新啟動。
複製資料的最後一個考量是您的複本可能會變成過時。 例如,您可能將資料集複製到 Azure。 同時,某個內部部署使用者可能已更新一或多個來源檔案。 您必須判斷用來確保您使用正確資料的流程。
同步處理資料是一種複製形式,但更完善。 除了從來源複製資料之外,rsync
之類的工具會新增在來源與目的地之間同步處理資料的功能。 rsync
會根據檔案大小與修改日期來確保檔案的最新狀態。 同步處理可讓您將使用過時檔案的可能性降至最低。
rsync
具有復原功能。 例如,若您要複製大型檔案且有傳輸問題,rsync
可以從中斷的位置繼續。
rsync
是免費且容易實作的。 它的功能已超出我們在這裡所描述的功能。 它可讓您根據內部部署資料,在 Azure 中建立同步處理的檔案系統。
rsync
也具備我們應提及的限制。 首先,它是「單一執行緒」工具。 它一次只能執行一個作業,而且無法平行處理資料存取。 複製公用程式 cp
也是單一執行緒公用程式。 因此,這些工具未針對涉及大量資料與短時間範圍的大規模複製/同步作業進行最佳化。 此外,您還需要執行工具來同步處理資料。 執行工具會為您的環境增加複雜度,因為您需要確定其會根據您的時間範圍需求執行。 例如,您可能想要排程包含 rsync
的指令碼。 此方法要求您新增指令碼的記錄,以防發生問題。 這也表示您需要留意問題。 複雜度層級可能會快速提升。
如果您執行的是商業 NAS 解決方案,則可購買更完善且提供多執行緒效能的伺服器層級同步處理工具。 這些工具一律會在啟用並設定之後運作,並在一或多個來源與目的地之間同步處理資料。
複製及同步處理會傳輸來源資料的完整複本。 完整的檔案傳輸可能適用於較小的資料集或檔案大小。 如果來源資料包含許多大型檔案,則可能導致明顯的延遲。 傳輸的資料越多,傳輸的時間就越長。 同步處理將可確保您只會將新檔案新增至雲端。 但那些檔案仍然需要完整傳輸。 在某些情況下,您的 HPC 工作負載可能不需要一組完整的指定檔案。 它可能只要求特定檔案區域的存取權。
快取資料是將資料新增至 Azure 的第三種方法。 「快取」指的是透過快取來擷取並展示檔案資料。 快取可以位於個別的本機用戶端上,也可以是服務所有 HPC 機器的分散式快取。 快取通常用來將延遲降至最低,因此,將快取放置在延遲邊界上是提供資料的最佳方法。 例如,您可以透過將分散式快取放置在透過 WAN 連結連線至內部部署儲存體的 Azure 計算中,透過 WAN 連線來快取資料要求。
在此課程模組中,我們特別提及「檔案快取」,也就是快取本身可處理來自機器的要求。 它會從後端儲存體環境 (例如 NFS NAS 環境) 擷取資料,並將該資料呈現給用戶端。
快取的威力是雙重的。 首先,快取不會擷取整個檔案。 快取會擷取所要求的檔案子集或位元組範圍,而非整個檔案。 擷取會根據那些位元組範圍的用戶端要求來進行。 此方法可讓您在只需要檔案的一小部分時,將擷取整個大型檔案所造成的效能損失降到最低。
其次,快取會將重複存取經常要求的資料最佳化。 當位元組範圍位於快取之後,後續對該資料的要求就會變快。 只有第一次擷取時,才會進行慢速擷取。 當您執行的大量 HPC 用戶端/執行緒正在存取一組通用檔案時,您可以獲得顯著的好處。
快取會為混合式案例提供另一種優勢。 資料只會暫時存放在 Azure 中 (在快取中)。 而且它只會在 HPC 工作負載的作業期間存放。 因此,您可以減少涉及將更具體的資料移動到 Azure 的後勤額外負荷。 您可以將資料隱私權和安全性的顧慮與快取和 HPC 機器本身隔離開來。
最後,某些快取解決方案會提供所謂的「屬性檢查」。 就像同步處理一樣,快取會定期檢查來源的檔案屬性,並在來源的檔案修改幅度較大時,擷取位元組範圍。 此架構確保可您的 HPC 環境一律會使用最新資料來運作。