PowerFlex:MVM 清理和空间回收
Oversigt: 本文介绍如何回收管理虚拟机 (MVM) 上的空间。
Instruktioner
可以在运行 MVM 的情况下创建 MVM 快照。对所有三个 MVM 应用这些步骤
- 登录到 vCenter
- 对于每个 MVM,执行以下步骤
- 单击 MVM—> 单击 Snapshots --> 单击 TAKE SNAPSHOT...。

- 单击 CREATE
清理过时的 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-registry 的已配置持久卷声明的输出时,将列出活动 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
-
过时的目录占用 60 GB,可以删除此目录。过时的 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% /
示例:
过时的目录占用 60 GB 的磁盘空间。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”目录
-
删除过时的目录后,它会释放 60GB。
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 版本为 46.382.00,因此此旧的 IC/RCM 合规性目录占用 53 GB。如果 UI 中未引用旧 IC/RCM,则可以删除此目录。如果 UI 中仍列出 IC/RCM,请先从 UI 中删除它。然后检查目录是否被清理。如果不是,则可以手动删除该目录。
-
清理 docker 的过时 PVC 并清理旧的 IC/RCM 捆绑包应该是将 MVM 磁盘使用率降低到正常运行水平所需的全部内容。
清理 PFMP 升级目录
在 PFMP 升级期间创建了三个目录。如果您已成功升级 PFMP,但可能必须手动完成升级阶段,则目录未清理。如果存在所有权权限问题,目录也可能无法清理。目录位于每个 MVM 上的 /opt/platform/fileshare 中。提供最多回收空间的目录是“PFMPUpgradeBundle”
目录名称
- PFMPUpgradeBundle
- 平台
- 升级
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
清理大型 Pod 日志文件
-
如果需要更多空间,请检查并根据需要删除:
-
在任何存在空间问题的 PFMP (MVM) 服务器上,运行以下查找命令以检查日志文件的大小:
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 是否都处于 Running 状态。
kubectl get pods -o wide -n powerflex
监视 PFMP 群集 24 小时。然后可以删除 MVM 快照。
Flere oplysninger
此外,下面的脚本可用于 PVC 清理。
使用脚本是安全的,因为它不执行删除。它提供了删除所需的命令。但是, 这是戴尔不支持的脚本;建议使用本知识库文章中介绍的手动方法。不支持使用此脚本。
如何在 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