我一直在努力解决这个问题,因为2天没有成功。 如果您遇到类似问题以及如何解决问题,请与我们联系。或者任何指针都会有所帮助。
以下是我们的工作。
所有这些都是在单独的线程中完成的,但添加了依赖项。防爆。 4取决于2(4-> 2)。 2→1。 5→3→1
问题在于:有时候:
我检查了代码,所有组件都在做他们应该做的事情。这让我怀疑openstack本身! (我知道......那有点奇怪。)
我正在使用icehouse和RDO packstack设置。
[更新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 :(得分:1)
仅供记录。 同时附加卷不起作用。分配给附加卷的设备名称取决于首先附加的设备名称。即使我们可以指定名称,也可能不会被底层驱动程序尊重。
最后,我们废弃了卷的并行连接到顺序,现在一切都按预期工作。