2014-08-27 51 views
0

我一直試圖找出這2天沒有成功。 讓我知道你是否面臨類似的問題以及如何解決它。或者任何指針都會有幫助。實例操作系統無法找到附加捲

這就是我們所做的。

  1. 創建虛擬實例。
  2. 創建空白卷。
  3. 從快照創建卷。
  4. 將空白卷附加到實例。
  5. 將卷從快照附加到實例。
  6. 其他IP地址,安全組的東西。

所有這些都在單獨的線程中完成,但添加了依賴關係。防爆。 4取決於2(4-> 2)。 2-> 1。 5-> 3-> 1。

的問題是,有時:

  1. 一個器件不會出現在設備列表中。 Openstack顯示兩個附件。
  2. 這兩個設備都不出現在設備列表中。 Openstack顯示兩個附件。
  3. 兩者都出現,但指定設備的磁盤已切換!防爆。我們在/ dev/vdb上附加了1GB磁盤,在/ dev/vdc上附加了10GB磁盤。但是當我們執行fdisk -l/dev/vdc時,我們得到1G,/ dev/vdb顯示10G。
  4. 工程!!!

我檢查了代碼,所有組件都在做他們應該做的事情。這讓我懷疑OpenStack本身! (我知道...這有點奇怪。)

我使用冰箱和RDO packstack安裝allinone。

[更新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); 

[更新2] 我創建了一個示例程序來隔離該問題。本示例程序執行以下操作:

/-> 2 -> 3 >\ 
1 -> -> 6 -> -> x 
    \-> 4 -> 5 >/ 

基本上主線程創建實例並啓動兩個線程。一個線程創建空白卷(10GB)並將其附加。另一個從快照(1GB)創建卷並將其附加。然後主線程創建IP並附加它並等待兩個線程完成。

觀察結果很奇怪。每一次,附加捲響應都會將空卷連接到/ dev/vdc,並將快照中的卷連接到/ dev/vdb。

但是,當我在實例檢查

fdisk -l /dev/vdb 

回報10GB和

fdisk -l /dev/vdc 

返回1GB

什麼可能我會丟失?任何指針/建議都會有幫助。

+0

您可以分享您用於附加捲的命令嗎?你讓Openstack分配設備還是你指定? – Dave 2014-08-27 13:21:26

+0

嗨Dave,在原文中更新了您的問題答案 – 2014-08-28 10:55:03

+0

從您所說的話,我無法發現任何明顯的問題。我對jclouds並不太熟悉,但我唯一的建議是直接用nova客戶端嘗試它,看看問題是在操作系統中,還是在你使用的客戶端庫中。我在我的部署(與RDO packstack一起安裝的icehouse)上嘗試了同樣的事情,但無法複製該問題。 – Dave 2014-08-28 20:21:39

回答

1

只是爲了記錄。 同時連接捲不起作用。分配給附加捲的設備名稱取決於首先附加哪個設備名稱。儘管我們可能會指定名稱,但它可能不會被底層驅動程序所尊敬。

最後,我們沒有將卷的順序附件連接到順序,現在一切都按預期工作。

相關問題