PowerFlex:MVM 清理和空間回收
Oversigt: 本文說明如何回收管理虛擬機器 (MVM) 上的空間。
Instruktioner
可在執行 MVM 時拍攝 MVM 快照。將這些步驟套用至所有三個 MVM
- 登入 vCenter
- 針對每個 MVM,執行下列步驟
- 按一下 MVM --> 按一下 快照 --> 按一下拍攝 快照...。

- 按一下 建立
清理過時的 docker-registry PVC
步驟
-
以下命令會列出「docker-registry」pod,並列出執行該pod的MVM。
delladmin@pfmpn2:/opt/platform-provisioner> kubectl get pods -n powerflex -o wide | grep docker | grep -v sync docker-registry-0 1/1 Running 0 16h 192.168.21.154 pfmpn3 <none> <none> docker-registry-1 1/1 Running 0 16h 192.168.23.40 pfmpn2 <none> <none>
-
當您查看為 docker-註冊表配置的持續性卷聲明的輸出時,將列出活動 PVC 的 PVC ID。PVC 資料儲存於
/opt/platform-provisioner/。範例:
delladmin@pfmpn2:~> kubectl get pvc -n powerflex | grep docker docker-registry-data-docker-registry-0 Bound pvc-648ed95b-0393-4c6d-b500-03a4b162dda5 20Gi RWO local-path 46h docker-registry-data-docker-registry-1 Bound pvc-0f689062-a700-48ad-8d10-65b985477e1a 20Gi RWO local-path 19d
-
當我們查看上面的目錄輸出時,您可以看到「docker-registry-1」有兩個目錄。「docker registry 1」目前的 PVC ID 為「pvc-0f689062-a700-48ad-8d10-65b985477e1a」。因為「docker-registry-1」列出了兩個目錄。
-
有一個過時的目錄可以刪除以釋放空間。根據一段時間後留下的過時目錄數量,可能會有更多。
delladmin@pfmpn2:~> ls -al /opt/platform-provisioner/ | grep docker drwxrwxrwx 1 root root 12 Jul 22 15:47 pvc-0f689062-a700-48ad-8d10-65b985477e1a_powerflex_docker-registry-data-docker-registry-1 drwxrwxrwx 1 root root 12 May 17 00:44 pvc-8a5f3651-dbd5-40a9-8252-51fd18539fc3_powerflex_docker-registry-data-docker-registry-1
-
過時的目錄佔用 60GB,可以刪除此目錄。過時的 PVC ID 為「pvc-8a5f3651-dbd5-40a9-8252-51fd18539fc3」
過時目錄清理前的已使用空間
delladmin@pfmpn2:~> df -h /dev/sda2 Filesystem Size Used Avail Use% Mounted on /dev/sda2 600G 273G 326G 46% /
範例:
過時的目錄佔用了 60GB 的磁碟空間。delladmin@pfmpn2:~> du -h --max-depth=1 /opt/platform-provisioner/pvc-8a5f3651-dbd5-40a9-8252-51fd18539fc3_powerflex_docker-registry-data-docker-registry-1 60G /opt/platform-provisioner/pvc-8a5f3651-dbd5-40a9-8252-51fd18539fc3_powerflex_docker-registry-data-docker-registry-1/docker 60G /opt/platform-provisioner/pvc-8a5f3651-dbd5-40a9-8252-51fd18539fc3_powerflex_docker-registry-data-docker-registry-1
-
刪除過時的「docker-registry」目錄
-
刪除過時目錄後,可釋放 60 GB。
delladmin@pfmpn2:/opt/platform-provisioner> sudo rm -rf pvc-8a5f3651-dbd5-40a9-8252-51fd18539fc3_powerflex_docker-registry-data-docker-registry-1 delladmin@pfmpn2:/opt/platform-provisioner> df -h /dev/sda2 Filesystem Size Used Avail Use% Mounted on /dev/sda2 600G 213G 385G 36% /
清除舊的 IC/RCM 儲存庫目錄
-
從任何 MVM 執行下列命令,以取得 IC/RCM UUID 與相關聯名稱。只能有一個 IC/RCM 設為預設值。可以移除較舊的 IC/RCM 相容套裝。
範例:

範例:
由於在 PFMP UI 的相容性版本中只新增了一個 IC/RCM,因此資料庫僅報告一個。delladmin@pfmpn2:/opt/platform/fileshare> kubectl exec -it -n powerflex $(kubectl get pods -n powerflex | grep -i asmm | awk '{print $1}') -- bash -c 'PGPASSWORD=$CONNECTION_USER_PASSWORD psql -h postgres-ha-pgbouncer -p 5432 -U asmmanageruser -d asm_manager -w -c "SELECT id,name FROM firmware_repository;"' id | name ----------------------------------+------------------------------- 402897a59688313b01968c2d859e4732 | Intelligent Catalog 46.382.00 (1 row) -
相容性套裝儲存於
/opt/platform/fileshare在所有三個MVM上。如果您看到具有 .zip 延伸名的相容性套裝,則可以刪除與 PFMP UI 中目前預設相容性版本未關聯的任何 UUID。確認 PFMP UI 中沒有進行中的 IC/RCM 同步。 -
如果所有套裝都處於可用狀態。可以刪除.zip檔以釋放空間。
範例:
delladmin@pfmpn2:/opt/platform/fileshare> pwd /opt/platform/fileshare delladmin@pfmpn2:/opt/platform/fileshare> ls -al | grep 402897a59688313b01968c2d859e4732 drwxr-xr-x 1 delladmin users 14184 May 30 16:41 402897a59688313b01968c2d859e4732
範例:
-
此 MVM pfmpn1 具有從未完成的 IC/RCM 同步工作.zip的相容性套裝。可以刪除此檔案以釋出空間。
delladmin@pfmp452n1:/opt/platform/fileshare> ls -alh | grep 402897 drwxr-xr-x 1 delladmin users 14K May 30 16:41 402897a59688313b01968c2d859e4732 -rw-r--r-- 1 delladmin users 28G Jul 17 14:06 402897a59688313b01968c2d859e4732.zip delladmin@pfmp452n1:/opt/platform/fileshare> sudo rm -rf /opt/platform/fileshare/402897a59688313b01968c2d859e4732.zip Result delladmin@pfmp452n1:/opt/platform/fileshare> ls -alh | grep 402897 drwxr-xr-x 1 delladmin users 14K May 30 16:41 402897a59688313b01968c2d859e4732
-
此範例顯示 pfmpn3 包含不再需要的舊 IC/RCM 相容版本目錄,因為在 PFMP UI 中只新增了一個 IC/RCM 相容版本。
delladmin@pfmp452n3:~> ls -al /opt/platform/fileshare/ | grep 402897 drwxr-xr-x 1 delladmin users 11798 Feb 13 17:16 4028979594e191650195014584d93692 drwxr-xr-x 1 delladmin users 14184 May 30 16:41 402897a59688313b01968c2d859e4732
-
舊 IC/RCM 的磁碟耗用空間
delladmin@pfmpn3:/opt/platform/fileshare/4028979594e191650195014584d93692> du -h --max-depth=1 . 1.3G ./modified 47G ./os 2.8M ./rpm s 5.8M ./slesrpms 15M ./vibs70 53G .
-
您可以執行下列命令,識別與此舊目錄相關聯的 IC/RCM 名稱。修改命令以包含適用於您環境的 UUID。
delladmin@pfmp452n3:/opt/platform/fileshare/4028979594e191650195014584d93692> head /opt/platform/fileshare/4028979594e191650195014584d93692/catalog.xml | grep name <Manifest baseLocation="" dateTime="2020-08-06T15:05:13" name="Intelligent Catalog 46.376.00" identifier="d70a21a1-116e-4a3c-95ec-52a24603b684" releaseID="MW3KN" version="1.28">
-
這個舊的 IC/RCM 相容目錄會消耗 53GB,因為本範例中目前預設的 IC/RCM 版本為 46.382.00。如果未在 UI 中參照舊的 IC/RCM,則可以刪除此目錄。如果 IC/RCM 仍列在 UI 中,請先將其從 UI 移除。然後檢查目錄是否已清理。如果沒有,您可以手動刪除目錄。
-
清理 docker 的過時 PVC 和清理舊的 IC/RCM 套裝,應只需要將 MVM 磁碟使用量降至執行狀況層級。
清理 PFMP 升級目錄
PFMP 升級期間會建立三個目錄。如果您已成功升級 PFMP,但可能必須手動完成升級階段,則不會清理目錄。如果發生擁有權權限問題,目錄也可能無法清理。這些目錄位於每個 MVM 的 /opt/platform/fileshare 中。提供最多回收空間的目錄是「PFMPUpgradeBundle」
目錄名稱
- PFMPUpgrade 套裝
- 平台
- 升級
delladmin@pfmp452n3:/opt/platform/fileshare> ls -alh /opt/platform/fileshare/ | grep -Ei 'upgrade|platform' drwxr-xr-x 1 delladmin root 362 Jul 22 15:23 PFMPUpgradeBundle drwxr-xr-x 1 delladmin users 0 Nov 7 2024 platform drwxr-xr-x 1 delladmin root 92 Jul 22 15:23 Upgrade
執行下列命令以刪除這些目錄。
sudo rm -rf /opt/platform/fileshare/PFMPUpgradeBundle sudo rm -rf /opt/platform/fileshare/Upgrade sudo rm -rf /opt/platform/fileshare/platform
清理大型容器記錄檔
-
如果需要更多空間,請勾選並視需要刪除:
-
在任何有空間問題的 PFMP (MVM) 伺服器上,執行下列 find 命令,以檢查記錄檔的大小:
sudo find /opt/platform-provisioner -type d -name "pvc-*_*_logging-rsyslog-data-*" -exec ls -lh {} \; sudo find /opt/platform-provisioner -iname "docker-registry.stdout.log" -exec du -h {} \; sudo find /opt/platform-provisioner -iname "supportassist-vxflexappliance.stdout.log" -exec du -h {} \; sudo find /opt/platform-provisioner -iname "temporal-history.stdout.log" -exec du -h {} \; -
以下命令會自動刪除這些大型紀錄檔:
注意:如果檔案為 < 小型檔案,僅有 300 MB,則不必執行以下刪除命令。如果它們很大,則大小可能在 1GB 到 100+GB 之間sudo find /opt/platform-provisioner -type d -name "pvc-*_*_logging-rsyslog-data-*" -exec sh -c 'for log in "$1"/*.log; do [ -e "$log" ] && echo "clean" > "$log"; done' _ {} \; sudo find /opt/platform-provisioner -iname "docker-registry.stdout.log" -exec sh -c 'echo "clean" > "$1"' _ {} \; sudo find /opt/platform-provisioner -iname "supportassist-vxflexappliance.stdout.log" -exec sh -c 'echo "clean" > "$1"' _ {} \; sudo find /opt/platform-provisioner -iname "temporal-history.stdout.log" -exec sh -c 'echo "clean" > "$1"' _ {} \;
驗證
使用下列命令確認磁碟使用量已減少。當清理僅使用一個合規性捆綁包完成時,使用率可能介於 35% 到 55% 之間。
df -h /dev/sda2 Ex. delladmin@pfmpn2:/opt> df -h /dev/sda2 Filesystem Size Used Avail Use% Mounted on /dev/sda2 600G 218G 381G 37% / sudo du -h --max-depth=1 /opt Ex. delladmin@pfmpn2:/opt> sudo du -h --max-depth=1 /opt 45G ./platform 146M ./rke2 294M ./cni 84G ./platform-provisioner 129G .
運行以下命令並驗證所有 Pod 是否都處於正在運行狀態。
kubectl get pods -o wide -n powerflex
監視 PFMP 叢集 24 小時。然後即可刪除 MVM 快照。
Flere oplysninger
此外,下列指令檔也可用於 PVC 清理。
使用指令檔是安全的,因為它不執行刪除。它提供刪除所需的命令。但是, 這是 Dell 不支援的指令檔;建議使用本知識文章中介紹的手動方法。不支援使用此腳本。
如何在 MVM 上建立指令檔檔案。 此程序需要在其他兩個 MVM 上重複
#Create 空白檔案touch /home/delladmin/dockerpvcclean.sh
#Give 檔案的執行權限chmod +x /home/dellamdin/dockerpvcclean.sh
#Use 下列命令,以 vi 編輯器
vi /home/delladmin/dockerpvcclean.sh 開啟檔案
打開 vi 編輯器後,按「i」鍵
進入插入模式 #Copy 本節末尾的 腳本文件內容 。
在終端機上按一下滑鼠右鍵,將內容貼至檔案中。
#Save 檔案
{按下 Esc 鍵以結束插入模式。按下 {Shift}:
然後按下 wq
,然後按下 Enter 鍵(這將寫入並退出 vi 編輯器並返回命令提示符)
#Confirm 檔案包含指令檔內容cat /home/delladmin/dockerpvcclean.sh
#To 執行指令檔,請執行下列命令。
sudo -s/home/delladmin/dockerpvcclean.sh
文稿檔案內容
#!/bin/bash
# Set this node name
MYNODENAME=$(kubectl get node -o yaml |grep host |awk '{print $2}' |grep $(hostname))
echo "$MYNODENAME Free space on root partition:"
df -h /
#
DOCKER0PV=$(kubectl get pvc -n powerflex docker-registry-data-docker-registry-0 -o json | jq .spec.volumeName | sed 's/"//g')
DOCKER1PV=$(kubectl get pvc -n powerflex docker-registry-data-docker-registry-1 -o json | jq .spec.volumeName | sed 's/"//g')
echo Currently used docker-registry-0 PV is $DOCKER0PV
echo Currently used docker-registry-1 PV is $DOCKER1PV
#
# Show which hosts have the current running set of docker-registry pods
for DOCKPOD in $(kubectl get pods -A -o name | grep docker-registry | grep -v sync); do
REGHOST=$(kubectl get $DOCKPOD -n powerflex -o jsonpath='{.spec.nodeName}');
echo $REGHOST has $DOCKPOD;
done
#Check for the good/valid PV directories on this host
DOCKER0PVDIR=$(find /opt/platform-provisioner/ -type d -name $DOCKER0PV*)
DOCKER1PVDIR=$(find /opt/platform-provisioner/ -type d -name $DOCKER1PV*)
if [ -n "$DOCKER0PVDIR" ];
then
echo Keeping $DOCKER0PVDIR which is on this node
fi
if [ -n "$DOCKER1PVDIR" ];
then
echo Keeping $DOCKER1PVDIR which is on this node
fi
STALEDOCKERPVDIRS=$(find /opt/platform-provisioner/ -type d -name *docker-registry-data* | grep -v $DOCKER1PV | grep -v $DOCKER0PV; echo )
if [ -n "$STALEDOCKERPVDIRS" ];
then
echo ##################################
echo Found $(echo $STALEDOCKERPVDIRS | wc -w ) Stale PVs on $HOSTNAME;
for CHECKSPACE in $(echo $STALEDOCKERPVDIRS); do
echo
echo $CHECKSPACE uses;
du -hcs $CHECKSPACE;
echo "#Please Run the following:"
echo "rm -rf $CHECKSPACE"
done
echo "A total of $(du -hcs $STALEDOCKERPVDIRS | grep total) can be saved"
else
echo "Good news: No stale PVs related to docker-registry found!"
fi