一.块存储服务介绍

1.1块存储服务通常包含以下组件

  • cinder-api:

    接受API请求,并将其路由到"cinder-volume"执行。

  • cinder-volume:

    与块存储服务和例如"cinder-scheduler"的进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。"cinder-volume"服务响应送到块存储服务的读写请求来维持状态,它也可以和多种存  储提供者在驱动架构下进行交互。

  • cinder-scheduler守护进程:

    选择最优存储提供节点来创建卷。其与"nova-scheduler"组件类似。

  • cinder-backup-daemon:

    "cinder-backup"服务提供任何种类备份卷到一个备份存储提供者,就像"cinder-volume"服务它与种存储提供者在驱动架构下进行交互。

注:cinder不是必须需要的服务,看公司需求,因为是通过挂载NFS等一系列文件服务器来做存储,网络是一个很大的瓶颈,但是做了cinder可以扩容磁盘大小,以及云主机的热迁移

二.块存储服务安装(控制节点)

2.1环境准备

 #安装cinder
[root@linux-node1 ~]# yum install openstack-cinder -y

2.2创建库及用户

 #登录数据库
[root@linux-node1 ~]# mysql -uroot -p
#创建cinder库
MariaDB [(none)]> create database cinder;
#给cinder用户授权
MariaDB [(none)]> grant all privileges on cinder.* to 'cinder'@'localhost' identified by 'cinder';
Query OK, rows affected (0.05 sec)
MariaDB [(none)]> grant all privileges on cinder.* to 'cinder'@'%' identified by 'cinder';
Query OK, rows affected (0.00 sec)

2.3创建openstack的cinder用户

 #创建cinder用户,密码cinder
[root@linux-node1 ~]# openstack user create --domain default --password-prompt cinder
#将cinder用户加入到service项目并且赋予admin角色
[root@linux-node1 ~]# openstack role add --project service --user cinder admin

2.4创建cinder和cinderv2实体服务及端点服务

 #创建cinder实体服务
[root@linux-node1 ~]# openstack service create --name cinder \
--description "OpenStack Block Storage" volume
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | 0dae8b9c2a434c7a82ad1ad56b53d8d0 |
| name        | cinder                           |
| type        | volume                           |
+-------------+----------------------------------+
#创建cinderv2实体服务
[root@linux-node1 ~]# openstack service create --name cinderv2 \
--description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | 30998a4da9c04e2a9e3a3e247311f09b |
| name        | cinderv2                         |
| type        | volumev2                         |
+-------------+----------------------------------+
#创建API端点(cinder)
[root@linux-node1 ~]# openstack endpoint create --region RegionOne \
volume public http://192.168.56.11:8776/v1/%\(tenant_id\)s
+--------------+--------------------------------------------+
| Field        | Value                                      |
+--------------+--------------------------------------------+
| enabled      | True                                       |
| id           | 67a154e432de4efaa568f1e8c7a0050e           |
| interface    | public                                     |
| region       | RegionOne                                  |
| region_id    | RegionOne                                  |
| service_id   | 0dae8b9c2a434c7a82ad1ad56b53d8d0           |
| service_name | cinder                                     |
| service_type | volume                                     |
| url          | http://192.168.56.11:8776/v1/%(tenant_id)s |
+--------------+--------------------------------------------+
[root@linux-node1 ~]# openstack endpoint create --region RegionOne \
volume internal http://192.168.56.11:8776/v1/%\(tenant_id\)s
+--------------+--------------------------------------------+
| Field        | Value                                      |
+--------------+--------------------------------------------+
| enabled      | True                                       |
| id           | 0052499eb61e454ab280d9ac689c463e           |
| interface    | internal                                   |
| region       | RegionOne                                  |
| region_id    | RegionOne                                  |
| service_id   | 0dae8b9c2a434c7a82ad1ad56b53d8d0           |
| service_name | cinder                                     |
| service_type | volume                                     |
| url          | http://192.168.56.11:8776/v1/%(tenant_id)s |
+--------------+--------------------------------------------+
[root@linux-node1 ~]# openstack endpoint create --region RegionOne \
volume admin http://192.168.56.11:8776/v1/%\(tenant_id\)s
+--------------+--------------------------------------------+
| Field        | Value                                      |
+--------------+--------------------------------------------+
| enabled      | True                                       |
| id           | 5765c91142874d2584d6ea7464900732           |
| interface    | admin                                      |
| region       | RegionOne                                  |
| region_id    | RegionOne                                  |
| service_id   | 0dae8b9c2a434c7a82ad1ad56b53d8d0           |
| service_name | cinder                                     |
| service_type | volume                                     |
| url          | http://192.168.56.11:8776/v1/%(tenant_id)s |
+--------------+--------------------------------------------+
#创建API端点(cinderv2)
[root@linux-node1 ~]# openstack endpoint create --region RegionOne \
volumev2 public http://192.168.56.11:8776/v2/%\(tenant_id\)s
+--------------+--------------------------------------------+
| Field        | Value                                      |
+--------------+--------------------------------------------+
| enabled      | True                                       |
| id           | 35da6dd734e44bee817fd3712f01b126           |
| interface    | public                                     |
| region       | RegionOne                                  |
| region_id    | RegionOne                                  |
| service_id   | 30998a4da9c04e2a9e3a3e247311f09b           |
| service_name | cinderv2                                   |
| service_type | volumev2                                   |
| url          | http://192.168.56.11:8776/v2/%(tenant_id)s |
+--------------+--------------------------------------------+
[root@linux-node1 ~]# openstack endpoint create --region RegionOne \
volumev2 internal http://192.168.56.11:8776/v2/%\(tenant_id\)s
+--------------+--------------------------------------------+
| Field        | Value                                      |
+--------------+--------------------------------------------+
| enabled      | True                                       |
| id           | 5c046a3dc07c4c26b642e01f2f5b1be0           |
| interface    | internal                                   |
| region       | RegionOne                                  |
| region_id    | RegionOne                                  |
| service_id   | 30998a4da9c04e2a9e3a3e247311f09b           |
| service_name | cinderv2                                   |
| service_type | volumev2                                   |
| url          | http://192.168.56.11:8776/v2/%(tenant_id)s |
+--------------+--------------------------------------------+
[root@linux-node1 ~]# openstack endpoint create --region RegionOne \
volumev2 admin http://192.168.56.11:8776/v2/%\(tenant_id\)s
+--------------+--------------------------------------------+
| Field        | Value                                      |
+--------------+--------------------------------------------+
| enabled      | True                                       |
| id           | 5d86cf81628c42e8847a7bb8373df0a6           |
| interface    | admin                                      |
| region       | RegionOne                                  |
| region_id    | RegionOne                                  |
| service_id   | 30998a4da9c04e2a9e3a3e247311f09b           |
| service_name | cinderv2                                   |
| service_type | volumev2                                   |
| url          | http://192.168.56.11:8776/v2/%(tenant_id)s |
+--------------+--------------------------------------------+

2.5编辑cinder配置文件

 #编辑配置文件
[root@linux-node1 ~]# vim /etc/cinder/cinder.conf
#配置数据库连接
connection = mysql+pymysql://cinder:cinder@192.168.56.11/cinder
#配置连接消息队列
transport_url = rabbit://openstack:openstack@192.168.56.11
#开启keystone认证,打开注释
auth_strategy = keystone
#在keystone_authtoken标签下添加内容
[keystone_authtoken]
auth_uri = http://192.168.56.11:5000
auth_url = http://192.168.56.11:35357
memcached_servers = 192.168.56.11:
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = cinder
password = cinder
#配置锁路径
lock_path = /var/lib/cinder/tmp

2.6将数据导入数据库

 [root@linux-node1 ~]# su -s /bin/sh -c "cinder-manage db sync" cinder

2.7检查数据库

 [root@linux-node1 ~]# mysql -ucinder -pcinder -h192.168.56. -e "use cinder;show tables;"
+----------------------------+
| Tables_in_cinder           |
+----------------------------+
| backups                    |
| cgsnapshots                |
| clusters                   |
| consistencygroups          |
| driver_initiator_data      |
| encryption                 |
| group_snapshots            |
| group_type_projects        |
| group_type_specs           |
| group_types                |
| group_volume_type_mapping  |
| groups                     |
| image_volume_cache_entries |
| messages                   |
| migrate_version            |
| quality_of_service_specs   |
| quota_classes              |
| quota_usages               |
| quotas                     |
| reservations               |
| services                   |
| snapshot_metadata          |
| snapshots                  |
| transfers                  |
| volume_admin_metadata      |
| volume_attachment          |
| volume_glance_metadata     |
| volume_metadata            |
| volume_type_extra_specs    |
| volume_type_projects       |
| volume_types               |
| volumes                    |
| workers                    |
+----------------------------+

2.8编辑nova配置文件

 #编辑nova配置文件
[root@linux-node1 ~]# vim /etc/nova/nova.conf
#在cinder标签下添加内容
[cinder]
os_region_name=RegionOne

2.9启动服务

 #重启nova-api服务
[root@linux-node1 ~]# systemctl restart openstack-nova-api.service
#允许开机自启动
[root@linux-node1 ~]# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
#启动cinder服务及其组件
[root@linux-node1 ~]# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
#允许lvm2服务开机自启
[root@linux-node1 ~]# systemctl enable lvm2-lvmetad.service
#启动lvm2服务
[root@linux-node1 ~]# systemctl start lvm2-lvmetad.service

三.块存储服务安装(存储节点)

因为环境只有两台服务器,所以将存储节点也装在控制节点上

3.1准备环境

 #安装lvm2
[root@linux-node1 ~]# yum install lvm2 -y
#安装cinder及其组件
[root@linux-node1 ~]# yum install openstack-cinder targetcli python-keystone

3.2启动服务

 #允许lvm2开机自启
[root@linux-node1 ~]# systemctl enable lvm2-lvmetad.service
#启动lvm2
[root@linux-node1 ~]# systemctl start lvm2-lvmetad.service

3.3创建LVM物理卷

 [root@linux-node1 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.

3.4创建LVM卷组"cinder-volume"

 [root@linux-node1 ~]# vgcreate cinder-volumes /dev/sdb
Volume group "cinder-volumes" successfully created

3.5修改LVM配置文件

  只有实例可以访问块存储卷组。但是,底层的操作系统管理着与这些卷相关联的设备。默认情况下,LVM卷扫描工具会扫描``/dev`` 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用了LVM,扫描工具便会在检测到这些卷时尝试缓存它们,这可能会在底层操作系统和项目卷上产生各种问题。所以您必须重新配置LVM,让它扫描仅包含``cinder-volume``卷组的设备。编辑``/etc/lvm/lvm.conf``文件并完成下面的操作:

在 devices 部分,添加一个过滤器,只接受 /dev/sdb 设备,拒绝其他所有设备:

 [root@linux-node1 ~]# vim /etc/lvm/lvm.conf
filter = [ "a/sda/", "a/sdb/", "r/.*/"]

3.6修改cinder配置文件

 [root@linux-node1 ~]# vim /etc/cinder/cinder.conf
#在default标签下添加内容
[default]
#启动LVM后端
enabled_backends = lvm
#在lvm标签下添加内容
[lvm]
#配置LVM后端,包括LVM驱动,cinder-volumes卷组 ,iSCSI 协议和适当的 iSCSI服务
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
glance_api_servers = http://192.168.56.11:9292
iscsi_ip_address = 192.168.56.11

3.7启动服务

 #允许开机自启
[root@linux-node1 ~]# systemctl enable openstack-cinder-volume.service target.service
#启动服务
[root@linux-node1 ~]# systemctl start openstack-cinder-volume.service target.service

四.格式化分区、挂载

4.1在web页面添加磁盘

#新创建一个云主机,然后连接卷

4.2磁盘格式化

 #磁盘格式化
[root@web-node1 ~]# mkfs.xfs /dev/vdc
#创建data目录
[root@web-node1 ~]# mkdir /data
#挂载磁盘
[root@web-node1 ~]# mount /dev/vdc /data

注:后端存储,不仅可以用ISCSI,还可以用NFS、GFS等等,后期会更新如何用NFS做后端存储,敬请期待。

【开源是一种精神,分享是一种美德】

— By GoodCook

— 笔者QQ:253097001

— 欢迎大家随时来交流

—原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。

【openstack N版】——块存储服务cinder的更多相关文章

  1. 探索 OpenStack 之(9):深入块存储服务Cinder (功能篇)

    继研究了Neutron之后,继续Nova的外围研究之旅.本站是研究块存储服务Cinder. 0.验证环境 环境包括: 1.一个controller节点,运行nova-api, nova-schedul ...

  2. OpenStack Train版-14.安装块存储服务cinder(存储节点)

    安装cindoer块存储服务节点(存储节点192.168.0.40)使用默认的LVM卷方法,之后改为ceph存储 安装LVM软件包 [root@cinder01 ~]# yum install lvm ...

  3. OpenStack Train版-13.安装块存储服务cinder(控制节点)

    Cinder的核心功能是对卷的管理,允许对卷.卷的类型.卷的快照.卷备份进行处理.它为后端不同的存储设备提供给了统一的接口,不同的块设备服务厂商在Cinder中实现其驱动,可以被Openstack整合 ...

  4. 云计算管理平台之OpenStack块存储服务cinder

    一.cinder简介 cinder是openstack环境中的块存储服务,主要为运行在openstack之上的虚拟机提供块存储服务的:所谓块存储就是我们经常用的硬盘呀,U盘啊,SD卡等等这些块设备的, ...

  5. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 —9.块存储服务(cinder)部署配置

    块存储服务部署相关块存储服务(cinder)为实例提供块存储.存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的.还有很多驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等.典型 ...

  6. OpenStack 存储服务 Cinder介绍和控制节点部署(十五)

    Cinder介绍 OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷.此服务也会激活管理卷的快照和 ...

  7. OpenStack 存储服务 Cinder介绍和控制节点部署 (十三)

    Cinder介绍 OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷.此服务也会激活管理卷的快照和 ...

  8. 10.OpenStack块存储服务

    添加块存储服务 安装和配置控制器节点 创建数据库 mysql -uroot -ptoyo123 CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cind ...

  9. OpenStack实践系列⑨云硬盘服务Cinder

    OpenStack实践系列⑨云硬盘服务Cinder八.cinder8.1存储的三大分类 块存储:硬盘,磁盘阵列DAS,SAN存储 文件存储:nfs,GluserFS,Ceph(PB级分布式文件系统), ...

随机推荐

  1. PHP mysqli连接MySQL数据库

    1. 开启PHP的API支持 (1)首先修改您的php.ini的配置文件.查找下面的语句:;extension=php_mysqli.dll将其修改为:extension=php_mysqli.dll ...

  2. 【翻译】使用Visual Studio创建Asp.Net Core MVC (一)

    This tutorial will teach you the basics of building an ASP.NET Core MVC web app using Visual Studio ...

  3. Delphi操作XML

    Delphi操作XML Delphi操作XMl,只要使用 NativeXml.我是用的版本是4..NativeXML的使用方法比较简单,但是功能很强大. XE2的话,要在simdesign.inc后面 ...

  4. tomcat 错误查看

    路径 : \tomcat\logs 清除日志,重新启动生成 从上到下,依次查看错误,可以看到,上面的两个是系统的启动模块.然后第三行错误提示,明显指出了错误原因 “NoClassDefFoundErr ...

  5. android的引用库类

    在eclipse中的项目里,有时需要外来的jar文件.添加后就可以消去程序中的红条条啦~~~~~~~~~可以照下面的说明添加. 方法/步骤   打开eclipse,导入项目   右击 项目 , “Bu ...

  6. NodeJS Stream 四:Writable

    什么是可写流 可写流是对数据流向设备的抽象,用来消费上游流过来的数据,通过可写流程序可以把数据写入设备,常见的是本地磁盘文件或者 TCP.HTTP 等网络响应. 看一个之前用过的例子 process. ...

  7. MVC 怎么把string字符串转译成html格式

    Views层下:

  8. Microsoft Office 2016 简体中文 Vol 版镜像下载(Pro Plus、Visio、Project 下载)

    在使用上,零售版和批量授权版并没有区别,只是授权方式方面的区别,相对而言,VOL 版的更容易激活一些,其他并没有什么区别了. 有需要的可以在下面下载:(以下均是 VL 版) 版本:Office 201 ...

  9. css 绝对居中

    我是一个前端的菜鸟,对于绝对居中前几天也困惑了我不少时间,今天我就把我知道的两个方法写出来,希望能记住也希望帮助到和我一样刚接触前端不久的同学. 第一种是 你需要居中的元素有固定的宽高: 首先给他的父 ...

  10. Spark:控制日志输出级别

    Spark:控制日志输出级别 终端修改 在pySpark终端可使用下面命令来改变日志级别 sc.setLogLevel("WARN") # 或者INFO等 修改日志设置文件 ** ...