VM Backup, Snapshot & Restore
VM Backup & Restore
Available as of v0.3.0
VM backups are created from the Virtual Machines page. The VM backup volumes will be stored in the Backup Target (an NFS or S3 server), and they can be used to either restore a new VM or replace an existing VM.
A backup target must be set up. For more information, see Configure Backup Target. If the backup target has not been set, you’ll be prompted with a message to do so.
Configure Backup Target
A backup target is an endpoint used to access a backup store in Harvester. A backup store is an NFS server or S3 compatible server that stores the backups of VM volumes. The backup target can be set at Settings > backup-target
.
Parameter | Type | Description |
---|---|---|
Type | string | Choose S3 or NFS |
Endpoint | string | A hostname or an IP address. It can be left empty for AWS S3. |
BucketName | string | Name of the bucket |
BucketRegion | string | Region of the bucket |
AccessKeyID | string | A user-id that uniquely identifies your account |
SecretAccessKey | string | The password to your account |
Certificate | string | Paste to use a self-signed SSL certificate of your S3 server |
VirtualHostedStyle | bool | Use VirtualHostedStyle access only; e.g., Alibaba Cloud (Aliyun) OSS |
Create a VM backup
- Once the backup target is set, go to the
Virtual Machines
page. - Click
Take Backup
of the VM actions to create a new VM backup. - Set a custom backup name and click
Create
to create a new VM backup.
Result: The backup is created. You will receive a notification message, and you can also go to the Backup & Snapshot > VM Backups
page to view all VM backups.
The State
will be set to Ready
once the backup is complete.
Users can either restore a new VM or replace an existing VM using this backup.
Restore a new VM using a backup
To restore a new VM from a backup, follow these steps:
- Go to the
VM Backups
page. - Click the
Restore Backup
button at the top right. - Specify the new VM name and click
Create
. - A new VM will be restored using the backup volumes and metadata, and you can access it from the
Virtual Machines
page.
Replace an existing VM using a backup
You can replace an existing VM using the backup with the same VM backup target.
You can choose to either delete or retain the previous volumes. By default, all previous volumes are deleted.
Requirements: The VM must exist and is required to be in the powered-off status.
- Go to the
VM Backups
page. - Click the
Restore Backup
button at the top right. - Click
Replace Existing
. - You can view the restore process from the
Virtual Machines
page.
Restore a new VM on another Harvester cluster
Available as of v1.0.0
Users can now restore a new VM on another cluster by leveraging the VM metadata & content backup feature.
Prerequisites
v1.4.0 and later: The controller automatically syncs the virtual machine images with the new cluster, except when a virtual machine image with the same name or display name already exists on the new cluster.
Earlier than v1.4.0: You must upload and configure the virtual machine images on the new cluster. Ensure that the image names and configuration are identical so that the virtual machines can be restored. For more information, see Upload the same VM images to a new cluster.
Upload the same VM images to a new cluster
- Check the existing image name (normally starts with
image-
) and create the same one on the new cluster.
$ kubectl get vmimages -A
NAMESPACE NAME DISPLAY-NAME SIZE AGE
default image-79hdq focal-server-cloudimg-amd64.img 566886400 5h36m
default image-l7924 harvester-v1.0.0-rc2-amd64.iso 3964551168 137m
default image-lvqxn opensuse-leap-15.3.x86_64-nocloud.qcow2 568524800 5h35m
- Apply a VM image YAML with the same name and content in the new cluster.
$ cat <<EOF | kubectl apply -f -
apiVersion: harvesterhci.io/v1beta1
kind: VirtualMachineImage
metadata:
name: image-lvqxn
namespace: default
spec:
displayName: opensuse-leap-15.3.x86_64-nocloud.qcow2
pvcName: ""
pvcNamespace: ""
sourceType: download
url: http://download.opensuse.org/repositories/Cloud:/Images:/Leap_15.3/images/openSUSE-Leap-15.3.x86_64-NoCloud.qcow2
EOF
Restore a new VM in a new cluster
- Setup the same backup target in a new cluster. And the backup controller will automatically sync the backup metadata to the new cluster.
- Go to the
VM Backups
page. - Select the synced VM backup metadata and choose to restore a new VM with a specified VM name.
- A new VM will be restored using the backup volumes and metadata. You can access it from the
Virtual Machines
page.
VM Snapshot & Restore
Available as of v1.1.0
VM snapshots are created from the Virtual Machines page. The VM snapshot volumes will be stored in the cluster, and they can be used to either restore a new VM or replace an existing VM.
Create a VM snapshot
- Go to the
Virtual Machines
page. - Click
Take VM Snapshot
of the VM actions to create a new VM snapshot. - Set a custom snapshot name and click
Create
to create a new VM snapshot.
Result: The snapshot is created. You can also go to the Backup & Snapshot > VM Snapshots
page to view all VM snapshots.
The State
will be set to Ready
once the snapshot is complete.
Users can either restore a new VM or replace an existing VM using this snapshot.
Restore a new VM using a snapshot
To restore a new VM from a snapshot, follow these steps:
- Go to the
VM Snapshots
page. - Click the
Restore Snapshot
button at the top right. - Specify the new VM name and click
Create
. - A new VM will be restored using the snapshot volumes and metadata, and you can access it from the
Virtual Machines
page.
Replace an existing VM using a snapshot
You can replace an existing VM using the snapshot.
You can only choose to retain the previous volumes.
- Go to the
VM Snapshots
page. - Click the
Restore Snapshot
button at the top right. - Click
Replace Existing
. - You can view the restore process from the
Virtual Machines
page.
VM Snapshot Space Management
Available as of v1.4.0
Volumes consume extra disk space in the cluster whenever you create a new virtual machine backup or snapshot. To manage this, you can configure space usage limits at the namespace and virtual machine levels. The configured values represent the maximum amount of disk space that can be used by all backups and snapshots. No limits are set by default.
Configure the Snapshot Space Usage Limit at the Namespace Level
Go to the Namespaces screen.
Locate the target namespace, and then select ⋮ > Edit Quota.
Specify the maximum amount of disk space that can be consumed by all snapshots in the namespace, and then and click Save.
Verify that the configured value is displayed on the Namespaces screen.
Configure the Snapshot Space Usage Limit at the Virtual Machine Level
Go to the Virtual Machines screen.
Locate the target virtual machine, and then select ⋮ > Edit VM Quota.
Specify the maximum total amount of disk space that can be consumed by all snapshots for the virtual machine, and then and click Save.
Verify that the configured value is displayed on the Quotas tab of the virtual machine details screen.
Scheduling Virtual Machine Backups and Snapshots
Available as of v1.4.0
Harvester supports the creation of virtual machine backups and snapshots on a scheduled basis, with the option to retain a specific number of backups and snapshots. You can suspend, resume, and update the schedule at runtime.
Create the Virtual Machine Schedule
Go to the Virtual Machine Schedules screen, and then click Create Schedule.
Configure the following settings:
Type: Select either Backup or Snapshot.
Namespace and Virtual Machine Name: Specify the namespace and name of the source virtual machine.
Cron Schedule: Specify the cron expression (a string consisting of fields separated by whitespace characters) that defines the schedule properties.
importantThe backup or snapshot creation interval must be at least one hour. Frequent backup or snapshot deletion results in heavy I/O load.
If two schedules have the same granularity level, each iteration's timing offset must be at least 10 minutes.
Retain: Specify the number of up-to-date backups or snapshots to be retained.
When this value is exceeded, the Harvester controller deletes the oldest backups or snapshots, and Longhorn starts the snapshot purge.
Max Failure: Specify the maximum number of consecutive failed backup or snapshot creation attempts to be allowed.
When this value is exceeded, the Harvester controller suspends the schedule.
- Click Create.
Check the Status of a Virtual Machine Schedule
Go to the Virtual Machine Schedules screen.
Locate the target schedule, and then click the name to open the details screen.
On the Basics tab, verify that the settings are correct.
On the Backups tab, check the status of the backups or snapshots that were created according to the schedule.
Backups and snapshots that are marked Ready can be used to restore the source virtual machine. For more information, see VM Backup & Restore and VM Snapshot & Restore.
Edit a Virtual Machine Schedule
Go to the Virtual Machine Schedules screen.
Locate the target schedule, and then select ⋮ > Edit Config.
Edit the Cron Schedule, Retain, or Max Failure values.
Click Save to apply the changes.
Suspend or Resume a Virtual Machine Schedule
You can suspend active schedules and resume suspended schedules.
Go to the Virtual Machine Schedules screen.
Locate the target schedule, and then select ⋮ > Suspend or Resume.
The schedule is automatically suspended when the number of consecutive failed backup or snapshot creation attempts exceeds the Max Failure value.
Harvester does not allow you to resume a suspended schedule for backup creation if the backup target is not reachable.
Virtual Machine Operations and Harvester Upgrades
Before you upgrade Harvester, ensure that no virtual machine backups or snapshots are in use, and that all virtual machine schedules are suspended. The Harvester UI displays the following error messages when upgrade attempts are rejected:
Virtual machine backups or snapshots are being created, deleted, or used during the upgrade attempt
Virtual machine schedules are active during the upgrade attempt
To avoid such issues, the Harvester team plans to implement automatic suspension of all virtual machine schedules before the upgrade process is started. The suspended schedules will also be automatically resumed after the upgrade is completed. For more information, see Issue #6759.