Restore OpenStack from a Backup¶
You can restore StarlingX OpenStack from a backup with or without Ceph.
Prerequisites
You must have a backup of your StarlingX OpenStack installation as described in Back up OpenStack.
You must have an operational StarlingX deployment.
Procedure
Delete the old OpenStack application and upload it again.
Note
Images and volumes will remain in Ceph.
~(keystone_admin)$ system application-remove stx-openstack ~(keystone_admin)$ system application-delete stx-openstack ~(keystone_admin)$ system application-upload stx-openstack.tgz
Restore StarlingX OpenStack.
You can choose either of the following options:
Restore only StarlingX OpenStack system data. This option will not restore the Ceph data (that is, it will not run commands like rbd import). This procedure will preserve any existing Ceph data at restore-time.
Restore StarlingX OpenStack system data, Cinder volumes and Glance images. You’ll want to run this step if your Ceph data will be wiped after the backup.
Restore only application system data¶
Run the following command:
~(keystone_admin)$ ansible-playbook /usr/share/ansible/stx-ansible/playbooks/ restore_openstack.yml -e "@localhost-restore.yaml"
cat << EOF > localhost-restore.yaml
---
ansible_become_pass: "<admin_password>"
admin_password: "<admin_password>"
initial_backup_dir: "<location_of_backup_filename>"
backup_filename: "<openstack_tgz_backup_filename>"
...
EOF
Restore application system data, cinder volumes and glance images¶
Run the following command:
~(keystone_admin)$ ansible-playbook /usr/share/ansible/stx-ansible/playbooks/ restore_openstack.yml -e "@localhost-restore.yaml"
cat << EOF > localhost-restore.yaml --- ansible_become_pass: "<admin_password>" admin_password: "<admin_password>" initial_backup_dir: "<location_of_backup_filename>" backup_filename: "<openstack_tgz_backup_filename>" restore_cinder_glance_data="true" ... EOF
When this step has completed, the Cinder, Glance and MariaDB services will be up, and Mariadb data restored.
Restore Ceph data.
Restore Cinder volumes using the rbd import command.
For example:
~(keystone_admin)$ rbd import -p cinder-volumes /tmp/611157b9-78a4-4a26-af16-f9ff75a85e1b
Where
tmp/611157b9-78a4-4a26-af16-f9ff75a85e1b
is a file saved earlier at the backup procedure as described in Back up OpenStack.Restore Glance images using the image-backup script.
For example, if we have an archive named
image_3f30adc2-3e7c-45bf-9d4b-a4c1e191d879.tgz
in the/opt/backups
directory, we can use restore it using the following command:~(keystone_admin)$ sudo image-backup.sh import image_3f30adc2-3e7c-45bf-9d4b-a4c1e191d879.tgz
Use the tidy_storage_post_restore utility to detect any discrepancy between Cinder/Glance DB and rbd pools:
~(keystone_admin)$ tidy_storage_post_restore <log_file>
After the script finishes, some command output will be written to the log file. They will help reconcile discrepancies between the StarlingX OpenStack database and CEPH data.
Run the playbook again with the
restore_openstack_continue
flag set totrue
to bring up the remaining OpenStack services.~(keystone_admin)$ ansible-playbook /usr/share/ansible/stx-ansible/playbooks/ restore_openstack.yml -e "@localhost-restore.yaml"
cat << EOF > localhost-restore.yaml --- ansible_become_pass: "<admin_password>" admin_password: "<admin_password>" initial_backup_dir: "<location_of_backup_filename>" backup_filename: "<openstack_tgz_backup_filename>" restore_openstack_continue="true" ... EOF