Openstack 实例操作系统找不到连接的卷

Openstack 实例操作系统找不到连接的卷,openstack,jclouds,openstack-cinder,Openstack,Jclouds,Openstack Cinder,两天以来,我一直在努力解决这个问题,但没有成功。 如果您遇到过类似问题,请告诉我如何解决。或者任何指针都会有帮助 这就是我们要做的 创建虚拟实例 创建空白卷 从快照创建卷 将空白卷附加到实例 将卷从快照连接到实例 其他IP地址,安全组的东西 所有这些都在单独的线程中完成,但添加了依赖项。例4取决于2(4->2)。2->1. 5->3->1 问题是,有时: 其中一个设备未显示在设备列表中。Openstack显示了这两个连接 这两个设备都不会出现在设备列表中。Openstack显示了这两个连接 两者

两天以来,我一直在努力解决这个问题,但没有成功。 如果您遇到过类似问题,请告诉我如何解决。或者任何指针都会有帮助

这就是我们要做的

  • 创建虚拟实例
  • 创建空白卷
  • 从快照创建卷
  • 将空白卷附加到实例
  • 将卷从快照连接到实例
  • 其他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本身!(我知道……这有点奇怪。)

    我正在使用allinone和icehouse和RDO packstack设置

    [更新1]

    我正在使用jcloudsapi来连接卷。此外,我还指定了设备名称(/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,更新了原始帖子中您问题的答案根据您所说的,我无法发现任何明显的问题。我对jclouds不太熟悉,但我唯一的建议是直接在nova客户机上试用,看看问题是在操作系统中还是在您使用的客户机库中。我在我的部署(icehouse安装了RDO packstack)上尝试了相同的方法,但无法复制该问题。Dave,当我尝试使用相同的程序按顺序创建+附加时,它可以正常工作。是的,如果我从地平线或命令行执行,一切都会按预期进行。