OpenStack Queens Cinder Multi-Attach 功能

OpenStack Queens 平台于2月28日正式发布,这是该开源云平台的第17版。OpenStack Queens 增加了多项新功能,也优化增强了多项旧功能,包括虚拟 GPU( vGPU )支持和容器集成的改进。几个新项目也在 OpenStack Queens 这一里程碑中露面,包括提供管理硬件和软件加速资源框架的Cyborg 。 Queens 发布了一些强大的面向企业的功能,其中最引人注目的是 Cinder 中的 Multi-Attach 功能。Cinder Multi-Attach 使运维者能够将相同的Cinder 卷加载到多个 VM 中。如果一个节点关闭,另一个节点能够接管并访问该卷。

环境准备

1. 安装 OpenStack Queens

使用 devstack 安装 openstack (stable/queens),这里不再赘述。

2. Cinder 需要满足的条件

Multi-Attach 功能在 cinder microversion >= 3.50 版本可用,查看 stable/queens 的cinder版本

复制

# cinder --version
3.5.0

3. Nova 需要满足的条件

  • nova api microversion版本高于或等于2.60 复制
# nova version-list
Client supported API versions:
Minimum version 2.1
Maximum version 2.53

Server supported API versions:
+------+-----------+----------------------+-------------+---------+
| Id   | Status    | Updated              | Min Version | Version |
+------+-----------+----------------------+-------------+---------+
| v2.0 | SUPPORTED | 2011-01-21T11:33:21Z |             |         |
| v2.1 | CURRENT   | 2013-07-23T11:33:21Z | 2.1         | 2.60    |
+------+-----------+----------------------+-------------+---------+
  • Cinder 12.0.0(Queens)或更高
  • nova-compute 服务必须运行的是 Queens release的代码版本,hypervisor 的驱动必须支持挂载卷设备到多个虚拟机。 复制
支持的驱动
Libvirt KVM (s390x): complete
Libvirt Virtuozzo CT: missing
Libvirt KVM (ppc64): complete
Libvirt KVM (x86): complete
Libvirt KVM (aarch64): unknown
Libvirt LXC: missing
Hyper-V: missing
Libvirt QEMU (x86): complete
XenServer: missing
Libvirt Virtuozzo VM: complete
Libvirt Xen: complete
PowerVM: missing
Ironic: missing
VMware vCenter: missing
  • 当使用 libvirt 驱动的时候需要满足 libvirt >= 3.10 或者 qemu < 2.10 复制
# virsh --version
3.2.0

# qemu-img --version
qemu-img version 2.9.0(qemu-kvm-ev-2.9.0-16.el7_4.13.1)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
  • 不支持 Swapping 正在使用中的 multiattach 卷

4. Novaclient 版本 > 9.1.1

== 测试中发现 novaclient 版本过低,无法调用 nova api 2.6版本,升级novaclient ==

复制

# pip install -U python-novaclient

综上,本地环境满足上述要求,可以进行 Multi-Attach 测试。

Multi-Attach 测试

1. 创建 multiattach 的卷类型

复制

# cinder type-create multiattach
# cinder type-key multiattach set multiattach="<is> True"

2. 创建一个 10G 大小multiattach 卷

复制

# cinder create 10 --name multiattach-volume --volume-type <volume_type_uuid>

3. 创建两个测试虚拟机

复制

# openstack server create --image  CentOS-7-x86_64 --flavor ds1G --network private test01
# openstack server create --image  CentOS-7-x86_64 --flavor ds1G --network private test02

4. 挂载 multiattach-volume 到虚拟机 test01

复制

# nova volume-attach test01 <volume_uuid>
+----------+--------------------------------------+
| Property | Value                                |
+----------+--------------------------------------+
| device   | /dev/vdb                             |
| id       | ad8c6437-d842-40f7-b3d8-ee15d9623370 |
| serverId | 972393a0-346e-419d-8933-2562290829cf |
| volumeId | ad8c6437-d842-40f7-b3d8-ee15d9623370 |
+----------+--------------------------------------+

5. 继续挂载multiattach-volume 到虚拟机 test02

复制

# nova volume-attach test02 <volume_uuid>
+----------+--------------------------------------+
| Property | Value                                |
+----------+--------------------------------------+
| device   | /dev/vdb                             |
| id       | ad8c6437-d842-40f7-b3d8-ee15d9623370 |
| serverId | 93b82c8e-4155-4ad5-9366-6eb2a9c9d34d |
| volumeId | ad8c6437-d842-40f7-b3d8-ee15d9623370 |
+----------+--------------------------------------+

6. 查看卷信息,可以看到有两个挂载信息

复制

# cinder show ad8c6437-d842-40f7-b3d8-ee15d9623370
+--------------------------------+----------------------------------------------------------------------------------+
| Property                       | Value                                                                            |
+--------------------------------+----------------------------------------------------------------------------------+
| attached_servers               | ['93b82c8e-4155-4ad5-9366-6eb2a9c9d34d', '972393a0-346e-419d-8933-2562290829cf'] |
| attachment_ids                 | ['bb764f56-b3bb-4a32-9859-5a25c8eb1287', 'deddf8b6-8b6c-4bb4-b309-7eb78d135637'] |
| availability_zone              | nova                                                                             |
| bootable                       | false                                                                            |
| consistencygroup_id            | None                                                                             |
| created_at                     | 2018-03-06T05:43:01.000000                                                       |
| description                    | None                                                                             |
| encrypted                      | False                                                                            |
| id                             | ad8c6437-d842-40f7-b3d8-ee15d9623370                                             |
| metadata                       | attached_mode : rw                                                               |
| migration_status               | None                                                                             |
| multiattach                    | True                                                                             |
| name                           | multiattach-volume                                                               |
| os-vol-host-attr:host          | queens.domian.tld@lvmdriver-1#lvmdriver-1                                        |
| os-vol-mig-status-attr:migstat | None                                                                             |
| os-vol-mig-status-attr:name_id | None                                                                             |
| os-vol-tenant-attr:tenant_id   | ce5300160e244953bcfab8b9ebf06705                                                 |
| replication_status             | None                                                                             |
| size                           | 10                                                                               |
| snapshot_id                    | None                                                                             |
| source_volid                   | None                                                                             |
| status                         | in-use                                                                           |
| updated_at                     | 2018-03-06T06:16:44.000000                                                       |
| user_id                        | 6b1155688e044f5899a5dd154fa269bd                                                 |
| volume_type                    | multiattach                                                                      |
+--------------------------------+----------------------------------------------------------------------------------+

如图 test01 和 test02 都能查看到磁盘信息

接下来在 test02 上面创建分区挂载磁盘到 /mnt 并写入文件

接着关闭 test02 模拟出现故障,然后在 test01 上挂载分区,查看文件(可能需要手动刷新下分区表)

Multi-Attach 一些说明

RO/RW 警告(第二挂载 RW 权限的问题) 默认情况下第二次挂载的采用 read/write 模式, 会导致一些问题,尤其是卷迁移之类的操作,后期会有一些改进支持自定义第二个挂载的模式。

已知问题

  • 不支持调整一个 in-use 的卷从 multiattach 类型到非 multiattach 类型
  • 如果一个 multiattach 卷有不止一个 R/W 模式的挂载正在使用中,不推荐进行 retype 操作。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏zhisheng

SpringBoot RabbitMQ 整合使用

前提 上次写了篇文章,《SpringBoot Kafka 整合使用》,阅读量还挺高的,于是想想还是把其他几种 MQ 也和 SpringBoot 整合使用下。 下...

33390
来自专栏散尽浮华

Centos 6.9下部署Oracle 11G数据库环境的操作记录

操作系统:Centos6.9(64Bit) Oracle:11g 、11.2.0.4.0版本 Ip地址:172.16.220.139 废话不多说了,下面记录安装...

28090
来自专栏Flutter入门

偶遇FFmpeg(三)——Android集成

其实这部分,不比多言了。虽然在网上可以找到很多类似的经验,但其实第一次使用还是要花费不少的时间。

1K50
来自专栏程序员同行者

14-使用glusterfs做持久化存储

18920
来自专栏pangguoming

CentOS 6 使用 yum 安装MongoDB及服务器端配置

安装MongoDB的方法有很多种,可以源代码安装,在Centos也可以用yum源安装的方法。由于MongoDB更新得比较快,我比较喜欢用yum源安装的方法。64...

47770
来自专栏容器云生态

Docker1.12尝试

前言:在docker1.12中默认增加了swarm mode 编排功能,并且官方支持更多的插件来进行docker的网路和外接存储插件,不过目前测试swarm m...

494100
来自专栏JAVA高级架构

详解 Tomcat 的连接数与线程池

前言 在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。 在前面的文章 详...

1.2K90
来自专栏小狼的世界

Kubernetes基础:编排调度的那些Controllers

Kubernetes提供了很多Controller资源来管理、调度Pod,包括Replication Controller、ReplicaSet、Deploym...

19020
来自专栏Star先生的专栏

区块链源码学习 : obc-peer 环境搭建 ( 一 )

配置开发环境当前开发环境使用 varant 来运行一个 ubuntu 镜像,ubuntu 中运行着 docker 容器。主机 -> ubuntu -> dock...

48120
来自专栏搜云库

CentOs7.3 搭建 RabbitMQ 3.6 单机服务

CentOs7.3 搭建 RabbitMQ 3.6 单机服务 RabbitMQ简介 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支...

362100

扫码关注云+社区

领取腾讯云代金券