首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实例OS找不到附加卷

实例OS找不到附加卷
EN

Stack Overflow用户
提问于 2014-08-27 11:57:49
回答 1查看 1.9K关注 0票数 0

从两天以来,我一直在努力想办法解决这个问题,但没有成功。如果您遇到过类似的问题,请告诉我,以及如何解决。否则任何指点都会有帮助。

这就是我们要做的。

  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上附加了10 1GB磁盘。但是,当我们做fdisk -l /dev/vdc时,我们得到1G,/dev/vdb显示10G。
  4. 工作!

我已经检查了代码,所有组件都在执行他们应该做的事情。这让我怀疑openstack本身!(我知道…这有点奇怪。)

我正在使用allinone与冰箱和RDO包堆栈设置。

更新1

我使用JClouds API来附加卷。此外,我还指定了设备名称(/dev/xvdb、/dev/xvdc)。然而,在调用之后,我正在检查响应中的设备名称,然后使用它们。

代码语言:javascript
复制
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 I创建了一个示例程序来隔离该问题。此示例程序执行以下操作:

代码语言:javascript
复制
    /-> 2 -> 3 >\
1 -> -> 6 -> -> x
    \-> 4 -> 5 >/

基本上,主线程创建实例并启动两个线程。一个线程创建空白卷(10 it )并将其附加。而另一个则从快照(1GB)创建卷并将其附加。然后主线程创建IP并将其连接起来,并等待两个线程完成。

这种观察是相当奇怪的。每次附加卷响应都表示空白卷被附加到/dev/vdc,而来自快照的卷则附加到/dev/vdb。

但是当我检查这个实例时

代码语言:javascript
复制
fdisk -l /dev/vdb

返回10 and和

代码语言:javascript
复制
fdisk -l /dev/vdc

返回1GB

我错过了什么??任何指示/建议都是有帮助的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-18 06:56:12

只是为了记录下。同时附加卷将无法工作。分配给附加卷的设备名称取决于首先附加的设备名称。尽管我们可以指定名称,但底层驱动程序可能不会遵守该名称。

最后,我们取消了卷与顺序的平行附加,现在一切都按预期工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25526567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档