2014-08-27 2 views
0

Я пытался понять это с 2 дней без успеха. Дайте мне знать, если вы столкнулись с подобной проблемой и как ее исправить. Или любые указатели помогут.Экземпляр экземпляра не может найти прилагаемый объем

Вот что мы делаем.

  1. Создать виртуальный экземпляр.
  2. Создать пустой том.
  3. Создать объем из моментального снимка.
  4. Приложите пустой том к примеру.
  5. Прикрепить объем от моментального снимка к экземпляру.
  6. Другие IP-адреса, группы безопасности.

Все это делается в отдельных потоках, но с добавленными зависимостями. Ex. 4 зависит от 2 (4-> 2). 2-> 1. 5-> 3-> 1.

Проблема заключается в том, что иногда:

  1. Одно из устройств не отображаются в списке устройств. Openstack показывает оба прикрепленных.
  2. Оба устройства не отображаются в списке устройств. Openstack показывает оба прикрепленных.
  3. Оба появляются, но диски на определенных устройствах переключаются! Ex. Мы подключили 1GB диск на/dev/vdb и диск 10GB на/dev/vdc. Но когда мы делаем fdisk -l/dev/vdc, получаем 1G и/dev/vdb показывает 10G.
  4. Работы !!!

Я проверил код, и все компоненты выполняют то, что они должны делать. Это заставляет меня подозревать сам 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

Что я мог отсутствовать ?? Любые указатели/предложения были бы полезными.

+0

Можете ли вы поделиться командами, используемыми вами для подключения томов? Вы позволяете Openstack назначать устройства или вы указываете? – Dave

+0

Привет, Дейв, обновленные ответы на ваши вопросы в исходном сообщении –

+0

Из того, что вы сказали, я не вижу какой-либо очевидной проблемы. Я не слишком разбираюсь в jclouds, но единственным предложением было бы попробовать его с клиентом nova напрямую, чтобы узнать, есть ли проблема в ОС или используемая вами клиентская библиотека. Я попробовал то же самое при моем развертывании (ледяной стол, установленный с пакетом RDO), и не смог воспроизвести проблему. – Dave

ответ

1

Только для записи. Одновременное подключение томов не будет работать. Названия устройств, назначенные прикрепленному тому, зависят от того, какой из них привязан первым. Несмотря на то, что мы можем указать имя, это может не быть оценено базовым драйвером.

Наконец-то мы покончили с параллельным подключением томов к последовательному, и теперь все работает так, как ожидалось.

Смежные вопросы