Share backup management¶
Share backup management is the feature that provides the capability to create a backup for the given share, restore a backup, and delete a backup. It is a valuable feature for most shared file system users, especially for NAS users.
Use cases¶
As an administrator, you may want to backup and restore your share so that archival can be made simpler and you can bring back the old data whenever required. It includes:
Create a backup
Delete a backup
Restore a backup in specified share
Backup/Restore workflows¶
Starting from 2023.2, a generic approach for backing up shares through the manila data service has been implemented where the backup of the shares can be stored on a NFS path which are mounted on control nodes. This driver matches the workflows of cinder NFSBackupDriver and thus it helps users with less learning time, and provides the basic backup ability. The vendor that supports NFS, must provide space for NFS to interconnect with NFS backup drivers. The implementation of NFS backup driver will be generic though. The backup process for this driver consists of:
Make sure share is in available state and not busy.
Allow read access to share and write access to backup share.
Mount the share and backend driver’s share(i.e. backup share) to the data service node.
Copy data from share to backup share.
Unmount the share and backup share.
Deny access to share and backup share.
For the generic NFS backup approach, only one backup backend is allowed for simplicity, at the moment. By default no backup driver will be enabled. To enable the backup driver, use the below configurations in manila.conf
backup_driver = manila.data.drivers.nfs.NFSBackupDriver
backup_mount_export = <NFS_Server>:/<NFS_Data_Path>
backup_mount_options = '-o vers=<version>',minorversion=1
New status for backup and share:
backup
creating
available
deleting
deleted
error_deleting
backup_restoring
error
share
backing_creating
backup_restoring
backup_restoring_error
During backup, share will be marked as busy and other operations on share such as delete, soft_delete, migration, extend, shrink, ummanage, revert_to_snapshot, crate_snapshot, create_replica etc can not be performed unless share becomes available. Finally, whether or not the share is successfully backed up, the state of the share is rolled back to the available state. In case the backup fails, share task_state will contain the failure information. Also, failure message will be recorded.
New clean up actions: The backup and restore actions could break when service is down, so new clean up action will be added to reset the status and clean temporary files (if involved).
New quotas for backup :
quota_backups
: indicate the share backups allowed per project.quota_backup_gigabytes
: indicate the total amount of storage, in gigabytes, allowed for backups per project.
Using the backup APIs (CLI):¶
The commands to interact with the share backup API are:
openstack share backup create
: It creates a backup for the share on the NFS path. The backup becomes creating and it becomes availabe when the backup is completed.$ openstack share backup create --help # to see the help of all the available options $ openstack share backup create --name manila_backup1 25a6f80e-306e-4bb8-ad27-cf6800955228 +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | availability_zone | manila-zone-0 | | created_at | 2024-03-21T12:49:35.719214 | | description | None | | host | None | | id | c2022366-0701-44d2-b48b-aa95a666efa5 | | name | manila_backup1 | | progress | 0 | | restore_progress | 0 | | share_id | 25a6f80e-306e-4bb8-ad27-cf6800955228 | | size | 1 | | status | creating | | topic | None | | updated_at | None | +-------------------+--------------------------------------+
openstack share backup list
: It prints the current status of the backup. It is set toavailable
if all operations succeeded.$ openstack share backup list +--------------------------------------+----------------+--------------------------------------+-----------+ | ID | Name | Share ID | Status | +--------------------------------------+----------------+--------------------------------------+-----------+ | c2022366-0701-44d2-b48b-aa95a666efa5 | manila_backup1 | 25a6f80e-306e-4bb8-ad27-cf6800955228 | available | +--------------------------------------+----------------+--------------------------------------+-----------+ $
openstack share backup show
: It obtains the latest information of the backup.$ openstack share backup show c2022366-0701-44d2-b48b-aa95a666efa5 +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | availability_zone | manila-zone-0 | | created_at | 2024-03-21T12:49:36.000000 | | description | None | | host | vm.openstack.opendev.com | | id | c2022366-0701-44d2-b48b-aa95a666efa5 | | name | manila_backup1 | | progress | 100 | | restore_progress | 0 | | share_id | 25a6f80e-306e-4bb8-ad27-cf6800955228 | | size | 1 | | status | available | | topic | manila-data | | updated_at | 2024-03-21T12:50:07.000000 | +-------------------+--------------------------------------+ $
openstack share backup set
: It sets the name and description for the backup.$ openstack share backup set c2022366-0701-44d2-b48b-aa95a666efa5 --name "new_name" --description "backup_taken_on_march_21"
Note
This command has no output.
$ openstack share backup show c2022366-0701-44d2-b48b-aa95a666efa5 +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | availability_zone | manila-zone-0 | | created_at | 2024-03-21T12:49:36.000000 | | description | backup_taken_on_march_21 | | host | vm.openstack.opendev.com | | id | c2022366-0701-44d2-b48b-aa95a666efa5 | | name | new_name | | progress | 100 | | restore_progress | 0 | | share_id | 25a6f80e-306e-4bb8-ad27-cf6800955228 | | size | 1 | | status | available | | topic | manila-data | | updated_at | 2024-03-21T12:57:09.000000 | +-------------------+--------------------------------------+
Using the backup APIs (REST):¶
APIs will be experimental, until some cycles of testing, and the eventual graduation of them. You can refer to this link for more information REST API Support
Backup/Restore via backup types (Vendor specific)¶
There are use cases such that, the individual storage vendors/drivers might have robust solution in their own storage to backup the data. When such features are available in the storage, the individual drivers can be enhanced to build their own backup solutions by extending the existing manila backup drivers with the use of backup types. Thus shares created in Manila on such storage, can be easily backed up via vendor specific solutions.
Note
backup_type was added to backup API responses in version 2.85.
Starting from 2024.1, a concept named backup_type
has been introduced.
This is needed for creating backups with third party drivers, in case an
implementation is available. The backup_type
is a construct which should
have backup specific parameters such as backup_type_name
Note
The sample config will look like this:
eng_data_backup
is the backup_type here.:
[eng_data_backup]
backup_type_name=my_backup
[nas_storage]
enabled_backup_types = eng_data_backup
Backup/Restore workflows via backup type:¶
Users can create, delete and restore backups on vendor specific storage using backup_type.
Note
Before using this feature, you need to check with your storage partner for the availability of this feature in Manila drivers.
The workflow of creating, viewing, restoring and deleting backups captured below for user reference.
$ openstack share backup list +--------------------------------------+-------+--------------------------------------+-----------+ | ID | Name | Share ID | Status | +--------------------------------------+-------+--------------------------------------+-----------+ | 8a9b3ce0-23bb-4923-b8ce-d0dd1f56b2b8 | test4 | 983c6dd5-ef93-4c73-9359-ef02fe3bbce7 | available | +--------------------------------------+-------+--------------------------------------+-----------+ $ openstack share backup create --name test5 --backup-options backup_type=eng_data_backup source_share +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | availability_zone | manila-zone-0 | | backup_type | backup_type1 | | created_at | 2024-03-11T18:15:32.183982 | | description | None | | host | vm.openstack.opendev.com@nas_storage | | id | 4b468327-d03f-4df7-97ef-c5230b5beafc | | name | test5 | | progress | 0 | | restore_progress | 0 | | share_id | 983c6dd5-ef93-4c73-9359-ef02fe3bbce7 | | size | 1 | | status | creating | | topic | None | | updated_at | None | +-------------------+--------------------------------------+ $ openstack share backup list +--------------------------------------+-------+--------------------------------------+-----------+ | ID | Name | Share ID | Status | +--------------------------------------+-------+--------------------------------------+-----------+ | 4b468327-d03f-4df7-97ef-c5230b5beafc | test5 | 983c6dd5-ef93-4c73-9359-ef02fe3bbce7 | creating | | 8a9b3ce0-23bb-4923-b8ce-d0dd1f56b2b8 | test4 | 983c6dd5-ef93-4c73-9359-ef02fe3bbce7 | available | +--------------------------------------+-------+--------------------------------------+-----------+ $ openstack share backup show test5 +-------------------+------------------------------------------------+ | Field | Value | +-------------------+------------------------------------------------+ | availability_zone | manila-zone-0 | | backup_type | backup_type1 | | created_at | 2024-03-11T18:15:32.000000 | | description | None | | host | scs000215254-1.nb.openenglab.netapp.com@ontap1 | | id | 4b468327-d03f-4df7-97ef-c5230b5beafc | | name | test5 | | progress | 0 | | restore_progress | 0 | | share_id | 983c6dd5-ef93-4c73-9359-ef02fe3bbce7 | | size | 1 | | status | creating | | topic | manila-share | | updated_at | 2024-03-11T18:15:32.000000 | +-------------------+------------------------------------------------+ $ openstack share backup list +--------------------------------------+-------+--------------------------------------+-----------+ | ID | Name | Share ID | Status | +--------------------------------------+-------+--------------------------------------+-----------+ | 4b468327-d03f-4df7-97ef-c5230b5beafc | test5 | 983c6dd5-ef93-4c73-9359-ef02fe3bbce7 | available | | 8a9b3ce0-23bb-4923-b8ce-d0dd1f56b2b8 | test4 | 983c6dd5-ef93-4c73-9359-ef02fe3bbce7 | available | +--------------------------------------+-------+--------------------------------------+-----------+ $ openstack share backup restore test4 $ openstack share backup list +--------------------------------------+-------+--------------------------------------+-----------+ | ID | Name | Share ID | Status | +--------------------------------------+-------+--------------------------------------+-----------+ | 4b468327-d03f-4df7-97ef-c5230b5beafc | test5 | 983c6dd5-ef93-4c73-9359-ef02fe3bbce7 | available | | 8a9b3ce0-23bb-4923-b8ce-d0dd1f56b2b8 | test4 | 983c6dd5-ef93-4c73-9359-ef02fe3bbce7 | restoring | +--------------------------------------+-------+--------------------------------------+-----------+ $ openstack share backup delete test5