安全修復 SUSE Linux Enterprise LVM 精簡配置空間不足的問題

在做出任何改變之前,你應該確定什麼?

首先確定精簡池的資料空間、元資料空間或兩者都已耗盡。這一區別會影響恢復計劃。精簡池包含一個用於儲存已指派資料區塊的資料邏輯磁碟區 (LV) 和一個用於追蹤這些分配的元資料邏輯磁碟區 (LV)。精簡邏輯磁碟區的虛擬大小可以超過池的實體容量,這正是精簡配置的意義所在,但也正是需要監控過度分配的原因。

SUSE Linux Enterprise Server 15 SP7 文件確認,精簡磁碟區會按需從精簡池中分配空間,且虛擬磁碟區的總大小可能會超過可用實體儲存空間。上游 LVM 精簡池文件增加了一條重要的操作規則:在精簡池Data%達到Meta%100% 之前擴充此池。請參閱《SUSE Linux Enterprise Server 15 SP7 儲存管理指南》和《LVM 精簡設定手冊》。

1. 是資料空間已滿,還是元資料空間已滿?

使用明確的列運行lvs,而不是依賴通用的磁碟空間檢查。檔案系統可能仍然會報告有可用的虛擬空間,而其底層的實體精簡池實際上可能已經幾乎耗盡。

lvs -a -o lv_name,vg_name,lv_attr,lv_size,data_percent,metadata_percent
SUSE Linux 終端機顯示 lvs 輸出,其中精簡池的資料使用率接近 100%,而元資料使用率較低。

說明:必須透過其 Data% 和 Meta% 值來識別精簡池;僅憑檔案系統可用空間無法顯示實體精簡池已耗盡。

如果Data%該值接近或達到 100,則表示資料池已耗盡,無法進行新的寫入操作。上游 LVM 文件警告稱,當資料池耗盡時,寫入操作可能會傳回錯誤,進而損壞檔案系統。如果Meta%該值達到 100,則回應更為保守,因為元資料耗盡會導致精簡池元資料和檔案系統不一致。

2. 該卷組是否仍有空閒的物理範圍?

這是下一個決策點。精簡儲存池只有在其磁碟區組有空閒擴展區時才能擴展,除非您先在該磁碟區組中新增更多實體儲存。

vgs -o vg_name,vg_size,vg_free
vgdisplay VG_NAME
SUSE Linux 終端機顯示 vgs 和 vgdisplay 的輸出,其中某個磁碟區組沒有空閒區段。

標題:檢查 VG 可用空間可以將簡單的精簡池擴充與需要先新增儲存的情況區分開來。

如果磁碟區組 (VG) 有足夠的可用空間,通常可以直接擴充精簡池。如果VFree可用空間為零或太小,請勿繼續重試lvextend;請決定是否可以刪除不需要的精簡磁碟區或快照、使用 discard 回收資料區塊,或新增新的實體磁碟區。

3. 恢復之前是否應該停止應用程式?

如果儲存池已滿,請在進行儲存變更之前停止或暫停寫入密集型應用程式。這可以降低資料庫、虛擬機器、容器或其他服務在儲存層發生故障或正在修復期間繼續執行寫入作業的風險。

systemctl stop YOUR_APPLICATION.service
systemctl status YOUR_APPLICATION.service
SUSE Linux 終端機顯示,在 LVM 精簡池維護之前,寫入密集型應用程式服務已停止。

說明:在恢復已滿或已損壞的精簡池時,靜默應用程式可限制額外的寫入操作。

沒有通用的服務停止清單。請根據您的工作負載架構和維護流程進行操作。對於資料庫和虛擬機,請優先使用產品支援的關閉或靜默方法,而不是突然終止進程。

4. 如果 Data% 已滿,而 VG 有可用空間,如何擴充儲存池?

應該擴展精簡池本身,而不是虛擬精簡邏輯卷,因為問題在於實體池容量不足。例如:

lvextend -L +20G VG_NAME/THIN_POOL
lvs -o lv_name,vg_name,lv_size,data_percent,metadata_percent VG_NAME/THIN_POOL
SUSE Linux 終端機顯示 lvextend 指令增加了 LVM 精簡池的大小,之後資料百分比下降。

說明:擴展精簡池會增加實體容量;一旦新空間可用,所產生的資料百分比應該會下降。

lvextend手冊介紹了直接精簡池擴充以及單獨的--poolmetadatasize元資料擴充選項。請根據實際成長率和可預留的儲存容量選擇增量。此處提供的固定範例並非+20G適用於所有系統的容量規劃建議。

5. 體積組沒有空位怎麼辦?

僅在確認目標區塊設備未使用且不包含所需資料後,才能新增儲存。建立 LVM 實體磁碟區會將 LVM 元資料寫入所選設備,因此設備名稱錯誤可能會造成破壞性後果。

lsblk
blkid

pvcreate /dev/NEW_DEVICE
vgextend VG_NAME /dev/NEW_DEVICE
vgs -o vg_name,vg_size,vg_free
SUSE Linux 終端機顯示新磁碟已通過 lsblk 驗證,然後使用 pvcreate 初始化,並使用 vgextend 將其新增至磁碟區組。

說明:當 VG 已滿時,管理員確認正確的未使用設備後,可以先新增新的實體儲存。

SUSE 文件指出,可以透過新增分割區或整個磁碟來擴充磁碟區組。在多路徑、SAN、RAID、加密、叢集或雲端支援的系統上執行此操作之前,請務必檢查儲存拓撲,因為正確的裝置層可能並非簡單範例中顯示的原始磁碟。

6. 如果 Meta% 達到 100% 會怎麼樣?

將元資料耗盡視為離線修復問題,而不是簡單地增加資料容量。 LVM 精簡池手冊明確指出,元資料耗盡會導致精簡池元資料和檔案系統不一致。其記錄的復原步驟是:停用池,使用 `lvm install` 修復池lvconvert --repair,擴展元數據,然後檢查檔案系統。

停止應用程式後,卸載檔案系統或以其他方式停用池中的精簡邏輯磁碟區。然後,按照類似於以下的受控維護程序進行操作:

lvchange -an VG_NAME/THIN_LV
lvconvert --repair VG_NAME/THIN_POOL
lvextend --poolmetadatasize +1G VG_NAME/THIN_POOL
SUSE Linux 終端機顯示精簡邏輯磁碟區已停用,已對精簡池執行 lvconvert 修復程序,且元資料空間已擴充。

說明:元資料已滿的情況需要離線精簡池修復和額外的元資料空間,而不僅僅是更多的資料範圍。

此+1G圖僅為範例。元資料大小取決於儲存池大小、資料區塊大小、快照使用情況和分配行為。修復後,請檢查系統日誌,如果出現 I/O 錯誤,請使用檔案系統支援的檢查或修復程式。切勿在已掛載的檔案系統上盲目地執行檔案系統修復工具。

刪除檔案能否立即釋放一個稀薄的儲存池?

並非總是如此。刪除檔案會釋放檔案系統內部的空間,但精簡池只有在收到丟棄資訊時才會回收實體區塊。 LVM 文件指出,fstrimtrim 操作可以回收這些區塊,而快照可能會繼續引用這些區塊,從而阻止它們被釋放。如果池配置為忽略丟棄訊息,則 trim 操作將不會回收這些區塊。

當檔案系統和工作負載支援時,檢查丟棄行為,並且只有在池足夠穩定可以運行後才執行修剪操作:

lvs -o lv_name,discards VG_NAME/THIN_POOL
fstrim -v /mount/point

刪除舊的精簡快照還可以釋放儲存空間,尤其是在這些快照是僅存的資料塊引用時。刪除快照前,請務必確認備份和保留要求。

7. 如何防止此類事件再次發生?

啟用並驗證 LVM 精簡池監控,並在 VG 中配置足夠的可用容量以啟用自動擴充。上游 LVMdmeventd通常透過lvm2-monitor服務使用該功能,在資料或元資料使用量超過配置閾值時做出回應。

systemctl status lvm2-monitor.service
lvs -o+seg_monitor VG_NAME/THIN_POOL
lvchange --monitor y VG_NAME/THIN_POOL

lvmconfig --type full activation/thin_pool_autoextend_threshold
lvmconfig --type full activation/thin_pool_autoextend_percent
SUSE Linux 終端機顯示 lvm2-monitor 處於活動狀態,以及 LVM 精簡池自動擴展閾值和百分比設定

標題:自動擴展取決於主動監控、適當的閾值以及卷組中剩餘的可用擴展範圍。

LVM 手冊指出,閾值設為 100 會停用自動擴展,最小有效閾值為 50。較低的閾值可以讓 LVM 有更多時間來應對寫入速率極高的儲存池。擴展百分比決定了策略觸發時儲存池的增長量。

一種典型的配置/etc/lvm/lvm.conf可能是:

activation {
    thin_pool_autoextend_threshold = 70
    thin_pool_autoextend_percent = 20
}

這些值僅供參考,並非通用預設值。安全裕度應根據寫入突發速率、監控間隔、儲存配置提前期和可用 VG 空間來決定。如果 VG 本身已滿,自動擴充功能將無法提供協助。

8. 你怎麼知道恢復工作真的成功了?

驗證多個訊號。儲存池應有足夠的空間,卷組應有足夠的可用空間以應對預期增長,應用程式應能正常寫入,且日誌不應顯示持續的精簡儲存池 I/O 或元資料錯誤。

lvs -a -o lv_name,vg_name,lv_attr,lv_size,data_percent,metadata_percent
vgs -o vg_name,vg_size,vg_free
journalctl -u lvm2-monitor.service --since "30 minutes ago"
SUSE Linux 終端機顯示已復原的精簡池,資料和元資料百分比降低,VG 可用空間充足,且監控日誌正常。

標題:當池利用率有餘力、VG 保留可用空間且監控報告無持續 I/O 錯誤時,確認恢復。

逐步重啟應用程序,並在實際工作負載恢復期間觀察精簡後的資源池。如果Data%資源池再次異常快速成長,則擴充資源池可能解決了當前的故障問題,但並未解決容量規劃問題。

何時應該停止並使用其他恢復路徑?

觀察推薦方向
Data%接近100,Meta%健康,VG有剩餘空間擴展精簡池並驗證工作負載恢復。
Data%接近 100 時,VG 沒有空餘空間在擴充功能之前,請新增已驗證的儲存空間、安全地回收區塊或減少保留的精簡磁碟區/快照。
Meta%達到100使工作負載靜默,停用池,離線修復元數據,擴展元數據,並驗證檔案系統。
lvconvert --repair失敗請勿隨意重複寫入元資料。請保留日誌和元資料備份,並將問題回報給 SUSE 支援團隊或經驗豐富的 LVM 復原工程師。
聚集的薄體請遵循叢集資源管理流程。 SUSE 要求精簡池和精簡磁碟區必須一起管理,以確保它們僅屬於一個節點。
泳池在延長線後不久再次注滿水。研究快照保留、丟棄行為、寫入成長、監控閾值和容量規劃。

應該避免什麼?

  • 不要假設df -h薄池有空閒的實體儲存空間。
  • pvcreate在確認新設備未使用之前,請勿對其進行初始化。
  • 不要將元資料耗盡與普通資料耗盡視為同一問題。
  • 不要依賴自動擴展,而應該在 VG 中預留空閒區段。
  • 除非檔案系統供應商明確支援該操作,否則不要對已掛載的檔案系統執行檔案系統修復命令。
  • 不要僅僅為了抑制警告而停用監控;警告通常是寫入失敗前擴充儲存池的最後機會。

官方和主要參考資料

留下評論

如何在 Ubuntu 桌面系統上設定 Btrfs 自動快照

如何在 Ubuntu 桌面系統上設定 Btrfs 自動快照

配置 Snapper 以在 Ubuntu 桌面上建立和清理定時產生的 Btrfs 快照。首先檢查子磁碟區佈局,啟用 systemd 定時器,並安全地驗證保留策略。

安全修復 SUSE Linux Enterprise LVM 精簡配置空間不足的問題

安全修復 SUSE Linux Enterprise LVM 精簡配置空間不足的問題

透過區分資料耗盡和元資料耗盡、擴展儲存、修復元資料和啟用自動擴展,診斷和恢復 SUSE Linux Enterprise 上的完整 LVM 精簡池。

Debian 12 CIS 加固指南:伺服器基線逐步指南

Debian 12 CIS 加固指南:伺服器基線逐步指南

使用安全的伺服器工作流程(包括更新、SSH、防火牆、AppArmor、稽核和驗證),對 Debian 12 Bookworm 進行強化,使其符合目前的 CIS 基準 v2.0.0 標準。

如何在 Gooroom OS 上安裝 Flatpak 和 Snap 應用

如何在 Gooroom OS 上安裝 Flatpak 和 Snap 應用

在 Gooroom OS 上安裝 Flatpak 和 Snap 應用,包括版本檢查、終端命令以及相容性、安全控制、更新和儲存的實際比較。

如何修正 GPG 錯誤:Ubuntu 中無法驗證以下簽名

如何修正 GPG 錯誤:Ubuntu 中無法驗證以下簽名

安全地修復 Ubuntu APT 簽章錯誤。無需停用軟體包驗證,即可識別 NO_​​PUBKEY、EXPKEYSIG、BADSIG、時脈和軟體來源設定問題。

如何在 SLES 15 上設定 DM-Multipath:實用指南

如何在 SLES 15 上設定 DM-Multipath:實用指南

在 SLES 15 上設定 DM-Multipath,實現安全發現、服務設定、最小 multipath.conf 變更、initramfs 更新和路徑健康檢查。

SLES Btrfs Snapper 更新失敗後回滾:安全復原指南

SLES Btrfs Snapper 更新失敗後回滾:安全復原指南

使用 Btrfs 和 Snapper 在更新失敗後恢復 SLES。比較回滾選項,安全地測試快照,恢復系統,並驗證儲存庫。

如何在 Pardus 用戶端部署自訂桌布和策略

如何在 Pardus 用戶端部署自訂桌布和策略

使用 Liderahenk 和 Ahenk 來設定自訂的 Pardus GNOME 桌布,使用 dconf 鎖定選定的設置,並透過經過測試的試點專案推出其他客戶端策略。

Ubuntu 伺服器啟動進入緊急模式:逐步救援指南

Ubuntu 伺服器啟動進入緊急模式:逐步救援指南

診斷 Ubuntu 伺服器進入緊急模式的原因,安全地修復常見的 /etc/fstab 和掛載問題,檢查檔案系統,並驗證正常重新啟動。

修復 Ubuntu 24.04 中 Flatpak 應用不遵循 GTK 主題的問題

修復 Ubuntu 24.04 中 Flatpak 應用不遵循 GTK 主題的問題

排查 Ubuntu 24.04 上忽略 GTK 主題的 Flatpak 應用程式問題。檢查主題擴充、GTK 入口網站、淺色和深色設定以及應用程式工具包限制。