租用檔案

作業 Lease File 會建立和管理檔案上的鎖定,以進行寫入和刪除作業。 Lease File 2019-02-02 版和更新版本支援。

您可以在下列其中一種模式中呼叫 Lease File 作業:

  • Acquire:要求新租用。
  • Change:變更現有租用的識別碼。
  • Release,如果不再需要租用,則為釋放租用,讓另一個用戶端可以立即取得檔案的租用。
  • Break,以強制結束租用,但請確定另一個用戶端在目前的租用期間過期之前,無法取得新的租用。

通訊協定可用性

已啟用檔案共享通訊協定 可用
SMB 是
NFS 否

要求

您可以依照下列方式建構 Lease File 要求。 建議使用 HTTPS。

方法 要求 URI HTTP 版本
Put https://myaccount.file.core.windows.net/myshare/mydirectory/myfile?comp=lease HTTP/1.1

將要求 URI 中的路徑元件取代為您自己的路徑元件,如下所示:

路徑元件 Description
myaccount 儲存體帳戶的名稱。
myshare 檔案共用的名稱。
mydirectorypath 選擇性。 目錄的路徑。
myfile 檔案的名稱。

URI 參數

您可以在要求 URI 上指定下列其他參數。

參數 描述
timeout 選擇性。 timeout 參數以秒為單位。 如需詳細資訊,請參閱設定 Azure 檔案儲存體 作業的逾時

要求標頭

下表描述必要的和選用的要求標頭。

要求標頭 描述
Authorization 必要。 指定授權配置、帳戶名稱和簽章。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
Datex-ms-date 必要。 指定要求的「國際標準時間」(UTC)。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
x-ms-version 選擇性。 指定用於這個要求的作業版本。 如需詳細資訊,請參閱 Azure 儲存體服務的版本
x-ms-lease-id: <ID> 需要更新、變更或釋放租用。

您可以使用任何有效的 GUID 字串格式來指定 的值 x-ms-lease-id 。 如需有效格式的清單,請參閱 Guid 建構函式 (字串)
x-ms-lease-action: <acquire ¦ change ¦ release ¦ break> acquire:要求新租用。 如果檔案沒有作用中的租用,Azure 檔案儲存體 會在檔案上建立租用,並傳回新的租用標識符。 如果檔案具有作用中的租用,您只能使用使用中的租用標識符來要求新的租用。

change:變更使用中租用的租用標識符。 change必須包含 中的x-ms-lease-id目前租用標識碼,以及 中的新租用標識符x-ms-proposed-lease-id

release:釋放租用。 如果要求上指定的租用標識符符合與檔案相關聯的租用標識碼,您可以釋放租用。 釋放租用可讓另一個用戶端在發行完成後立即取得檔案的租用。

break:如果檔案具有作用中的租用,則會中斷租用。 任何授權的要求都可以中斷租用。 要求不需要指定相符的租用標識碼。 無限租用會立即中斷。
x-ms-lease-duration: -1 只有在作業上 acquire 才允許和必要。 -1必須是 ,表示永不過期的租用。
x-ms-proposed-lease-id: <ID> 選擇性為 acquire,且 為必要專案 change。 建議的租用識別碼,使用 GUID 字串格式。 如果建議的租用識別碼格式不正確,Azure 檔案儲存體 會400 (Invalid request)傳回 。 如需有效格式的清單,請參閱 Guid 建構函式 (字串)
x-ms-client-request-id 選擇性。 提供客戶端產生的不透明值,其中包含 1-kibibyte (KiB) 設定記錄時記錄在記錄中的字元限制。 強烈建議您使用此標頭,將用戶端活動與伺服器收到的要求相互關聯。 如需詳細資訊,請參閱監視 Azure 檔案儲存體
x-ms-file-request-intent 如果 Authorization 標頭指定 OAuth 令牌,則為必要專案。 可接受的值為 backup。 此標頭會Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action指定如果指派給使用 Authorization 標頭授權之身分識別的 RBAC 原則中包含 或 Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action ,則應該授與 或 。 適用於 2022-11-02 版和更新版本。
x-ms-allow-trailing-dot: { <Boolean> } 選擇性。 版本 2022-11-02 和更新版本。 布爾值會指定是否應該修剪要求 URL 中的尾端點。 如需詳細資訊,請參閱 命名和參考共用、目錄、檔案和元數據

要求本文

無。

範例要求

下列範例要求會示範如何取得租用:

Request Syntax:  
PUT https://myaccount.file.core.windows.net/myshare/mydirectory/myfile?comp=lease HTTP/1.1  
  
Request Headers:  
x-ms-version: 2019-07-07  
x-ms-lease-action: acquire  
x-ms-lease-duration: -1  
x-ms-proposed-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
x-ms-date: <date>  
Authorization: SharedKey testaccount1:esSKMOYdK4o+nGTuTyeOLBI+xqnqi6aBmiW4XI699+o=  

回應

回應包括 HTTP 狀態碼和一組回應標頭。

狀態碼

為租用作業傳回的成功狀態碼如下:

  • Acquire:成功的作業會傳回狀態碼「201 (已建立)」。
  • Change:成功的作業會傳回狀態碼「200 (OK)」。
  • Release:成功的作業會傳回狀態碼「200 (OK)」。
  • Break:成功的作業會傳回狀態碼「202 (已接受)」。

如需狀態代碼的相關信息,請參閱 狀態和錯誤碼

回應標頭

這項作業的回應包括下列標頭。 回應也可以包含額外的標準 HTTP 標頭。 所有標準標頭都符合 HTTP/1.1 通訊協議規格

語法 描述
ETag 包含值,您可以在引號中以條件方式執行作業。 作業 Lease File 不會修改這個屬性。
Last-Modified 上次修改檔案的日期/時間。 如需詳細資訊,請參閱 標頭中的日期時間值表示

檔案上的任何寫入作業,包括檔案元數據或屬性的更新,都會變更檔案的上次修改時間。 作業 Lease File 不會修改這個屬性。
x-ms-lease-id: <id> 當您要求租用時,Azure 檔案儲存體 傳回唯一的租用標識碼。 當租用處於作用中狀態時,您必須包含租用標識碼,以及寫入檔案的任何要求,或變更或釋放租用。

成功的更新作業也會傳回作用中租用的租用識別碼。
x-ms-lease-time: seconds 只有在成功要求中斷租用時,才會傳回 。 0 會針對立即中斷傳回 。
x-ms-request-id 可唯一識別所做的要求,並可用於對要求進行疑難解答。 如需詳細資訊,請參閱 針對 API 作業進行疑難解答
x-ms-version 指出用來執行要求的 Azure 檔案儲存體 版本。
Date UTC 日期/時間值,指出起始響應的時間。 服務會產生此值。
x-ms-client-request-id 可用來針對要求和對應的回應進行疑難解答。 如果此標頭存在於要求中,這個標頭的值會等於標頭的值 x-ms-client-request-id 。 此值最多為 1,024 個可見的 ASCII 字元。 x-ms-client-request-id如果要求中沒有標頭,則不會出現在回應中。

回應本文

無。

範例回應

以下是要求取得租用的範例回應:

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Server: Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402  
x-ms-version: 2019-07-07
x-ms-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
Date: <date>  

授權

帳戶擁有者可以呼叫這項作業。 此外,任何具有共用存取簽章且有權寫入此檔案或其共用的用戶端都可以這麼做。

備註

檔案上的租用提供檔案的獨佔寫入和刪除存取權。 若要寫入具有使用中租用的檔案,客戶端必須包含具有寫入要求的作用中租用標識碼。 租用會授與無限持續時間。

當用戶端取得租用時,會傳回租用識別碼。 如果取得要求中未指定租用標識符,Azure 檔案儲存體 會產生租用標識符。 用戶端可以使用此租用標識符來變更其租用標識碼或釋放租用。

當租用為作用中,租用識別碼必須包含在下列任何作業的要求:

如果未包含租用識別碼,則這些作業在租用的檔案上失敗,並具有 412 – Precondition failed

下列作業在租用的檔案上成功,但不包含租用標識碼:

在具有使用中租用的檔案上,不需要包含作業的租用 GET 標識符。 不過,所有 GET 作業都支持條件式租用參數。 在這個類型的參數中,只有在要求隨附的租用標識符有效時,才會繼續作業。

在包含使用中租用的檔案的共用上,允許所有共享作業,包括 刪除共用。 因此,即使其中的檔案有作用中的租用,您也可以刪除共用。

租用狀態

下圖顯示租用的三種狀態,以及造成租用狀態變更的命令或事件。

顯示檔案租用狀態和狀態變更觸發程式的圖表。

租用可以處於三種狀態,根據租用是否已鎖定或解除鎖定,以及租用是否在該狀態中可更新。 上圖中顯示的租用動作會導致狀態轉換。

  • Available:租用已解除鎖定,而且可以取得。 允許的動作: acquire
  • Leased:租用已鎖定。 允許的動作: acquire (相同的租用識別碼) 、 changereleasebreak
  • Broken:租用已中斷。 允許的動作:acquirereleasebreak

請注意,共用快照集中的檔案無法授與租用,因為快照集是唯讀的。 對共用快照集中的檔案要求租用會導致狀態代碼 400 (不正確的要求) 。

如果檔案租用處於 中斷 狀態,而 Put Range 作業會寫入檔案,則租用狀態會變更為 [可用]。 不過,如果檔案已設定只讀屬性,伺服器將會傳回衝突 409。

呼叫 不會更新Lease File檔案的 Last-Modified-Time 屬性。

下表顯示具有各種租用狀態的檔案動作結果。 字母 (A) 、 (B) 和 (C) 代表租用標識符,而 (X) 代表 Azure 檔案儲存體 所產生的租用標識符。

依租用狀態對檔案的使用嘗試結果

動作 可用 已租用 (A) 已中斷 (A)
使用 A (寫入) 失敗 (412) 已租用 (A),寫入成功 失敗 (412)
使用 (B) 寫入 失敗 (412) 失敗 (409) 失敗 (412)
寫入,未指定租用 可用,寫入成功 失敗 (412) 可用,寫入成功
使用) A (讀取 失敗 (412) 已出租 (A),讀取成功 失敗 (412)
使用 B (讀取) 失敗 (412) 失敗 (409) 失敗 (412)
讀取,未指定租用 可用,讀取成功 已出租 (A),讀取成功 已中斷 (A),讀取成功

依租用狀態對檔案的租用作業結果

動作 可用 已租用 (A) 已中斷 (A)
Acquire:沒有建議的租用識別碼 已租用 (X) 失敗 (409) 已租用 (X)
Acquire (A) 已租用 (A) 已租用 (A) 已租用 (A)
Acquire (B) 已租用 (B) 失敗 (409) 已租用 (B)
Break 失敗 (409) 已中斷 (A) 已中斷 (A)
Change,(A) 到 (B) 失敗 (409) 已租用 (B) 失敗 (409)
Change,(B) 到 (A) 失敗 (409) 已租用 (A) 失敗 (409)
Change,(B) 到 (C) 失敗 (409) 失敗 (409) 失敗 (409)
Release (A) 失敗 (409) 可用 可用
Release (B) 失敗 (409) 失敗 (409) 失敗 (409)

另請參閱