Authors:

Feature pages are design documents that developers have created while collaborating on oVirt.

Most of them are outdated, but provide historical design context.

They are not user documentation and should not be treated as such.

Documentation is available here.

Snapshots Overview

Summary

Snapshots overview and management in context of a storage domain.

Owner

Current status

  • Target Release: 3.5
  • Status: work in progress

Benefit to oVirt

  • Improving the display of storage consumption details in order to identify which entities (disks/snapshots) could be removed in order to free up space.
  • Ability to remove a specific disk from a snapshot (instead of to current support which forces deletion of the entire VM snapshot).
  • Ability to remove disks snapshots in storage domain context; i.e. merging a specified set of snapshots in order the allow regaining space on a storage domain.

Detailed Description

Currently, only a VM snapshot removal is supported - i.e. removing snapshots of disks requires the removal of the entire set of disks of the VM snapshot. Hence, in order to further decouple disks snapshots from VM snapshots, this proposed feature adds a new functionality of removing disks from snapshots. The UI will expose a flattened list of disks snapshots that reside on a specific storage domain in a new sub-tab in which, the new action of removal would be available.

UI

Sub-Tabs concept

Storage -> Snapshots Sub-Tab

[Future Work?] Storage Resources Usage Sub-Tab [Disks (active volumes) / Snapshots / Free space]

[DEPRECATED] Manage Snapshots concept

The solution is being neglected in favor of the sub-tabs concept as removing snapshot disks (merging) is a long operation; i.e. sub-tabs is the way to go when status indication is needed. Furthermore, since the interesting operation on snapshots in context of storage is merging, having a dedicate dialog seems redundant.

[DEPRECATED] Manage Snapshots Dialog

REST-API

Introducing new functionality of deleting a disk from a snapshot.

Get disk snapshots by storage domain

GET /api/storagedomains/{storage_id}/disksnapshots

Delete a disk snapshot from storage domain

DELETE /api/storagedomains/{storage_id}/disksnapshots/{image_id}

Delete a snapshot disk:

DELETE /api/vms/{vm_id}/snapshots/{snapshot_id}/disks/{disk_id}

Backend

  • RemoveDiskSnapshotsCommand -> RemoveDiskSnapshotTaskHandler:
    • A new command (and task handler) for removing specific images from snapshots.
    • The command accepts as an argument a list of multiple images (of the same disk) to remove.
    • The command utilizes SEAT infrastructure for removing multiple images from a disk consecutively (as merging multiple snapshots of a specific disk must be done separably - to avoid volume chain breakage).
  • GetAllDiskSnapshotsByStorageDomainIdQuery:
    • A new query for retrieving all snapshot disks that resides on a specified storage domain.
    • Needed for fetching data of Storage -> Snapshots sub-tab.
  • DiskImage -> vmSnapshotDescription member:
    • Needed for displaying snapshot description in the UI (for easier image identification).

VDSM

Already supported.

Open Issues

  • Sorting in sub-tabs - wait for the generic client/server side sorting UI infrastructure?
  • Display additional information about the snapshot/VM on item selection?
  • Integrating a filter widget in sub-tab (as illustrated in manage snapshots dialog) or wait for a generic infrastructure?

Testing

  • Verify that the sub-tab displays all disk snapshots that reside on the selected storage domain.
  • Verify removal of a single snapshots.
  • Verify removal of multiple snapshots (of the same disk).
  • Verify that removal of a snapshot that is attached to a running VM is blocked (until live snapshot merge is supported…).
  • Verify snapshot removal from REST-API.

Future Work

  • Mentioned inline above.