PowerFlex: Limpeza do MVM e recuperação de espaço
Oversigt: Este artigo explica como recuperar espaço na máquina virtual de gerenciamento (MVMs).
Instruktioner
Os snapshots do MVM podem ser obtidos com os MVMs em execução. Aplique estas etapas para todos os três MVMs:
- Faça login no vCenter
- Para cada MVM, execute as seguintes etapas
- Clique em MVM --> Clique em Snapshots --> Clique em TAKE SNAPSHOT....

- Clique em CREATE
Limpeza de PVCs obsoletos de registro do docker
Etapas
-
O comando a seguir lista os pods "docker-registry" e o MVM que está executando o pod.
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>
-
Quando você analisa o resultado das solicitações de volume persistente configuradas para o registro do docker, os IDs de PVC são listados para os PVCs ativos. Os dados de PVC são armazenados em
/opt/platform-provisioner/.Exemplo:
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
-
Quando observamos a saída do diretório acima, você pode ver que há dois diretórios para "docker-registry-1". O ID de PVC atual para o "registro do docker 1" é "pvc-0f689062-a700-48ad-8d10-65b985477e1a". Como há dois diretórios listados para "docker-registry-1".
-
Há um diretório obsoleto que pode ser excluído para liberar espaço. Pode haver muitos mais, dependendo de quantos diretórios obsoletos foram deixados ao longo do tempo.
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
-
O diretório obsoleto está consumindo 60 GB e esse diretório pode ser excluído. O ID de PVC obsoleto é "pvc-8a5f3651-dbd5-40a9-8252-51fd18539fc3"
Espaço usado antes da limpeza obsoleta do diretório
delladmin@pfmpn2:~> df -h /dev/sda2 Filesystem Size Used Avail Use% Mounted on /dev/sda2 600G 273G 326G 46% /
Exemplo:
O diretório obsoleto está consumindo 60 GB de espaço em disco.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
-
Excluindo o diretório "docker-registry" obsoleto
-
Quando o diretório obsoleto é excluído, ele libera 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% /
Limpar diretórios antigos do repositório IC/RCM
-
Execute o seguinte comando de qualquer MVM para obter os UUIDs de IC/RCM e o nome associado. Pode haver apenas um IC/RCM definido como padrão. Os pacotes de conformidade de IC/RCM mais antigos podem ser removidos.
Exemplo:

Exemplo:
Como há apenas um IC/RCM adicionado às versões de conformidade na IU do PFMP, por sua vez, o banco de dados relata apenas um.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) -
Os pacotes de conformidade são armazenados em
/opt/platform/filesharenos três MVMs. Qualquer UUID que não esteja associado à versão de conformidade padrão atual na interface do usuário do PFMP pode ser excluído se você vir pacotes de conformidade com uma extensão .zip. Verifique se não há nenhuma sincronização de IC/RCM em andamento na interface do usuário da PFMP. -
Se todos os pacotes estiverem em um estado Available. Os arquivos .zip podem ser excluídos para liberar espaço.
Exemplo:
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
Exemplo:
-
Esse pfmpn1 do MVM tem um pacote de conformidade no .zip de uma tarefa de sincronização de IC/RCM que não foi concluída. Esse arquivo pode ser excluído para liberar espaço.
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
-
Este exemplo mostra que o pfmpn3 contém um diretório antigo da versão de conformidade do IC/RCM que não é mais necessário, pois há apenas uma versão de conformidade do IC/RCM adicionada na interface do usuário do PFMP.
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
-
Espaço consumido no disco para IC/RCM antigo
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 .
-
Você pode executar o seguinte comando para identificar o nome do IC/RCM associado a esse diretório antigo. Modifique o comando para incluir o UUID aplicável ao seu ambiente.
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">
-
Esse antigo diretório de conformidade do IC/RCM está consumindo 53 GB, já que a versão padrão atual do IC/RCM neste exemplo é 46.382.00. Se o IC/RCM antigo não for referenciado na interface do usuário, esse diretório poderá ser excluído. Se um IC/RCM ainda estiver listado na interface do usuário, remova-o da interface do usuário primeiro. Em seguida, verifique se o diretório foi limpo. Se não estiver, você pode excluir manualmente o diretório.
-
A limpeza de PVCs obsoletos do docker e a limpeza de pacotes antigos de IC/RCM devem ser tudo o que é necessário para reduzir o uso de disco MVM a um nível de integridade.
Limpar diretórios de upgrade da PFMP
Há três diretórios que são criados durante o upgrade da PFMP. Se você fez upgrade da PFMP com sucesso, mas talvez tenha tido que concluir manualmente uma fase de upgrade, os diretórios não foram limpos. Os diretórios também podem falhar na limpeza se houver problemas de permissão de propriedade. Os diretórios estão em /opt/platform/fileshare em cada MVM. O diretório que oferece mais espaço para recuperação é "PFMPUpgradeBundle"
Nomes do diretório
- PFMPUpgradeBundle
- Plataforma
- Upgrade
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
Execute os seguintes comandos para excluir esses diretórios.
sudo rm -rf /opt/platform/fileshare/PFMPUpgradeBundle sudo rm -rf /opt/platform/fileshare/Upgrade sudo rm -rf /opt/platform/fileshare/platform
Limpeza de arquivos de log do pod grande
-
Se for necessário mais espaço, verifique e exclua, se necessário:
-
Em qualquer servidor PFMP (MVM) que tenha problemas de espaço, execute os seguintes comandos de localização para verificar o tamanho dos arquivos de log:
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 {} \; -
Os seguintes comandos removem automaticamente esses arquivos de log grandes:
Nota: Você não precisará executar os comandos de exclusão abaixo se os arquivos forem pequenos em 300MB de tamanho < . Se eles forem grandes, o tamanho pode variar entre 1 GB e 100 + GBsudo 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"' _ {} \;
Validação
Verifique se o uso do disco foi reduzido usando o comando a seguir. Quando a limpeza é concluída com apenas um pacote de conformidade, o uso pode variar de 35% a 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 .
Execute o comando a seguir e verifique se todos os pods estão em um estado Running.
kubectl get pods -o wide -n powerflex
Monitore o cluster da PFMP por 24 horas. Em seguida, os snapshots do MVM podem ser excluídos.
Flere oplysninger
Além disso, o script abaixo pode ser usado para a limpeza do PVC.
É seguro usar o script porque ele não realiza as exclusões. Ele fornece os comandos necessários para excluir. No entanto, é um script não suportado pela Dell; A recomendação é usar o método manual abordado neste artigo da KB. O uso deste script não é compatível.
Como criar um arquivo de script em um MVM. Esse procedimento precisaria ser repetido nos outros dois MVMs
#Create um arquivo em brancotouch /home/delladmin/dockerpvcclean.sh
#Give a permissão de execução do arquivochmod +x /home/dellamdin/dockerpvcclean.sh
#Use o seguinte comando para abrir o arquivo com o vi editor
vi /home/delladmin/dockerpvcclean.sh
Com o editor vi aberto, entre no modo de inserção pressionando a tecla
"i#Copy o conteúdo do arquivo de script no final desta seção.
Clique com o botão direito no terminal para colar o conteúdo no arquivo.
#Save o arquivo
{Pressione Esc para sair do modo de inserção. Pressione {Shift}:
Em seguida, pressione wq
Em seguida, pressione Enter (Isso gravará e fechará o editor vi e retornará ao prompt de comando)
#Confirm o arquivo contém o conteúdo do scriptcat /home/delladmin/dockerpvcclean.sh
#To executar o script, execute os comandos a seguir.
sudo -s/home/delladmin/dockerpvcclean.sh
Conteúdo do arquivo de script
#!/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