Я пытался понять это с 2 дней без успеха. Дайте мне знать, если вы столкнулись с подобной проблемой и как ее исправить. Или любые указатели помогут.Экземпляр экземпляра не может найти прилагаемый объем
Вот что мы делаем.
- Создать виртуальный экземпляр.
- Создать пустой том.
- Создать объем из моментального снимка.
- Приложите пустой том к примеру.
- Прикрепить объем от моментального снимка к экземпляру.
- Другие IP-адреса, группы безопасности.
Все это делается в отдельных потоках, но с добавленными зависимостями. Ex. 4 зависит от 2 (4-> 2). 2-> 1. 5-> 3-> 1.
Проблема заключается в том, что иногда:
- Одно из устройств не отображаются в списке устройств. Openstack показывает оба прикрепленных.
- Оба устройства не отображаются в списке устройств. Openstack показывает оба прикрепленных.
- Оба появляются, но диски на определенных устройствах переключаются! Ex. Мы подключили 1GB диск на/dev/vdb и диск 10GB на/dev/vdc. Но когда мы делаем fdisk -l/dev/vdc, получаем 1G и/dev/vdb показывает 10G.
- Работы !!!
Я проверил код, и все компоненты выполняют то, что они должны делать. Это заставляет меня подозревать сам openstack! (Я знаю ... это странно.)
Я использую allinone с установкой стайлера и RDO packstack.
[Update 1]
Я использую JClouds API, чтобы прикрепить тома. Кроме того, я указываю имена устройств (/ dev/xvdb,/dev/xvdc). Тем не менее, я проверяю имена устройств в ответе после вызова и вместо этого использую их.
NovaAPI nova = ContextBuilder
.newBuilder("openstack-nova")
.endpoint(endpoint)
.credentials(getIdentity(), getPassword())
.modules(modules).buildApi(NovaApi.class);
VolumeAttachmentApi attachment = nova.getVolumeAttachmentExtensionForZone(CONSTANT_REGION).get();
VolumeAttachment attachment.attachVolumeToServerAsDevice(volumeIdExisting, instanceId, deviceDevXVDB);
[Update 2] Я создал пример программы, чтобы изолировать проблему. Эта программа-образец делает следующее:
/-> 2 -> 3 >\
1 -> -> 6 -> -> x
\-> 4 -> 5 >/
В основном основной поток создает экземпляр и запускает два потока. Один поток создает пустой объем (10 ГБ) и присоединяет его. В то время как другой создает тома из моментального снимка (1 ГБ) и присоединяет его. Основной поток затем создает IP-адрес и присоединяет его и ждет завершения двух потоков.
Наблюдение довольно странно. Каждый раз ответ на входящий том говорит, что пустой том подключен к/dev/vdc и том из моментального снимка, прикрепленного к/dev/vdb.
Но когда я проверил на экземпляре
fdisk -l /dev/vdb
возвращает 10GB и
fdisk -l /dev/vdc
возвращает 1GB
Что я мог отсутствовать ?? Любые указатели/предложения были бы полезными.
Можете ли вы поделиться командами, используемыми вами для подключения томов? Вы позволяете Openstack назначать устройства или вы указываете? – Dave
Привет, Дейв, обновленные ответы на ваши вопросы в исходном сообщении –
Из того, что вы сказали, я не вижу какой-либо очевидной проблемы. Я не слишком разбираюсь в jclouds, но единственным предложением было бы попробовать его с клиентом nova напрямую, чтобы узнать, есть ли проблема в ОС или используемая вами клиентская библиотека. Я попробовал то же самое при моем развертывании (ледяной стол, установленный с пакетом RDO), и не смог воспроизвести проблему. – Dave