我一直試圖找出這2天沒有成功。 讓我知道你是否面臨類似的問題以及如何解決它。或者任何指針都會有幫助。實例操作系統無法找到附加捲
這就是我們所做的。
- 創建虛擬實例。
- 創建空白卷。
- 從快照創建卷。
- 將空白卷附加到實例。
- 將卷從快照附加到實例。
- 其他IP地址,安全組的東西。
所有這些都在單獨的線程中完成,但添加了依賴關係。防爆。 4取決於2(4-> 2)。 2-> 1。 5-> 3-> 1。
的問題是,有時:
- 一個器件不會出現在設備列表中。 Openstack顯示兩個附件。
- 這兩個設備都不出現在設備列表中。 Openstack顯示兩個附件。
- 兩者都出現,但指定設備的磁盤已切換!防爆。我們在/ dev/vdb上附加了1GB磁盤,在/ dev/vdc上附加了10GB磁盤。但是當我們執行fdisk -l/dev/vdc時,我們得到1G,/ dev/vdb顯示10G。
- 工程!!!
我檢查了代碼,所有組件都在做他們應該做的事情。這讓我懷疑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
什麼可能我會丟失?任何指針/建議都會有幫助。
您可以分享您用於附加捲的命令嗎?你讓Openstack分配設備還是你指定? – Dave 2014-08-27 13:21:26
嗨Dave,在原文中更新了您的問題答案 – 2014-08-28 10:55:03
從您所說的話,我無法發現任何明顯的問題。我對jclouds並不太熟悉,但我唯一的建議是直接用nova客戶端嘗試它,看看問題是在操作系統中,還是在你使用的客戶端庫中。我在我的部署(與RDO packstack一起安裝的icehouse)上嘗試了同樣的事情,但無法複製該問題。 – Dave 2014-08-28 20:21:39