Cinder是OpenStack中提供块存储服务的组件,主要功能是为虚拟机实例提供虚拟磁盘管理服务。Cinder的前身是Nova中的“nova-volume”组件,OpenStack F 版以后就将其从Nova中被剥离出来作为一个独立的OpenStack组件。
Cinder是一个可扩展、可靠和可用的块存储服务,它的主要功能包括:
总的来说,Cinder是OpenStack平台中一个重要的组件,为云计算环境中虚拟机提供持久化的块存储服务,支持多种存储后端和多租户,并具有高可用性和容错性。Cinder的主要优势在于其可扩展性和灵活性,可以根据需要选择不同的存储后端,并且可以通过API和命令行接口进行操作和管理。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
文件存储依靠文件系统来存储文件。文件直接存储在文件系统上,通过FTP、网络文件系统等服务进行访问。特点是使用简单、兼容性好,但响应速度和存储容量一般。
块存储中的“块”是指存储系统采用的一整块的存储设备,如同一块硬盘。块存储技术通常是指将裸磁盘空间整个映射给主机时使用的技术。因此,块存储可以虚拟出整块硬盘给云主机使用,对云主机的操作系统来说这就是挂载的物理硬盘。它的特点是响应速度极快,同时具有高稳定性和可靠性,但受硬件容量限制,其容量不大。
对象存储以对象(封装)的形式管理数据。对象和文件最大的不同就是对象在文件基础之上增加了元数据。对象数据可以分为两部分:
数据通常都是无结构的书,如图片、视频等。元数据值得是对数据的相关描述,例如图片的大小,数据存储的位置信息等。当需要访问某个对象时,先查询元数据服务器获得具体位置信息,再从对象存储服务器中获得具体数据。对象存储主要用于分布式存储,其存储容量巨大,但速度较慢。
在块存储中,裸硬盘通常被称为卷,Cinder的任务就是管理卷,包括卷的创建,删除等操作。
Cinder的主要模块和功能如下。
接收 API 请求, 调用 cinder-volume 。是整个 Cinder 组件的门户,所有 cinder 的请求都首先由 cinder-api 处理。cinder-api 向外界暴露若干 HTTP REST API 接口。在 keystone 中我们可以查询 cinder-api 的 endponits。
客户端可以将请求发送到 endponits 指定的地址,向 cinder-api 请求操作。 当然,作为最终用户的我们不会直接发送 Rest API 请求。OpenStack CLI,Dashboard 和其他需要跟 Cinder 交换的组件会使用这些 API。
cinder-api 对接收到的 HTTP API 请求会做如下处理:
cinder-api 接受哪些请求呢?简单的说,只要是 Volume 生命周期相关的操作,cinder-api 都可以响应。大部分操作都可以在 Dashboard 上看到。
管理 volume 的服务,与 volume provider 协调工作,管理 volume 的生命周期。运行 cinder-volume 服务的节点被称作为存储节点。
cinder-volume 在存储节点上运行,OpenStack 对 Volume 的操作,最后都是交给 cinder-volume 来完成的。cinder-volume 自身并不管理真正的存储设备,存储设备是由 volume provider 管理的。cinder-volume 与 volume provider 一起实现 volume 生命周期的管理。
接着的问题是:现在市面上有这么多块存储产品和方案(volume provider),cinder-volume 如何与它们配合呢?
通过的 Driver 架构。 cinder-volume 为这些 volume provider 定义了统一的接口,volume provider 只需要实现这些接口,就可以 Driver 的形式即插即用到 OpenStack 系统中。、
定期向 OpenStack报告计算节点的状态:cinder-volume 会定期向 Cinder 报告存储节点的空闲容量来做筛选启动volume
实现 volume 生命周期管理:Cinder 对 volume 的生命周期的管理最终都是通过 cinder-volume 完成的,包括 volume 的 create、extend、attach、snapshot、delete 等。
数据的存储设备,为 volume 提供物理存储空间。 cinder-volume 支持多种 volume provider,每种 volume provider 通过自己的 driver 与cinder-volume 协调工作。
更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
scheduler 通过调度算法选择最合适的存储节点创建 volume。 创建 Volume 时,cinder-scheduler 会基于容量、Volume Type 等条件选择出最合适的存储节点,然后让其创建 Volume。
Cinder 各个子服务通过消息队列实现进程间通信和相互协作。因为有了消息队列,子服务之间实现了解耦,这种松散的结构也是分布式系统的重要特征。
有一些数据需要存放到数据库中,一般使用 MySQL。数据库是安装在控制节点上的,比如在我们的实验环境中,可以访问名称为“cinder”的数据库。
cinder-backup用于将volume备份到其他存储系统上,目前支持的备份存储系统有swift、ceph、IBM Tivoli storage manager(TSM)、glusterFS等,默认是swift。
Cinder组件的主要功能就是对卷进行创建与管理。
流程如下:
以下操作均在controller节点上运行
yum -y install openstack-cinder
安装的“openstack-cinder”软件包中包括“cinder-api”和“cinder-scheduler”模块。查看用户信息:
cat /etc/passwd | grep cinder
查看用户组信息:
cat /etc/group | grep cinder
支持Cinder组件的数据库只有一个,一般将其命名为“cinder”。
#第一步,进入数据库
mysql -u root -p 000000
#第二步,新建“cinder”数据库
create database cinder;
#第三步,为数据库授权
grant all pribileges on cinder.* to 'cinder'@'localhost' identified by '000000';
grant all pribileges on cinder.* to 'cinder'@'%' identified by '000000';
其中,@代表着任意远程主机,localhost代表着本地主机。
第四步,退出数据库。
quit#记得按回车
Cinder的配置文件是”/etc/cinder/cinder.conf"。通过修改它便可以实现Cinder与数据库及Keystone的连接。由于配置文件有着太多注释,所以为了方便起见,我们可以先将其注释与空行去掉。
(1)将配置文件中的注释和空行去掉
cp /etc/cinder/cinder.conf /etc/cinder/cinder.bak #备份配置文件
grep -Ev '^$|#' /etc/cinder/cinder.bak > /etc/cinder/cinder.conf #去掉配置文件中的注释和空行,生成新的配置文件
(2)编辑新的配置文件
#打开配置文件
vi /etc/cinder/cinder.conf
#修改[database]部分,实现与数据库“cinder”的连接
[database]
connection = mysql+pymysql://cinder:airen070321@controller/cinder
#修改[DEFAULT][keystone_authtoken]部分,实现与Keystone的交互
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = project
username = cinder
password = 000000
#修改[oslo_concurrency]部分,配置锁路径
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp#这里的路径是在安装软件时“cinder”用户创建的,不要随意更改该路径
#修改[DEFAULT]部分,实现与消息队列的连接
[DEFAULT]
transport_url=rabbit://rabbitmq:airen070321@controller:5672
#打开配置文件
vi /etc/nova/nova.conf
#修改[cinder]部分,增加以下内容
[cinder]
os_region_name=RegionOne
su cinder -s /bin/bash -c "cinder-manage db sync"
同步结束后,我们可以进入数据库中查看数据库中表的信息,若有以下的信息,则数据库同步成功。
以下操作均在controller节点上
(1)为Openstack云计算平台创建“cinder”用户
#导入环境变量模拟登录
source admin-login
#在Openstack云计算平台中创建用户“cinder”
openstack user create --domain default --password 000000 cinder
#这里的用户名与密码一定要与cinder.conf中的[keystone_authtoken]中的用户名和密码一致
(2)为用户“cinder“分配admin角色
openstack role add --project project --user cinder admin
(1)创建服务
#OpenStack(Train版本) Cinder支持的卷是第三个版本
openstack service create --name cinder3 volume3
(2)创建服务端点
openstack 组件的服务端点有三个,分别对应公众用户,内部组件,admin用户服务的地址。
#创建公共用户访问的端点
openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s
#创建内部组件访问的端点
openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s
#创建Admin用户访问的端点
openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s
#重启Nova服务
systemctl restart openstack-nova-api
#设置“cinder-api”和“cinder-scheduler”模块开机启动
systemctl enable openstack-cinder-api openstack-cinder-scheduler
#立即启动Cinder服务
systemctl start openstack-cinder-api openstack-cinder-scheduler
这里介绍两种方式
netstat -nutpl|grep 8776
openstack volume service list
"cinder-scheduler"在控制节点上的模块显示在UP也就是开启状态就表示服务正常。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
在计算节点上新增一块硬盘为存储节点服务。
第一步,进入计算节点的虚拟机设置对话框,然后选择计算节点的设置。
第二步,为其增加相应的存储硬盘,如下。
设置完成后重启计算节点就可 。
逻辑卷管理是Linux环境下对磁盘分区进行管理的一种机制,它可以将几块磁盘组合起来形成一个存储池或者卷组。LVM可以每次从卷组中划分出不同大小的逻辑卷创建新的逻辑设备。Cinder可以使用Lvm来实现块设备的管理。
lsblk #查看挂载信息
我们可以在/dev/里查看到具体。
卷组是若干个物理卷组成的一个整体,对于用户来说,卷组就是一个大的磁盘,便于重新划分和使用。
#第一步,将硬盘初始化为物理卷
pvcreate /dev/sdb
#第二步,将物理卷归并为卷组,LVM卷组的创建命令为“vgcreate",如下
vgcreate <卷组名><物理卷1><物理卷1>
#我们将卷组命取为”“cinder-volumes”
vgcreate cinder-volumes /dev/sdb
#第三步,配置LVM卷组扫描的设备
#打开LVM的配置文件
vi /etc/lvm/lvm.conf
#修改配置文件的“devices”部分,添加一个接受“/dev/sdb”磁盘并拒绝其他设备的过滤器
devices {
filter = ["a/sdb/","r/.*/"]
.......
}
#以上代码中a表示接受,r表示拒绝
LVM在做磁盘扫描时将查找所有相关物理卷,并读取卷组元数据,这个过程非常耗时,如果将卷组元数据一次性读入缓存,则不用每次都做这个耗时的扫描。lvmetad就是LVM中用于处理元数据缓存的服务。
#设置开机启动该服务
systemctl enable lvm2-lvmetad
#立即启动服务
systemctl start lvm2-lvmetad
更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
yum -y install openstack-cinder targetcli python-keystone
Cinder的配置文件是“/etc/cinder/cinder.conf”
#将配置文件中的注释和空行去掉
cp /etc/cinder/cinder.conf /etc/cinder/cinder.bak
#去掉配置文件中的所有注释和空行,生成新的配置文件
grep -Ev '^$|#' /etc/cinder/cinder.bak > /etc/cinder/cinder.conf
#打开配置文件
vi /etc/cinder/cinder.conf
#修改[database]部分,实现与数据库“cinder”的连接
[database]
connection = mysql+pymysql://cinder:airen070321@controller/cinder
#修改[DEFAULT][keystone_authtoken]部分,实现与keystone的交互
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = project
username = cinder
password = 000000
#修改[oslo——concurrency]部分,配置锁路径
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
#这里的路径不可随意修改
#修改[DEFAULT],实现与消息队列和Glance的连接
[DEFAULT]
transport_url = rabbit://rabbitmq:000000@controller:5672
glance_api_servers = http://controller:9292
#修改[DEFALUT],并增加[lvm]部分以设置LVM
[DEFAULT]
enabled_backends = lvm
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = lioadm
#设置开机启动服务
systemctl enable openstack-cinder-volume target
#立即启动服务
systemctl start openstack-cinder-volume target
这里介绍两种检测方法
openstack volume service list
可以看见 cinder-scheduler,cinder-volume 两个模块是up(启动)状态就好。
使用Dashboard登录OpenStack后,如果Cinder服务正常,则在左侧导航栏上会出现【卷】选项,且在【概况】界面中可以看到“卷”“卷快照”“卷存储”这三个饼图,如下。
这里介绍两种方式来创建卷
#第一步,在控制节点发起命令,创建一个8GB的卷,将其命名为”volume1“
openstack volume create --size 8 volume1
#第二步,查看卷列表
openstack volume list
第一步,进入卷列表,登录Dashboard以后,在菜单栏【卷】——>【卷】选项,进入以下界面。
我们可以看见volume1,也就是我们命令创建的卷。
第二步,创建卷,我们可以点击【创建卷】按钮,如下。
注意,所有卷的容量总和不要超过卷组的容量。
在完成创建后,我们就可以在【卷】界面中看到刚创建的卷的信息。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
参考来源:https://blog.csdn.net/xiaoyu070321/ article/details/131538888
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有