PowerFlex: MVM 정리 및 공간 재확보
Oversigt: 이 문서에서는 MVM(Management Virtual Machine)에서 공간을 회수하는 방법에 대해 설명합니다.
Instruktioner
MVM 스냅샷은 실행 중인 MVM으로 생성할 수 있습니다. 세 MVM 모두에 다음 단계를 적용합니다.
- vCenter에 로그인
- 각 MVM에 대해 다음 단계를 수행합니다
- MVM 클릭 -->Snapshots 클릭 -->TAKE SNAPSHOT...을 클릭합니다.

- CREATE를 클릭합니다.
오래된 docker-registry PVC 정리
단계
-
다음 명령은 "docker-registry" 포드를 나열하고 포드를 실행하는 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
-
오래된 디렉토리는 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" 디렉토리 삭제
-
오래된 디렉토리가 삭제되면 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의 Compliance Versions에 추가된 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 모두에서. PFMP UI에서 현재 기본 규정 준수 버전과 연결되지 않은 모든 UUID는 .zip 확장이 포함된 규정 준수 번들이 표시되는 경우 삭제할 수 있습니다. PFMP UI에서 진행 중인 IC/RCM 동기화가 없는지 확인합니다. -
모든 번들이 Available 상태인 경우 .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에 PFMP UI에 추가된 IC/RCM 규정 준수 버전이 하나뿐이므로 더 이상 필요하지 않은 이전 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 규정 준수 디렉토리는 53GB를 사용합니다. 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 {} \; -
다음 명령을 실행하면 이러한 큰 로그 파일이 자동으로 제거됩니다.
참고: 파일 크기가 < 300MB로 작은 경우 아래의 삭제 명령을 실행할 필요가 없습니다. 큰 경우 크기는 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 .
다음 명령을 실행하고 모든 포드가 Running 상태인지 확인합니다.
kubectl get pods -o wide -n powerflex
24시간 동안 PFMP 클러스터를 모니터링합니다. 그런 다음 MVM 스냅샷을 삭제할 수 있습니다.
Flere oplysninger
또한 아래 스크립트는 PVC 정리에 사용할 수 있습니다.
스크립트는 삭제를 수행하지 않으므로 스크립트를 사용하는 것이 안전합니다. 삭제하는 데 필요한 명령을 제공합니다. 그러나 Dell에서 지원하지 않는 스크립트입니다. 이 KB에서 다루는 수동 방법을 사용하는 것이 좋습니다. 이 스크립트의 사용은 지원되지 않습니다.
MVM에서 스크립트 파일을 생성하는 방법 이 절차를 다른 두 MVM에서 반복해야 합니다
빈 파일 #Createtouch /home/delladmin/dockerpvcclean.sh
파일 수행 권한 #Givechmod +x /home/dellamdin/dockerpvcclean.sh
다음 명령을 #Use vi 편집기
vi /home/delladmin/dockerpvcclean.sh 로 파일을 엽니다.
vi 편집기가 열린 상태에서 "i" 키를
눌러 삽입 모드로 전환#Copy 이 섹션의 끝에 있는 스크립트 파일 컨텐츠 .
터미널을 마우스 오른쪽 버튼으로 클릭하여 콘텐츠를 파일에 붙여넣습니다.
{삽입 모드를 종료하려면 Esc 키를 눌러 파일을
#Save. {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