Google Cloud Managed Lustre 檔案系統支援使用者、群組和專案配額,方便管理員管理儲存空間用量,確保資源分配公平。本文說明如何設定、查看及管理這些配額。
什麼是檔案系統配額?
在 Managed Lustre 中,您可以設定配額,限制使用者、群組或專案在檔案系統中可使用的磁碟空間量和檔案數量。
配額適用於不同實體:
- 使用者配額會限制個別非根使用者消耗的儲存空間。
- 群組配額會限制特定群組中所有非根成員的儲存空間用量。
- 專案配額會限制與特定專案 ID 相關聯的檔案和目錄所耗用的儲存空間。這個專案 ID 是 Lustre 檔案系統 ID,使用
lfs project定義,並非您的Google Cloud 專案 ID。詳情請參閱「設定專案配額」。
配額是針對下列兩種資源類型設定:
- 區塊限制是指可使用的磁碟空間量上限。
- Inode 限制是指可建立的檔案和目錄數量上限。
每種資源類型可有兩層限制:
軟性限制是配額門檻,超出門檻時會觸發可設定的寬限期。在寬限期內,使用者、群組或專案可暫時超出軟性限制,最多可超出硬性限制 (如有),讓他們有時間減少用量,以免遭到封鎖。寬限期結束後,如果用量仍超過軟性限制,系統就會強制執行軟性限制,將其視為硬性限制,並封鎖所有新的寫入作業,直到磁碟空間或 inode 數量低於軟性限制為止。
預設的寬限期為一週。
硬性限制是指絕對上限。達到這個上限後,任何後續寫入作業都會失敗,並傳回「Disk quota exceeded」(超過磁碟配額) 錯誤。
管理使用者和群組
Lustre 會依據用戶端的 POSIX 屬性,取得使用者和群組名稱與 ID。
用戶端發出檔案系統要求時,會將本機 UID 和 GID 傳送至 Lustre 伺服器。伺服器會使用這些 POSIX 屬性,強制執行標準檔案權限並追蹤配額用量。
如要在多使用者環境中維持一致的行為,所有掛接 Lustre 檔案系統的用戶端都必須同步處理 UID 和 GID 對應,通常是透過 LDAP 或 NIS 等集中式服務管理。
根使用者不受配額限制。使用 sudo 執行的指令也會略過配額檢查。
事前準備
如要管理 Lustre 配額,您需要:
- 用戶端可存取有效的 Google Cloud Managed Lustre 檔案系統。
sudo或用戶端系統的 Root 權限,才能執行lfs指令。
設定配額
使用 lfs setquota 指令設定區塊和 inode 限制。您可以只指定區塊限制、只指定 inode 限制,或同時指定兩者;同樣地,您可以指定硬性限制、軟性限制,或同時指定兩者。
sudo lfs setquota -u | g | p | U | G | P UGP_VALUE \
-b SOFT_BLOCK_LIMIT -B HARD_BLOCK_LIMIT \
-i SOFT_INODE_LIMIT -I HARD_INODE_LIMIT \
MOUNT_DIR
其中:
-u可依使用者名稱或 UID 指定使用者。-g依群組名稱或 GID 指定群組。-p會依專案 ID 指定專案。U、G和P會為未設定特定配額的任何使用者、群組或專案設定預設配額。- UGP_VALUE 是使用者名稱、群組名稱、UID、GID 或專案 ID。 如果您要指定預設使用者、群組或專案配額,請省略這個值。
-b和-B是區塊用量的軟性限制和硬性限制。軟性限制應小於硬性限制。值可以位元組 (B)、KB (K)、MB (M)、GB (G) 或 TB (T) 為單位指定。預設單位為 KB。-i和-I分別是 inode 用量的軟性限制和硬性限制。軟性限制應小於硬性限制。- MOUNT_DIR 是 Managed Lustre 檔案系統的掛接點。
請注意,您無法在建立配額的同時設定寬限期。軟性限制的預設寬限期為一週。如要更新寬限期,請參閱「設定寬限期」。
範例
設定使用者配額
為 user1 設定軟性區塊限制 100 GB、硬性區塊限制 120 GB、軟性 inode 限制 10,000 和硬性 inode 限制 12,000:user1/mnt/lustre
sudo lfs setquota -u user1 -b 100G -B 120G -i 10000 -I 12000 /mnt/lustre
設定群組配額
在「/mnt/lustre」上為「groupA」設定 50 TB 的硬性封鎖限制:
sudo lfs setquota -g groupA -B 50T /mnt/lustre
設定專案配額
專案配額需要額外步驟,才能將目錄和檔案與專案 ID 建立關聯:
使用
lfs project指令指派專案 ID。這個 ID 是任意整數,用於識別專案。sudo lfs project -spr LFS_PROJECT_ID PATH/TO/DIR/OR/FILE其中:
-s會設定繼承,以便在指定目錄中建立的新檔案和目錄繼承專案 ID。-r會將專案 ID 遞迴套用至所有子目錄和檔案。-p會告知指令在指定檔案或目錄中設定指定的專案 ID。- PATH/TO/DIR/OR/FILE 是要設定專案 ID 的目錄或檔案路徑。只能指定一個路徑或檔案。
如需其他標記和資訊,請從用戶端執行
man lfs project。舉例來說,如要將專案
101指派給/mnt/lustre/my-project和所有子項 (包括新子項和現有子項),請執行以下指令:sudo lfs project -spr 101 /mnt/lustre/my-project使用
lfs setquota設定配額:sudo lfs setquota -p LFS_PROJECT_ID \ -b SOFT_BLOCK_LIMIT -B HARD_BLOCK_LIMIT \ -i SOFT_INODE_LIMIT -I HARD_INODE_LIMIT \ MOUNT_DIR
設定預設配額
為所有沒有特定配額設定的使用者設定 50 TB 的硬性封鎖限制:
sudo lfs setquota -U -B 50T /mnt/lustre
修改配額
如要修改現有配額,請使用新值再次執行 lfs setquota。這項指令會覆寫指定使用者、群組或專案的先前設定。
設定寬限期
寬限期是指使用者、群組或專案超過軟性限制後,軟性限制變成硬性限制前的時間長度。根據預設,這個值為一週。寬限期適用於所有使用者、群組或專案,無法針對特定 ID 設定。
如要更新寬限期,請使用 lfs setquota -t 指令:
sudo lfs setquota -t -u | g | p \
-b BLOCK_GRACE_PERIOD -i INODE_GRACE_PERIOD \
MOUNT_DIR
其中:
-u會將寬限期套用至使用者配額。-g會對群組配額套用寬限期。-p會將寬限期套用至專案配額。-b和-i分別指定區塊和 inode 的寬限期。預設單位為秒。您可以使用其他單位,格式為:XwXdXhXmXs(週、天、小時、分鐘、秒)。您可以為其中一種或兩種配額類型設定限制。指定
'notify'(而非時間值),即可在超過軟性限制時,以星號標示lfs quota的輸出內容。指定'notify'後,系統不會封鎖新的寫入作業,直到達到硬性限制為止。
舉例來說,如要為所有使用者配額設定 7 天的封鎖寬限期,請執行下列操作:
sudo lfs setquota -t -u -b 7d /mnt/lustre
如要為專案配額設定 24 小時的 inode 寬限期,請執行下列操作:
sudo lfs setquota -t -p -i 24h /mnt/lustre
如要在超過封鎖軟性限制時收到通知,請按照下列步驟操作:
sudo lfs setquota -t -u -b 'notify' /mnt/lustre
查看現有配額
lfs quota 指令會顯示目前使用者的用量和限制:
lfs quota MOUNT_DIR
如需完整選項清單,請從用戶端執行 man lfs quota。
舉例來說,如要在 /mnt/lustre 上查看 user1 的配額:
sudo lfs quota -u user1 /mnt/lustre
請注意,如要查看其他使用者的配額和用量,必須使用 sudo 執行指令。
輸出內容如下:
Filesystem:Lustre 掛接點。kbytes:目前以 KB 為單位的磁碟用量。bquota:以 KB 為單位的軟性封鎖限制。blimit:硬性封鎖限制 (以 KB 為單位)。bgrace:超過軟性限制後,剩餘的寬限期。星號 (*) 表示超出軟性限制。files:使用的 inode 數量。iquota:軟性 inode 限制。ilimit:硬性節點限制。igrace:如果超過 inode 軟性限制,剩餘的寬限期。星號 (*) 表示超出軟性限制。
如要查看所有使用者配額的設定寬限期,請按照下列步驟操作:
lfs quota -t -u /mnt/lustre
移除配額
如要移除配額,請將軟性限制和硬性限制設為 0。
sudo lfs setquota -u | g | p | U | G | P UGP_VALUE -b 0 -B 0 -i 0 -I 0 MOUNT_DIR
舉例來說,如要移除 user1 的區塊和 inode 配額:
sudo lfs setquota -u user1 -b 0 -B 0 -i 0 -I 0 /mnt/lustre
如要移除預設專案的封鎖限制:
sudo lfs setquota -P -b 0 -B 0 /mnt/lustre
常見問題
使用 Lustre 配額時,請注意下列常見問題:
授權快取:授權快取是 Lustre 的一項功能,可讓用戶端從物件儲存目標 (OST) 接收儲存空間區塊做為「授權」,用於寫入資料。如果用戶端已取得這項快取授權,即使資料仍在用戶端的本機快取中,且尚未實際寫入磁碟,用戶端仍可立即傳回寫入作業的成功訊息給使用者。這項最佳化功能可盡量縮短延遲時間。
授予的快取可能會導致配額超出上限。因為授權的快取允許用戶端繼續將資料寫入快取,即使伺服器端配額已用盡,使用者仍可能超出硬性限制。
專案 ID 指派錯誤:如要使用專案配額,必須使用
lfs project -spr為目錄和檔案正確指派專案 ID。如果省略-r,表示專案 ID 不會套用至現有檔案和子目錄。如果省略-s,稍後建立的新檔案和目錄就不會沿用專案 ID。多個配額和「最嚴格者勝出」:使用者可能同時受到使用者配額、一或多個群組配額,以及一或多個專案配額的限制。Lustre 會強制執行最嚴格的限制。 也就是說,使用者可能擁有大量個人配額,但如果專案目錄中的檔案超出專案配額,就會受到限制。
略過根使用者配額:
root使用者的寫入作業會略過配額強制執行。 即使為其他使用者設定配額,管理工作仍可能填滿檔案系統。fallocate不會遵守配額:使用者可以透過fallocate在檔案系統上保留超過硬性限制的空間。