В некоторых нештатных ситуациях снимки томов виртуальных машин в ACS могут застрять в нестандартных состояниях, таких как Allocated, BackingUp, в которых их невозможно удалить с помощью средств API. К сожалению, данная проблема встречается практически во всех версиях ACS, в последний раз была встречена в ACS 4.9.2. У администратора возникает необходимость все же как-то удалять такие снимки. В данной мини-статье дается руководство как выполнить данную процедуру.
Итак, это нештатная ситуация. Для ее решения необходимо воспользоваться редактированием сущностей снимков через БД MySQL CloudStack. Операция будет производиться в три этапа:
- изменение статуса проблемного снимка в БД средствами СУБД
- удаление снимка через API
- проверка удаления данных из вторичного хранилища.
Исправление
Сначала обнаружим проблемные снимки:
mysql> select * from snapshots where status != 'BackedUp' and status != 'Destroyed' and status != 'Error';
+-----+----------------+------------+-----------+-----------+------------------+-----------+------+-----------------------------------------------------------------+--------------------------------------+---------------+------------------+-------------+---------------------+---------------------+----------------+----------+------------+--------------+-----------------+---------+-------+----------+----------+
| id | data_center_id | account_id | domain_id | volume_id | disk_offering_id | status | path | name | uuid | snapshot_type | type_description | size | created | removed | backup_snap_id | swift_id | sechost_id | prev_snap_id | hypervisor_type | version | s3_id | min_iops | max_iops |
+-----+----------------+------------+-----------+-----------+------------------+-----------+------+-----------------------------------------------------------------+--------------------------------------+---------------+------------------+-------------+---------------------+---------------------+----------------+----------+------------+--------------+-----------------+---------+-------+----------+----------+
| 66 | 1 | 4 | 1 | 376 | 1 | Allocated | NULL | VM-aab02612-8b9b-4274-b727-3505558995b3_ROOT-336_20170117082532 | c35af6d6-eb89-406c-a06a-e3ab7da48c67 | 0 | MANUAL | 8589934592 | 2017-01-17 08:25:32 | NULL | NULL | NULL | NULL | NULL | KVM | 2.2 | NULL | NULL | NULL |
| 729 | 1 | 2 | 1 | 607 | 18 | Creating | NULL | DONTDELETEORYOUWILLBEFIRED_ROOT-523_20170823050255 | 83549abf-7bdd-4a75-bdaa-66c01426ab2d | 3 | HOURLY | 53687091200 | 2017-08-23 05:02:55 | 2017-08-23 05:10:44 | NULL | NULL | NULL | NULL | KVM | 2.2 | NULL | NULL | NULL |
| 879 | 1 | 2 | 1 | 607 | 18 | BackingUp | NULL | DONTDELETEORYOUWILLBEFIRED_ROOT-523_20170828070114 | 0d6e4ef3-1275-4117-8721-cf35e6211de5 | 3 | HOURLY | 53687091200 | 2017-08-28 07:01:14 | NULL | NULL | NULL | NULL | NULL | KVM | 2.2 | NULL | NULL | NULL |
+-----+----------------+------------+-----------+-----------+------------------+-----------+------+-----------------------------------------------------------------+--------------------------------------+---------------+------------------+-------------+---------------------+---------------------+----------------+----------+------------+--------------+-----------------+---------+-------+----------+----------+
Обратите внимание, что в этот список могут попасть снимки, которые в текущий момент создаются, поэтому в реальных условиях в запрос необходимо добавить еще фильтрацию по полю
created
.
Изменим их состояние на “BackedUp”:
mysql> update snapshots set status = 'BackedUp' where id=879 or id=66;
Удаление
Теперь, после исправления статуса данные снимуки могут быть удалены через API.
Проверка освобождения данных
Убедимся, что на вторичном хранилище данные были успешно удалены (на примере снимка с Id=879):
mysql> select snapshot_id, url, store_role, install_path from snapshot_store_ref,image_store where image_store.id=store_id and snapshot_id=879 and store_role = 'Image';
+-------------+--------------------------------------+------------+-----------------+
| snapshot_id | url | store_role | install_path |
+-------------+--------------------------------------+------------+-----------------+
| 879 | nfs://192.168.3.218/export/secondary | Image | snapshots/2/607 |
+-------------+--------------------------------------+------------+-----------------+
1 row in set (0.00 sec)
Далее, необходимо зайти на данный сервер хранилища и убедиться, что указанный путь не содержит файлов.
Причины возникновения проблемы
Проблема возникает в том случае, если в процессе создания снимка происходит нештатная ситуация, такая как:
- потеря сетевой связности;
- отказ сервера управления;
- превышение предельной производительности инфраструктуры.
Долгосрочное решение
Автоматизированный сценарий мониторинга, обнаружения и удаления подобных снимков в автоматическом режиме и информирование ITSM об их наличии.