在openstack mitaka中支持多附件卷

时间:2018-08-08 15:02:13

标签: openstack openstack-nova openstack-cinder

我确实知道Queens正式支持多附件卷,当然升级很容易,但是在Mitaka中我需要它。这里不是升级选项。

这些是我正在使用的版本,必须待在那里!

$ # NOVA
$ nova --version
out: 3.3.1
$ nova-api --version
out: 13.1.4
$ nova-compute --version
out: 13.1.4
$ nova-cert --version
out: 13.1.4
$ nova-scheduler --version
out: 13.1.4
$ nova-conductor --version
out: 13.1.4
$ nova-consoleauth --version
out: 13.1.4
$ # CINDER
$ cinder --version
out: 1.6.0
$ cinder-api --version
out: 8.1.1
$ cinder-scheduler --version
out: 8.1.1
$ cinder-volume --version
out: 8.1.1
$ # KVM
$ kvm --version
out: QUEMU emulator version 2.5.0

我有两个实例-i1和i2,以及一个带有--allow-multiattach标志的煤渣卷。我们使用nova volume-attach将音量调到i1。到目前为止,一切都按预期进行。如果再次尝试使用nova volume-attach将卷附加到i2,则会收到错误消息(说要附加-卷状态必须为“可用”,而不是“使用中”)。

我做了一个小的代码搜索,并决定从该源文件中注释掉从319到326行(两个if语句):https://github.com/openstack/nova/blob/mitaka-eol/nova/volume/cinder.py->他们强制必须提供该卷才能附加它。

结果:

  • 我现在可以将一个卷附加到多个实例(仅通过两个实例进行测试)
  • 如果我调用nova show i1nova show i2,我可以看到两个实例在os-extended-volumes:volumes_attached列表属性中都有音量指令。
  • cinder似乎不承认这一点:cinder list仅显示该卷已附加到一个实例(第一个附加的实例),并且该卷的状态也停留在attaching上永远
  • cinder show <volume_id>attachments属性中只有一个实例字典
  • virsh dumpxml <instance_name>缺少共享标志
  • 当我输入实例时,我可以mountumount毫无问题地进行读写。我只需要再次umountmount就可以看到跨实例更改
  • 在第二个附加的实例上调用nova volume-detach时也会出现问题(找不到错误的卷ID),我认为是因为该卷似乎处于附加状态。但是,通过cinder reset-state <volume_id> --state 'in-use' --attach-state 'attached'从附加状态更改为使用中状态不会更改错误。
  • 如果先连接(i1),则先分离-正确分离。 nova show i1将正确显示os-extended-volumes:volumes_attached为空列表。然后,当尝试从第二个实例(i2)分离卷时,将返回错误,表明该卷已被分离。第一次调用分离(i1)后,attachments中的cinder show volume条目将被清空

问题:

有人有这样的技巧,并在他/她的努力中取得了成功吗? 是否有人能够枚举必须进行修改的代码的所有方面,才能在Mitaka中进行多连接工作?正确吗?

热烈欢迎任何建议!

0 个答案:

没有答案