Nettoyage des ressources de volume de stockage

Par défaut, lorsqu'un utilisateur supprime un volume IBM® Software Hub de stockage, les données contenues dans ce volume ne sont pas supprimées et les services peuvent continuer à utiliser le volume jusqu'à ce qu'un Red Hat® OpenShift® administrateur supprime la revendication de volume persistant afin de récupérer l'espace de stockage. De plus, le nom du volume de stockage ne peut pas être réutilisé à moins qu'il ne soit supprimé de la base de données où IBM Software Hub les métadonnées sont stockées.

Qui doit accomplir cette tâche?
Pour pouvoir effectuer cette tâche, vous devez posséder l'un des rôles suivants :
  • Administrateur de cluster
  • Administrateur d'instance
Quand devez-vous terminer cette tâche?
N'effectuez cette tâche que si vous êtes certain que les données stockées dans le volume ne sont plus nécessaires.

Avant de commencer

Pour effectuer cette tâche, vous devez disposer du nom d'affichage du volume de stockage à nettoyer. Le nom a le format namespace::volume-name.
  • La namespace partie du nom d'affichage vous indique dans quel projet se trouve la revendication de volume persistant.
  • La volume-name partie sert à identifier la revendication de volume persistant et le volume dans la base de données.
Important : vous devez supprimer le volume de stockage avant de terminer cette tâche.

Procédure

Pour nettoyer un volume de stockage :

  1. Définissez les variables d'environnement suivantes :
    1. Définissez la variable VOLUME_NAME d'environnement sur la volume-name partie du nom d'affichage :
      export VOLUME_NAME=<volume-name>
    2. Définissez la variable PVC_NAME d'environnement sur le nom de la revendication de volume persistant :
      export PVC_NAME=volumes-${VOLUME_NAME}-pvc
  2. Vérifiez que la revendication de volume persistant existe.
    Le nom de la revendication de volume persistant a le format volumes-<volume-name>-pvc.

    Le volume de stockage était dans le projet operands pour l'instance
    oc get pvc \
    --namespace=${PROJECT_CPD_INST_OPERANDS}

    Le volume de stockage faisait partie d'un projet lié à l'instance
    oc get pvc \
    --namespace=${PROJECT_CPD_INSTANCE_TETHERED}

  3. Supprimez la revendication de volume persistant :

    Le volume de stockage était dans le projet operands pour l'instance
    oc delete pvc ${PVC_NAME} \
    --namespace=${PROJECT_CPD_INST_OPERANDS}

    Le volume de stockage faisait partie d'un projet lié à l'instance
    oc delete pvc ${PVC_NAME} \
    --namespace=${PROJECT_CPD_INSTANCE_TETHERED}

  4. Identifiez le pod principal de la base de données où IBM Software Hub les métadonnées sont stockées :
    oc get cluster zen-metastore-edb \
    --namespace=${PROJECT_CPD_INST_OPERANDS}

    La commande doit renvoyer une sortie au format suivant :

    NAME                AGE   INSTANCES   READY   STATUS                     PRIMARY
    zen-metastore-edb   9d    2           2       Cluster in healthy state   zen-metastore-edb-2
  5. Définissez la variable DB_POD d'environnement sur le nom du pod principal :
    export DB_POD=<pod-name>
  6. Ouvrez un shell bash dans le pod principal :
    oc exec -it ${DB_POD} bash
  7. Connectez-vous à la base de données :
    psql -U postgres -d zen
  8. Supprimer le volume de la base de données.
    Attention : lisez attentivement les instructions avant d'exécuter les commandes suivantes. Une mauvaise exécution de la delete commande peut entraîner une perte de données.
    1. Vérifiez que l'instance de volume se trouve dans la base de données.

      Avant d'exécuter la commande suivante, remplacez <nom-du-volume> par la volume-name partie du nom d'affichage du volume de stockage. Vous ne pouvez pas remplacer <nom-du-volume> par une variable d'environnement.

      select * from service_instances where service_instance_display_name='<volume-name>';
    2. Supprimez l'enregistrement de l'instance de volume de la base de données.

      Avant d'exécuter la commande suivante, remplacez <nom-du-volume> par la volume-name partie du nom d'affichage du volume de stockage. Vous ne pouvez pas remplacer <nom-du-volume> par une variable d'environnement.

      delete from service_instances where service_instance_display_name='<volume-name>';
      Par exemple, si le nom d'affichage du volume de stockage est cpd-inst-1::my-storage-volume, vous remplacerez <volume-name> par my-storage-volume:
      delete from service_instances where service_instance_display_name='my-storage-volume';