在OpenStack中混合Ceph和LVM卷
Ceph池被定义为在OpenStack Havana中将卷和实例共置。对于不需要Ceph提供的弹性功能的卷,在/etc/cinder/cinder.conf中定义了一个LVM cinder后端
[lvm] volume_group=cinder-volumes volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver volume_backend_name=LVM
并将其附加到现有后端列表中
enabled_backends=rbd-default,rbd-ovh,rbd-hetzner,rbd-cloudwatt,lvm
创建一个cinder卷类型并将其关联
# cinder type-create lvm +--------------------------------------+------+ | ID | 名称 | +--------------------------------------+------+ | c77552ff-e513-4851-a5e6-2c83d0acb998 | lvm | +--------------------------------------+------+
cinder type-key lvm set volume_backend_name=LVM
cinder extra-specs-list
+--------------------------------------+-----------+--------------------------------------------+ | ID | 名称 | extra_specs | +--------------------------------------+-----------+--------------------------------------------+ ... | c77552ff-e513-4851-a5e6-2c83d0acb998 | lvm | {u'volume_backend_name': u'LVM'} | ... +--------------------------------------+-----------+--------------------------------------------+
为了减少网络开销,为每个裸机定义一个后端可用区,方法是在/etc/cinder/cinder.conf中添加
storage_availability_zone=bm0015
并重启cinder-volume
# restart cinder-volume
sleep 5
cinder-manage host list
host zone ... bm0015.the.re@lvm bm0015 ...
其中bm0015是机器的主机名。要创建一个位于bm0015上的LVM后端卷
cinder create --availability-zone bm0015 --volume-type lvm --display-name test 1
为了使RBD卷的分配在不指定可用区的情况下继续工作,必须至少有一个cinder卷在默认可用区(nova大概)中运行,并配置了预期的RBD后端。可以使用以下命令检查:
# cinder-manage host list | grep nova ... bm0017.the.re@rbd-cloudwatt nova bm0017.the.re@rbd-ovh nova bm0017.the.re@lvm nova bm0017.the.re@rbd-default nova bm0017.the.re@rbd-hetzner nova ...
在上述示例中,lvm卷类型也可用在nova可用区中,当需要LVM卷但将它与实例共置并不重要时,它被用作一个兜底方案。