【openstack N版】——块存储服务cinder
一.块存储服务介绍
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的更多相关文章
- 探索 OpenStack 之(9):深入块存储服务Cinder (功能篇)
继研究了Neutron之后,继续Nova的外围研究之旅.本站是研究块存储服务Cinder. 0.验证环境 环境包括: 1.一个controller节点,运行nova-api, nova-schedul ...
- OpenStack Train版-14.安装块存储服务cinder(存储节点)
安装cindoer块存储服务节点(存储节点192.168.0.40)使用默认的LVM卷方法,之后改为ceph存储 安装LVM软件包 [root@cinder01 ~]# yum install lvm ...
- OpenStack Train版-13.安装块存储服务cinder(控制节点)
Cinder的核心功能是对卷的管理,允许对卷.卷的类型.卷的快照.卷备份进行处理.它为后端不同的存储设备提供给了统一的接口,不同的块设备服务厂商在Cinder中实现其驱动,可以被Openstack整合 ...
- 云计算管理平台之OpenStack块存储服务cinder
一.cinder简介 cinder是openstack环境中的块存储服务,主要为运行在openstack之上的虚拟机提供块存储服务的:所谓块存储就是我们经常用的硬盘呀,U盘啊,SD卡等等这些块设备的, ...
- OpenStack-Ocata版+CentOS7.6 云平台环境搭建 —9.块存储服务(cinder)部署配置
块存储服务部署相关块存储服务(cinder)为实例提供块存储.存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的.还有很多驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等.典型 ...
- OpenStack 存储服务 Cinder介绍和控制节点部署(十五)
Cinder介绍 OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷.此服务也会激活管理卷的快照和 ...
- OpenStack 存储服务 Cinder介绍和控制节点部署 (十三)
Cinder介绍 OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷.此服务也会激活管理卷的快照和 ...
- 10.OpenStack块存储服务
添加块存储服务 安装和配置控制器节点 创建数据库 mysql -uroot -ptoyo123 CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cind ...
- OpenStack实践系列⑨云硬盘服务Cinder
OpenStack实践系列⑨云硬盘服务Cinder八.cinder8.1存储的三大分类 块存储:硬盘,磁盘阵列DAS,SAN存储 文件存储:nfs,GluserFS,Ceph(PB级分布式文件系统), ...
随机推荐
- PHP header( ) 禁止页面后退
header("Cache-control:no-cache,no-store,must-revalidate"); header("Pragma:no-cache&qu ...
- centos5.5 Apache2 Web 服务器的安装
# vi /etc/httpd/conf/httpd.conf 把以下虚拟机的配置加在 httpd.conf 文件末尾即可 NameVirtualHost *:80 // ...
- Spring框架中整合JUnit单元测试的方法
一. 步骤: 1. 拷贝jar包: 1. JUnit-4.9.jar和spring-test-4.2.4.RELEASE.jar ; 2. 替换原来的main函数: 1. 在测试类上使用注解方式替换: ...
- iconfont.cn阿里巴巴矢量图下载字体图标实战
1.阿里巴巴矢量图网址:www.iconfont.cn 2.然后用新浪微博账号登录 3.输入要查找的图标相应的关键字,回车 4.滑过要找的图标,点击购物车,让图标存储到暂存架中 5.点击暂存架,存储为 ...
- iOS 之 ARC 的内存泄露
循环引用导致内存泄露,如block容易内存泄露
- MVC使用HandleErrorAttribute自定义异常
MVC中,有一个Filter可以捕捉错误,但是它的用法是利用Attribute来实现的,而且只能加在Controller和Action上,所以不能捕捉别出的错误 其实理论上所有的错误肯定产生于Cont ...
- ASP.NET 页面之间传值的几种方式
开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...
- 本地ssh连接到vbox中的linux
本机是window xp系统, 安装vbox,在vbox下安装linux,想在xp中用ssh连接linux,此时需要配置网络. 1.设置vbox的网络,选择host-only 2.设置window虚拟 ...
- 深圳尚学堂:Web程序员应该会的知识
互联网的行业里涌入了很多的程序员, 都在为互联网的发展添砖加瓦.程序员可以分为很多种,像Unix程序员.Windows程序员,或是C++程序员.Delphi程序员,等等.今天我们谈谈Web程序员,一名 ...
- iOS 获取公历、农历日期的年月日
iOS 获取公历.农历日期的年月日 介绍三种方法获取 Date (NSDate) 的年月日. 用 date 表示当前日期.测试日期为公历 2017 年 2 月 5 日,农历丁酉年,鸡年,正月初九. l ...