Azure HPC Cache 的預備功能可讓客戶將檔案預先載入快取中。
您可以使用此功能來擷取準備使用的工作檔案集,並在工作開始之前填入快取。 這項技術有時稱為快取預熱 (Cache Warming)。
預備快取可透過增加快取「叫用率」來改善效能。 如果用戶端電腦要求必須從後端儲存體讀取資源時,擷取和傳回該檔案的延遲可能會相當明顯,特別是當儲存體系統是內部部署 NAS 時。 如果您在開始計算工作之前,先用快取預備所需的檔案,則可提升作業期間的檔案要求效率。
此功能會使用 JSON 資訊清單檔來指定要載入的檔案。 每個預備作業都需要一個資訊清單檔。
建立快取預備作業的方法包括使用 Azure 入口網站,或本文件結尾所述的 Azure REST API 端點。
您最多可以建立 10 個預備作業。 根據快取的大小,大約可有 3 到 10 個預備作業可以同時執行;其他作業會排入佇列,直到資源釋出為止。
設定和必要條件
在建立預備作業之前,請先執行下列步驟:
- 建立 Azure HPC Cache。 (請參閱建立 Azure HPC Cache 以取得說明。)
- 請定義至少一個儲存體目標,並且建立其彙總命名空間路徑 (或路徑)。 儲存目標說明說明文件
- 建立預備作業資訊清單 (如下指示),並將其儲存在可供 HPC Cache 存取的 Blob 容器中。 或者,如果是使用 Azure REST API 建立預備作業,您可以將資訊清單儲存在 HPC Cache 可存取的任何 URL。
建立預備資訊清單檔
預備資訊清單是 JSON 檔案,可定義在準備作業執行時要預先載入快取的內容。
在資訊清單中,指定您要預先載入目錄或檔案的命名空間路徑。 您也可以設定包含和排除規則,以自訂載入的內容。
範例預備資訊清單
{
"config": {
"cache_mode": "0",
"maxreadsize": "0",
"resolve_symlink": "0",
"threads":"8",
"skip_estimation":"0"
},
"files": [
"/bin/tool.py",
"/bin/othertool.py"
],
"directories": [
{"path": "/lib/toollib"},
{
"path": "/lib/otherlib",
"include": ["\\.py$"]
},
{
"path": "/lib/xsupport",
"include": ["\\.py$"],
"exclude": ["\\.elc$", "\\.pyc$"]
}
],
"include": ["\\.txt$"],
"exclude": ["~$", "\\.bak$"]
}
預備資訊清單檔有三個區段:
設定 (
config):預備作業的設定檔案和目錄陳述式:
files:要預先載入的個別檔案directories:要預先載入的檔案路徑
全域的包含和排除陳述式 (
include和exclude):修改目錄預備作業的規則運算式字串
組態設定
資訊清單檔的 config 區段會設定下列參數:
快取模式:設定預備作業的行為。 選項為:
- 0 - 資料:將所有指定檔案資料和屬性載入快取中。 這是預設值。
- 1 - 中繼資料:僅載入檔案屬性。
- 2 - 估計:載入檔案屬性,並傳回檔案、目錄的估計數目,如果此資訊清單中的內容是以「資料」模式中執行,則會包含要預備的總計資料大小 (以位元組為單位)。
maxreadsize:設定每個檔案預先載入的最大位元組數值。 如果將此設定保留為 0 (預設),則無論大小都會一律載入整個檔案。resolve_symlink:如果您想要在預備時解析符號連結,請將此設定為 true (1)。 如果resolve_symlink已啟用,則不論包含和排除規則為何,符號連結目標都會完全預先載入。threads:要使用的預備執行緒數目。 有效值為 1 到 128。 預設值為 8,以在預備與回應用戶端要求之間取得平衡。skip_estimation:開始複製檔案之前,預備作業會估計要預備的資料量。 如果您想要直接進入檔案預備階段,請將skip_estimation旗標設定為 true (1)。 如果您略過估計階段,進度報告可能會較不精確。 預設值為 0,以包含估計階段。
檔案和目錄路徑
資訊清單的 files 和 directories 區段會指定在預備作業期間預先載入的檔案。
透過快取命名空間路徑來指定檔案和目錄。 這些是用戶端用來透過 HPC Cache 存取檔案的相同路徑,而且不需要與儲存體系統路徑或匯出名稱相同。 若要深入了解,請閱讀規劃彙總的命名空間。
路徑的起始位置是快取命名空間的根目錄。
注意
files 所列的項目會包含其中,即使符合後續的排除規則也一樣。
directories 值會保存準備要預先載入快取的內容路徑清單。 除非特別排除這些子樹狀目錄,否則所有子樹狀目錄都會包含在預備作業中。
目錄路徑值可以有自己的 include (包含) 和 exclude (排除) 陳述式,僅適用於其定義的路徑。 例如,命令行 "directories": [{"path": "/cache/library1", "exclude": "\\.bak$"}] 表示會預先載入命名空間路徑 /cache/library1/ 下的所有檔案,但會排除 .bak 結尾路徑中的檔案。
目錄層級的 include/exclude 陳述式,與下列所述的全域的 include 和 exclude 陳述式不同。 請仔細閱讀目錄層級陳述式與全域 include 和 exclude 陳述式互動的詳細說明。
注意
由於資訊清單檔的剖析方式影響,include 和 exclude 陳述式中有問題的字串字元需要使用兩個逸出字元來保護。 例如,比對 .txt 檔案時需使用 \\.txt 運算式。
Include 和 exclude 陳述式
在指定檔案和目錄之後,您可以指定全域的 include 和 exclude 陳述式。 這些全域設定適用於所有目錄, 也不適用於 files 陳述式中指定的檔案。
一般而言,規則會依序比對,因此資訊清單檔中越早出現的陳述式會優先套用。 本文中的描述也假設先前的規則已套用,且沒有相符項目。
Include 陳述式:掃描目錄時,預備作業會忽略不符合
include設定中規則運算式的所有檔案。Exclude 陳述式:掃描目錄時,預備作業會忽略符合
exclude設定中規則運算式的所有檔案。深入了解全域排除規則與其他規則的互動方式:
全域排除規則會覆寫全域包含規則。 也就是說,如果檔案名稱同時符合全域 include 運算式和全域 exclude 運算式,則預備作業不會預先載入該檔案。
目錄層級的包含規則會覆寫全域排除規則。
如果檔案名稱符合目錄層級 include 運算式和全域 exclude 運算式,則預備作業將會預先載入該檔案。
檔案陳述式會覆寫所有排除規則。
您可以省略 include 和 exclude 陳述式,以預備目錄中的所有檔案。
包含/排除規則及其比對檔案名稱的更多詳細資訊:
如果名稱符合個別目錄排除清單中的項目,將會略過。
如果有個別目錄的包含清單,則要包含或排除該名稱,取決於名稱是否出現在該列表中。
如果名稱符合全域排除清單中的項目,將會略過。
如果有全域包含清單,則出現在清單上的名稱會包含,未出現的則會予以排除。
如果存在個別目錄包含清單,則會排除名稱。 否則將會包含該名稱。
如果目錄和該目錄的上階都出現在目錄清單中,則會套用目錄的特定規則以及全域規則,並忽略上階目錄的規則。
名稱和規則區分大小寫。 不支援不區分大小寫的來源。
檔案規則加上目錄規則的總數不能超過 4000 筆。 任何包含/排除清單的規則運算式規則數目不能超過 5 筆。
如果有目錄規格彼此重疊,則會優先採用具有更明確路徑的目錄規格。
如果資訊清單在檔案清單或目錄清單中多次指定相同路徑,將會發生錯誤。
上傳預備資訊清單檔
當您的資訊清單檔就緒時,請上傳至 HPC Cache 可存取的儲存體帳戶 Azure Blob 容器。 如果您不是使用入口網站,而是使用 API 來建立預備作業,則可以選擇將檔案儲存在其他 Web 服務器,但您必須採取不同的步驟,以確保可供快取進行存取。
如果您是從 Azure 入口網站建立預備作業,請在 HPC Cache [預備快取] 設定頁面中選取資訊清單檔,如下所示。 在快取設定中選取後,將會自動建立共用存取簽章 (SAS) ,讓快取能夠有限地存取預備檔案。
如果您是使用 API 來建立預備作業,而不是使用入口網站,請確定快取已獲得該檔案的存取權。 或者,請將檔案儲存在可存取的位置 (例如,位於快取或儲存體網路中,由您控制的 Web 服務器上),或手動為您的預備檔案建立 SAS URL。
請閱讀使用共用存取簽章 (SAS) 授與 Azure 儲存體資源的有限存取權,以了解如何為預備資訊清單檔建立帳戶 SAS URL。 資訊清單檔必須可透過 HTTPS 存取。
快取會在預備作業啟動時存取一次資訊清單檔。 為快取產生的 SAS URL 不會公開。
建立預備作業
使用 Azure 入口網站來建立預備作業。 在入口網站中檢視您的 Azure HPC Cache,然後選取 [設定] 標題下的 [預備快取] 頁面。
![入口網站中 [預備] 頁面的螢幕擷取畫面,其中有數個狀態不同的作業。](media/prime-overview.png)
按一下資料表頂端的 [開始預備工作] 文字以定義新的作業。
在 [作業名稱] 欄位中,輸入預備作業的唯一名稱。
使用 [預備檔案] 欄位來選取您的預備資訊清單檔。 選取儲存您預備資訊清單的儲存體帳戶、容器和檔案。
![[開始預備作業] 頁面的螢幕擷取畫面,其中已填入作業名稱和預備檔案路徑。[Priming 檔案] 字段下方的連結標示為 [從現有的 Blob 位置選取]。](media/create-priming-job.png)
若要選取預備資訊清單檔,請按一下連結以選取儲存目標。 然後選取儲存 .json 資訊清單檔的容器。
如果您找不到資訊清單檔,您的快取可能無法存取檔案的容器。 請確定快取可與儲存體帳戶建立網路連線,而且能夠從容器讀取資料。
管理預備作業
預備作業會列在 Azure 入口網站的 [預備快取] 頁面中。
此頁面會顯示每個作業的名稱、狀態、目前狀態,以及有關預備進度的摘要統計資料。 [詳細資料] 資料行中的摘要會在作業進行時定期更新。 [工作狀態] 欄位會在啟動預備作業時填入;如果發生問題,此欄位也會提供基本錯誤資訊,例如無效的資訊清單。
當作業執行時,[完成百分比] 資料行會顯示進度的估計值。
預備作業在啟動之前,狀態為 [已排入佇列]。 而 [作業狀態]、[完成百分比] 和 [詳細資料] 欄位為空白。

按一下資料表右側的 ... 區段以暫停或繼續預備作業。 (狀態可能需要數分鐘的時間才會更新。)
若要刪除預備作業,請在清單中選取,然後使用資料表頂端的 [停止] 控制項。 您可以使用 [停止] 控制項來刪除處於任何狀態的作業。
Azure REST API
您可以使用這些 REST API 端點來建立和管理 HPC Cache 預備作業。 這些是 REST API 2022-05-01 版本的一部分,因此請確定您在 api_version 字詞中使用該字串。
請閱讀 Azure REST API 參考資料,以了解如何使用這些工具。
新增預備作業
startPrimingJob 介面會建立預備作業並排入佇列。 當有可用資源時,作業會自動啟動。
URL: POST
https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/startPrimingJob?api-version=2022-05-01
BODY:
{
"primingJobName": "MY-PRIMING-JOB",
"primingManifestUrl": "MY-JSON-MANIFEST-FILE-URL"
}
針對 primingManifestUrl 值,請傳遞檔案的 SAS URL,或是快取可存取的其他 HTTPS URL。 若要深入了解,請閱讀上傳預備資訊清單檔。
停止預備作業
如果作業正在執行,則 stopPrimingJob 介面會取消作業,並將其從作業清單中移除。 使用此介面可刪除任何狀態的預備作業。
URL: POST
https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/stopPrimingJob?api-version=2022-05-01
BODY:
{
"primingJobId": "MY-JOB-ID-TO-REMOVE"
}
取得預備作業
使用 Get cache API 列出快取的預備作業。 此 API 會傳回快取的大量相關資訊;請在 [快取屬性] 區段中尋找預備作業資訊。
將會傳回預備作業名稱和識別碼,以及其他資訊。
URL: GET
https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME?api-version=2022-05-01
BODY:
暫停預備作業
pausePrimingJob 介面會暫停執行中的作業。
URL: POST
https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/pausePrimingJob?api-version=2022-05-01
BODY:
{
"primingJobId": "MY-JOB-ID-TO-PAUSE"
}
繼續預備作業
使用 resumePrimingJob 介面重新啟用暫停的預備作業。
URL: POST
https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/resumePrimingJob?api-version=2022-05-01
BODY:
{
"primingJobId": "MY-JOB-ID-TO-RESUME"
}
常見問題集
我可以重複使用預備作業嗎?
不盡然,因為清單中的每個預備工作都必須有唯一的名稱。 從清單中刪除預備作業之後,您可以建立具有相同名稱的新作業。
您可以建立多個參考相同資訊清單檔的預備作業。
失敗或已完成的預備工作會保留在清單中多久?
預備作業會一直保存在清單中,直到您將其刪除為止。 在入口網站的 [預備快取] 頁面上,勾選作業旁邊的核取方塊,然後選取清單頂端的 [停止] 控制項以刪除作業。
如果我預先載入的內容大於快取儲存體會發生什麼事?
如果快取已滿,之後擷取的檔案將會覆寫先前所擷取的檔案。
下一步
- 如需 HPC Cache 預備的更多說明,請遵循取得 Azure HPC Cache 的說明中的指示。
- 深入了解 Azure REST API