1、cinder简介

Cinder提供持久的块存储,目前仅供给虚拟机挂载使用。它并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商在 Cinder 中实现其驱动,以与 OpenStack 进行整合。它通过整合后端多种存储,用API接口为外界提供存储服务。

Cinder存储分为本地块存储、分布式块存储和SAN存储等多种后端存储类型:
1)本地存储: 默认使用lvm。cinder volume 将该服务所在的节点变为存储节点,将节点上面的 volume group 作为共享存储池暴露给计算节点。
2)SAN存储:
(1)通过NFS协议支持NAS存储,比如Netapp
(2)通过添加不同厂商的制定driver来为了支持不同类型和型号的商业存储设备,比如EMC,IBM的存储
3) 分布式存储:支持sheepdog,ceph,和IBM的GPFS等
对于本地存储,cinder-volume 默认使用 LVM 驱动,该驱动当前的实现需要在主机上事先用 LVM 命令创建一个卷组 , 当该主机接受到创建卷请求的时候,cinder-volume 在该卷组 上创建一个逻辑卷, 并且用 openiscsi 将这个卷当作一个 iscsi tgt 给输出.还可以将若干主机的本地存储用 sheepdog 虚拟成一个共享存储,然后使用 sheepdog 驱动。

2、Cinder LVM配置

在cinder配置文件中,默认的backend lvmdriver是通过LVM来使用某个cinder volume服务所在的服务器的本地存储空间:

cinder-volume服务所在的节点,cinder.conf配置文件内容样式如下:

[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即存储节点上的vg。在devstack默认安装时其名称是stack-volumes-lvmdriver-1;在实际部署cinder的时候其默认名称是cinder-volumes。
volume_driver 指定driver类型. lvm支持两种传输协议: iSCSI and iSER。
iSCSI的话,将其值设为 cinder.volume.drivers.lvm.LVMISCSIDriver;
iSER的话,将其值设为 cinder.volume.drivers.lvm.LVMISERDriver

volume_backend_name 指定backend name。当有多个 volume backend 时,需要创建 volume type,它会绑定一个或者多个backend。用户在创建 volume 时需要选择某个 volume type,间接相当于选择了某个 volume backend。

注意事项:

1)除了在启动的时候读取该配置文件以外,cinder-volume服务不实时监控该文件。因此在修改该文件后你需要重启cinder-volume 服务。
也就是说cinder-volume服务只是在启动的时候,读取一次该配置文件,剩下的就不在读取了,因此在修改完配置文件后,需要在重启启动一下cinder-volume服务

2)只有一个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了。

3)一个存储节点上可以提供多种类型的存储服务,例如,本地存储、ceph存储等,对于本地存储类型来说,一个vg就是一个存储后端backend,一个存储类型type,可以对应多个backend,创建卷时,指定存储类型,系统会自动选择一个有效backend后端进行真实卷的创建。部署的时候,可以这样划分,相同类型的存储后端,归类为一个存储类型,这样可以通过卷类型来区分不同的存储类型。也可以一个存储类型type对应一个存储后端

3、实战操作

Cinder存储节点部署,部署在a主机
1)安装lvm2软件包
yum install lvm2 -y

2)启动LVM的metadata服务并且设置该服务随系统启动
systemctl enable lvm2-lvmetad.service
systemctl start lvm2-lvmetad.service

3)创建LVM 物理卷 /dev/sdb
pvcreate /dev/sdb

4)创建 LVM 卷组 cinder-volumes
vgcreate cinder-volumes /dev/sdb

5)编辑/etc/lvm/lvm.conf文件并完成下面的操作:
在devices部分,添加一个过滤器,只接受/dev/sdb设备,拒绝其他所有设备
devices {
filter = [ "a/sdb/", "r/.*/"]
提示:每个过滤器组中的元素都以 a 开头,即为 accept,或以 r 开头,即为**reject**,并且包括一个设备名称的正则表达式规则。过滤器组必须以 r/.*/ 结束,过滤所有保留设备

6)安装cinder组件软件包
yum install openstack-cinder targetcli python-keystone -y

7)在cinder-volume服务所在的节点修改cinder.conf 文件
在[lvm]部分,配置LVM后端以LVM驱动结束,卷组cinder-volumes,iSCSI协议和正确的iSCSI服务
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver # 驱动
volume_group = cinder-volumes # vg组名称
iscsi_protocol = iscsi # iSCSI协议
iscsi_helper = lioadm # iSCSI管理工具
volume_backend_name=iSCSI-Storage # 名称在 [DEFAULT] 区域,配置镜像服务 API 的位置
在[DEFAULT]部分,启用 LVM 后端
[DEFAULT]
enabled_backends = lvm
在[DEFAULT]区域,配置镜像服务 API 的位置
[DEFAULT]
glance_api_servers = http://192.168.137.11:9292

8)启动块存储卷服务及其依赖的服务,并将其配置为随系统启动
systemctl enable openstack-cinder-volume.service target.service
systemctl restart openstack-cinder-volume.service target.service

9)使用cinder create 命令创建卷,再通过nova volume-attach 命令把卷改在到虚机上
10)在存储节点上执行lvdisplay命令,查看刚才挂载的数据卷

cinder介绍及使用lvm本地存储的更多相关文章

  1. Openstack入门篇(十八)之Cinder服务-->使用NFS作为后端存储

    1.安装cinder-volume组件以及nfs [root@linux-node2 ~]# yum install -y openstack-cinder python-keystone [root ...

  2. 基于本地存储的kvm虚拟机在线迁移

    基于本地存储的kvm虚拟机在线迁移 kvm虚拟机迁移分为4种(1)热迁移基于共享存储(2)热迁移基于本地存储(3)冷迁移基于共享存储(4)冷迁移基于本地存储 这里介绍的是基于本地存储的热迁移 动态块迁 ...

  3. H5 本地存储一

    localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用.sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同 ...

  4. HTML5 本地存储 localStorage、sessionStorage 的遍历、存储大小限制处理

    HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localSt ...

  5. H5的本地存储

    localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用.sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同 ...

  6. web本地存储

    Web本地存储 通过本地存储(Local Storage),web 应用程序能够在用户浏览器中对数据进行本地的存储. 在 HTML5 之前,应用程序数据只能存储在 cookie 中,包括每个服务器请求 ...

  7. HTML5 本地存储的用法

    HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localSt ...

  8. 【html5】html5 本地存储

    最近一直在学习 html5,为了后期的移动项目进行知识储备.html5 相对于 html4 新增加了一些有趣的标签.属性和方法,今天主要介绍下 html5 的本地存储. 在客户端存储数据 html5 ...

  9. H5本地存储一

    localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用.sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同 ...

随机推荐

  1. 英语发音规则---ai字母组合发音

    英语发音规则---ai字母组合发音 一.总结 一句话总结:字母组合ai在音词中一般发字母a的音/eɪ/,通常出现在闭音节中.这里要注意的是单词中air字母组合与ai字母组合发音的区别,air发/eə/ ...

  2. stl_vector.h

    stl_vector.h // Filename: stl_vector.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: http ...

  3. Android中的优化技巧

    高效地利用线程 1.在后台取消一些线程中的动作 我们知道App运行过程中所有的操作都默认在主线程(UI线程)中进行的,这样App的响应速度就会受到影响.会导致程序陷入卡顿.死掉甚至会发生系统错误. 为 ...

  4. PS 滤镜——漩涡 vortex

    %%% Vortex %%% 漩涡效果 clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS A ...

  5. C++11 右值引用 与 转移语义

    新特性的目的 右值引用(R-value Reference)是C++新标准(C++11, 11代表2011年)中引入的新特性,它实现了转移语义(Move Semantics)和精确传递(Perfect ...

  6. bzoj 2342: 双倍回文 回文自动机

    题目大意: 定义双倍回文串的左一半和右一半均是回文串的长度为4的倍数的回文串 求一个给定字符串中最长的双倍回文串的长度 题解: 我们知道可以简单地判定以某一点结尾的最长回文串 我们知道可以简单地判定以 ...

  7. 删除文件时提示 你需要来自system的权限才能对此文件夹进行更改

    问题描述: 我的计算机是Win7 x64操作系统,在我的计算机的F盘中,不知道什么时候多了个“12e4k69m762nzcgt8zx”这样一个文件夹,应该是某个软件自己创建并留下的文件夹,想删除掉则提 ...

  8. for循环中的条件执行循序

    问题: public class Main { public static void main(String[] args) { int i,n,length = 0; for(i=1;length& ...

  9. System.getProperty()获取系统的相关属性

    我们在编程的过程中有时候需要获取系统的相关属性,今天就让我们一起来学习学习如何获取系统的相关属性 至于System.getProperty(param)中的各个参数的概念请看下表. java.vers ...

  10. 都是stm32的JTAG引脚惹的祸

    转载请注明出处:http://blog.csdn.net/qq_26093511/article/category/6094215 最近在调试08接口的LED显示屏,使用的是自己做的STM32板子. ...