This page guides you through how to prevent potential data loss or restore failures when working with disks that were restored from backups of disks attached to virtual machines (VMs).
Restoring an individual disk that was attached to a VM can leave behind specific
labels on the restored disk resource and its underlying PersistentVolumeClaim
(PVC) resource. Failure to remove the labels as described can lead to:
- Failures during subsequent full VM restore operations.
- Unintended modification or replacement of the restored disk's underlying PVC during a subsequent full VM restore, potentially leading to data loss on the restored disk.
Before you begin
To clean up the labels after restoring a VM-attached disk, you must have the following:
- The necessary identity and access role. Ask your Organization IAM Admin to grant you the DBS Debugger (
dbs-debugger
) role. - Access to the appropriate kubeconfig files for the clusters managing these resources.
- The kubectl command-line tool installed and configured.
Clean up labels
You must perform the cleanup for both the VirtualMachineDisk
resource and its underlying PersistentVolumeClaim
(PVC) resource.
Clean up the VM disk labels
To clean up the labels of a restored VM disk, follow these steps:
Get the kubeconfig file for the management API server and set the
KUBECONFIG
environment variable:export KUBECONFIG=PATH_TO_MANAGEMENT_API_KUBECONFIG
Replace
PATH_TO_MANAGEMENT_API_KUBECONFIG
with the path to the kubeconfig file. For more information, see Zonal Management API server resources.Check that the restored
VirtualMachineDisk
resource exists in the specified namespace:kubectl get virtualmachinedisks.virtualmachine.gdc.goog \ -n NAMESPACE RESTORED_VM_DISK_NAME
Replace the following:
NAMESPACE
: the project namespace.RESTORED_VM_DISK_NAME
: the full name of the restored disk using the values gathered in the prerequisites. The value for this variable can be derived fromRESTORED_PREFIX
-VM_DISK_NAME
.
Remove the backup scope label from the
VirtualMachineDisk
resource. The trailing hyphen after the label key signifies removal:kubectl label virtualmachinedisks.virtualmachine.gdc.goog -n NAMESPACE \ RESTORED_VM_DISK_NAME bpvms/VM_NAME-
Replace
VM_NAME
with the name of the restored VM.Optional: To verify that the
bpvms/VM_NAME
label is no longer present, you can re-run the correspondingkubectl get
command, adjusting for the specific resource type and cluster:kubectl get virtualmachinedisks.virtualmachine.gdc.goog \ -n NAMESPACE VM_NAME
Clean up the PVC labels
To clean up the labels of the underlying PVC, follow these steps:
Get the kubeconfig file for the org infrastructure cluster and set the
KUBECONFIG
environment variable:export KUBECONFIG=PATH_TO_ORG_INFRA_KUBECONFIG
Replace
PATH_TO_ORG_INFRA_KUBECONFIG
with the path to the kubeconfig file.Check that the underlying PVC for the restored disk exists in the specified namespace:
kubectl get pvc -n NAMESPACE \ RESTORED_VM_DISK_NAME
Replace the following:
NAMESPACE
: the project namespace.RESTORED_VM_DISK_NAME
: the name of the restored VM disk.
Remove the backup scope label from the PVC. The trailing hyphen after the label key signifies removal:
kubectl label pvc -n NAMESPACE RESTORED_VM_DISK_NAME bpvms/VM_NAME-
Replace
VM_NAME
with the name of the restored VM.Optional: To verify that the
bpvms/VM_NAME
label is no longer present, you can re-run the correspondingkubectl get
command, adjusting for the specific resource type and cluster:kubectl get pvc -n NAMESPACE \ VM_NAME