学习OpenStack之 (2):Cinder LVM 配置

简介:

0。背景

OpenStack 中的实例是不能持久化的,cinder服务重启,实例消失。如果需要挂载 volume,需要在 volume 中实现持久化。Cinder提供持久的块存储,目前仅供给虚拟机挂载使用。它并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商在 Cinder 中实现其驱动支持以与 OpenStack 进行整合。它通过整合后端多种存储,用API接口为外界提供存储服务。主要核心是对卷的管理,允许都卷、类型和快照进行处理。

Cinder存储分为本地块存储、分布式块存储和SAN存储等多种后端存储类型:
1. 本地存储: 默认通过LVM支持Linux
2. SAN存储:
    (1)通过NFS协议支持NAS存储,比如Netapp
    (2)通过添加不同厂商的制定driver来为了支持不同类型和型号的商业存储设备,比如EMC,IBM的存储。 在 https://wiki.openstack.org/wiki/CinderSupportMatrix可以看到所支持的厂商存储列表。
3. 分布式系统:支持sheepdog,ceph,和IBM的GPFS等

对于本地存储,cinder-volume 默认使用 LVM 驱动,该驱动当前的实现需要在主机上事先用 LVM 命令创建一个的卷组 , 当该主机接受到创建卷请求的时候,cinder-volume 在该卷组 上创建一个逻辑卷, 并且用 openiscsi 将这个卷当作一个 iscsi tgt 给输出.还可以将若干主机的本地存储用 sheepdog 虚拟成一个共享存储,然后使用 sheepdog 驱动。

1. Cinder LVM配置
在cinder配置文件中,默认的backend lvmdriver是通过LVM来使用本地存储:

[lvmdriver-1]
volume_group = stack-volumes-lvmdriver-1
volume_driver = cinder.volume.drivers.lvm.LVMISCSIDriver
volume_backend_name = lvmdriver-1

  • volume_group 指定Cinder使用的 volume group。在devstack默认安装时其名称是stack-volumes-lvmdriver-1;在实际部署cinder的时候其默认名称是cinder-volumes。
  • volume_driver 指定driver类型. Cinder目前支持两种传输协议, iSCSI and iSER。
    • iSCSI的话,将其值设为 cinder.volume.drivers.lvm.LVMISCSIDriver;
    • iSER的话,将其值设为 cinder.volume.drivers.lvm.LVMISERDriver。
       
      LVM是cinder.volume.drivers.lvm.LVMISCSIDriver
  • volume_backend_name 是backend name,在创建volume的时候可选择。

如果名字为stack-volumes-lvmdriver-1的volume group不存在,创建volume后其状态将为error,在cinder c-vol日志中可看到如下错误:

Exception during message handling: Unexpected error while running command.
Command: None
Exit code: -
Stdout: u'Unexpected error while running command.\nCommand: sudo cinder-rootwrap /etc/cinder/rootwrap.conf lvcreate -n volume-f3aef3b9-1a71-41d4-956e-a00044544b74 stack-volumes-lvmdriver-1 -L 1g\nExit code: 5\nStdout: u\'\'\nStderr: u\' Volume group "stack-volumes-lvmdriver-1" not found\\n\''
Stderr: None

可参考我的博文http://www.cnblogs.com/sammyliu/p/4157491.html来配置LVM。

3. Cinder使用LVM

成功创建一个Cinder volume后,可以在VG中看到新创建的logical volume:

root@dev:/home/s1# lvdisplay /dev/stack-volumes-lvmdriver-1/volume-02f986b0-418f-4f84-a5ec-7af61f5d5293
--- Logical volume ---
LV Name /dev/stack-volumes-lvmdriver-1/volume-02f986b0-418f-4f84-a5ec-7af61f5d5293
VG Name stack-volumes-lvmdriver-1
LV UUID 9oESr2-4V7f-qp22-F5te-hF2v-DWoy-EshtnN
LV Write Access read/write
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0

4. 使用多个backend/添加新的LVM backend

(1)创建新的volume group vg3

(1)修改cinder.conf,添加下面行:

 

enabled_backends=lvmdriver-1,lvmdriver-2

 

[lvmdriver-2]
volume_group = vg3
volume_driver = cinder.volume.drivers.lvm.LVMISCSIDriver
volume_backend_name = lvmdriver4vg3

注意: cinder-volume服务不监控该配置文件,除了在启动的时候读取该文件以外。因为在修改该文件后你需要重启该服务:`service cinder-volume restart`.

(3)创建新的的volume type type-test 

s1@dev:~/devstack$ cinder type-create type-test
+--------------------------------------+---------------+
| ID | Name |
+--------------------------------------+---------------+
| 764480d1-7614-4a63-ba33-924d65765534 | type-test|
+--------------------------------------+---------------+

(4) 设置volume type的backend name

cinder type-key type-test set volume_backend_name=lvmdriver4vg3

注意:

  • 只有一个backend的时候,除了配置volume group外,不需要添加别的配置信息,创建volume的时候也不需要选择volume type。
  • 当有多个backend的时候,你需要使用volume-type来将volume创建到指定的backend中。一个volume-type可以有几个backend,这时候 the capacity scheduler 会自动选择合适的backend来创建volume。
  • 如果定义了volume type,但是cinder.conf中没有定义volume backend,那么cinder scheduler将找不到有效的host来创建volume了。

(5)可以在Horizen中选择新的type  type-test来创建volume了

 5. 遇到的问题:

(1) 在选择一个volume type创建volume时失败,

症状:日志中有 No valid host was found. No weighed hosts available 错误

分析:查看volume host:

s1@dev:~/devstack$ cinder-manage service list
STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION from (pid=4488) _check_effective_sql_mode /usr/local/lib/python2.7/dist-packages/oslo/db/sqlalchemy/session.py:509
Binary           Host                                 Zone             Status     State Updated At
cinder-scheduler dev                                  nova             enabled    :-)   2014-12-12 16:11:54
cinder-volume    dev@lvmdriver-1                      nova             enabled    :-)   2014-12-12 16:11:56
原因:cinder-volume的host少了一个对应第二个vg的一个。应该是添加第二个backend后配置没生效。
解决:按照先后顺序重启 cinder-scheduler 和 cinder-volume 服务。创建volume错误消失。
(2) Volume一直处于creating状态。cinder-volume log中有如下错误:

Returning exception create_volume() got an unexpected keyword argument 'source_replicaid' to caller

原因:controller上和storage node上cinder版本不一致。

解决:在两个node上首先卸载cinder,然后执行命令 echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu"  "trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list,再安装cinder。确认cinder的版本一致。

1
apt-get install  package=version 命令。

   本文转自SammyLiu博客园博客,原文链接:http://www.cnblogs.com/sammyliu/p/4159147.html,如需转载请自行联系原作者


相关文章
|
7月前
|
存储 消息中间件 数据库
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
315 0
|
3月前
|
存储 消息中间件 算法
深入解析OpenStack Cinder:块存储服务详解
本文介绍了OpenStack及其块存储服务Cinder。OpenStack是一个开源云计算管理平台,提供基础设施即服务(IaaS),核心服务包括计算、网络、存储等。Cinder主要用于为虚拟机提供持久性块存储,具备多种功能,如卷操作、备份、快照及与实例的交互等。此外,还详细介绍了Cinder的工作流程、命令行操作及不同存储插件的使用。
569 8
|
4月前
|
存储 网络性能优化 块存储
OpenStack的块存储卷管理创建与配置
【8月更文挑战第27天】
160 3
|
4月前
|
存储 固态存储 网络性能优化
OpenStack的块存储(Cinder)
【8月更文挑战第24天】
181 2
|
4月前
|
机器学习/深度学习 存储 虚拟化
OpenStack学习教程
【8月更文挑战第19天】
170 4
|
4月前
|
存储 API 调度
OpenStack核心组件Cinder
【8月更文挑战第4天】
220 9
|
4月前
|
存储 安全 云计算
open stack学习教程
【8月更文挑战第3天】
202 8
|
7月前
|
存储 运维 Swift
openstack cinder、swift运维命令
Cinder是OpenStack的块存储服务,提供虚拟机块设备功能,包括卷的创建、挂载等。它由cinder-api、cinder-scheduler和cinder-volume三个组件构成,前者处理请求,中间者负责调度,后者执行卷管理。Swift是OpenStack的分布式对象存储服务,高可用、持久性,适用于大文件存储。Swift架构对称,无单点故障,提供类似文件系统的简单逻辑和高效读写。Cinder关注虚拟机层面的块存储,而Swift则提供对象存储服务。命令示例展示了如何使用cinder和openstack命令操作云硬盘和Swift容器。
175 0
|
API 数据库
(九)Open Stack(M)--- Heat安装和配置
(九)Open Stack(M)--- Heat安装和配置
157 0
|
存储 API 数据库
(八)Open Stack(M)---Cinder安装和配置
(八)Open Stack(M)---Cinder安装和配置
124 0