技术并艺术着

张华的技术Blog

OpenStack's multiattach Feature (by quqi99)

**作者:张华 发表于:2017-12-22
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明**

什么是multiattach特性

OpenStack’s multiattach Feature允许一个read only volume经iscsi/FC被attached到多个VM。

代码实现原理

  • 用户首先通过cinder定义一个shareable标志的volume.
  • 在attach的时候,nova需要修改即使在in-use状态下仍然可以attach, nova为每一个attachment指定read-write或者read-only, cinder端修改在available和in-use状态下仍然可attach,multiattach标志设置可以被attach多次。attach之后将volume和instance的关系记录到attachment表中。libvirt端需要将这个volume设置shareable标, 这样hypervisor将不会在volume上设置独占锁及相关针对vm的SELinux隔离设置。
  • 在detach的时候,nova需要传递attachment_id到clinderclient告诉cinder哪个attahment需要detach, 然后cinder结合instance_id与attachment_id做detach。如果cinder设置了multiattach标志又没有传attachment_id(os-detach->attachment_id)过来应该失败。

数据表设计:
volume_attachment(id, volume_id, attached_host, instance_uuid, mountpoint, attach_time, attach_mode, sttach_status, time)

代码实现:
1, cinder side
https://review.openstack.org/#/c/85847/
2, cinderclient side
https://review.openstack.org/#/c/85856/
3, nova side
https://review.openstack.org/#/c/526182/
https://review.openstack.org/#/c/525787/
https://review.openstack.org/#/c/330285/
https://review.openstack.org/#/c/527468/

CLI如何使用:
openstack volume create –size 1 –multi-attach multi_attach_test

已知问题

RDB驱动不支持multiattach - https://review.openstack.org/#/c/283695/, 关于它的讨论 - https://openstack.nimeyo.com/103230/openstack-dev-multi-attach-volume-for-rbd,但根据这个说法(https://bugs.launchpad.net/cinder/+bug/1535815/comments/6)似乎用这个特性是安全的。

容器虚机通过multiattach特性使用同一个存储卷

我们知道Docker容器本身是无状态的,意味着容器退出后不会保存任何数据。但实际使用场景,肯定是需要保存业务数据的,Docker通过volume实现数据的持久化存储以及共享。Docker有很多种使用OpenStack Cinder的驱动:

什么是REX-Ray:

Cinder不仅是给nova用的,也可以绕开nova单独使用,见https://specs.openstack.org/openstack/cinder-specs/specs/mitaka/use-cinder-without-nova.html

cinder local-attach [--mountpoint /mnt/disk] [--multipath True] [--enforce-multipath True] [--mode rw] <volume_id>

如果通过rexray/cinder让Docker容器使用了cinder ceph volume的话,如果这个volume是有状态需要需要在容器和虚机间共享的话,这个volume也可以通过上面说的nova multiattach特性给nova instance使用的, 还可以使用这个特性’cinder local-attach’特性给non-nova instance使用。

备份网址

https://zhhuabj.github.io/2017/12/22/OpenStack-s-multiattach-Feature/

阅读更多
版权声明:本文为博主原创文章,如需转载,请注明出处! https://blog.csdn.net/quqi99/article/details/78872362
个人分类: Storage
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭