Особенности квот

Вопрос: Инстансы не создаются из-за превышения квоты, но нигде её не вижу в веб-интерфейсе!

Ответ: Некоторые квоты устроены довольно хитро, и при этом их нужно использовать с осторожностью. Одна из таких квот это использование локальных дисков с разделением по проектам. Коварство этой квоты в том, что она напрямую зависит от того, какие гипервизоры введены в строй, а какие нет + явным образом по умолчанию не учитывают то, что на разных гипервизорах могут быть локальные диски вообще разной природы. Это нужно тонко настраивать с использованием метаданных типов инстансов, а также при помощи консольных команд openstack. На данный момент мы не придумали, как отобразить эту механику настройки в веб-интерфейсе, но занимаемся этим.

Само ограничение DISK:GB по умолчанию установлено в 10Гбайт, чтобы была возможность об этом подумать после развёртывания системы и не попасть в безвыходную ситуацию: инстансы с локальным хранением данных используют эту квоту, а уменьшить её в случае использования не удастся, поэтому мы специально оставили её такой.

Решение

Для взаимодействия с этой квотой необходимо воспользоваться интерфейсом командной строки.

Для просмотра квоты по умолчанию используйте команду:

openstack registered limit list --service nova --service-name class:DISK_GB

Для выставления этой квоты используйте команду:

openstack registered limit list --service nova --service-name class:DISK_GB -f value -c ID | xargs -L1 openstack registered limit set --default-limit <new_limit>

Для того, чтобы посмотреть лимит, установленный на проект, используйте команду:

openstack limit list --service nova --resource-name class:DISK_GB \
--project <project>

Для установки этого лимита воспользуйтесь командой:

openstack limit set --resource-limit <new_limit> <limit_id>

используя идентификатор запроса из запроса текущего лимита.

Если квота на проект отсутствует(вывод команды пустой), используется квота по умолчанию. Квоту на проект можно создать командой:

openstack limit --project <project> --service nova --resource-limit <new_limit> class:DISK_GB

При установке квот стоит руководствоваться реальными суммарными возможностями гипервизоров. Информацию о возможностях гипервизоров можно изучить при помощи команд openstack resource provider list и openstack resource provider inventory list

Примечание

при учетё этой квоты различия между локальными дисками не учитываются. Для учёта таких различий следует использовать механизм aggregates_instance_extra_specs:

  • выставить типу инстанса требование на наличие у гипервизора определённого атрибута(например, ssd=true):

Назначение extra specs для flavor:

openstack flavor set \
   --property aggregate_instance_extra_specs:ssd=true <flavor_name>

Создание host aggregate:

openstack aggregate create --zone nova <aggregate_name>

Назначение атрибута host aggregate:

openstack aggregate set --property ssd=true <aggregate_id>

Добавление гипервизоров в host aggregate:

openstack aggregate add host <aggregate_name> <host>