概念
cinder 为虚拟机提供管理块存储服务。支持的文件系统:lvm、iscsi、nfs、san、RBD
组件构成及功能介绍
cinder api:在控制节点运行,管理服务的接口,被命令行、其他组件调用;
cinder scheduler:类似nova-schedule( 默认用空闲内存计算权重 ),运行在控制节点,默认用空闲容量计算权重。如果对接的后端存储有调度功能,就不太需要;
cinder volume:类比 nova-compute,在存储节点运行,收到来自scheduler的调用后,在存储设备上进行卷的新建、删除、更改;
cinder backup:通过驱动在正确的位置存储备份数据;
关于volume的操作
powershell
# 创建空白卷
openstack volume create --size 2 卷名称
# 创建启动卷
openstack volume create --size 2 --image 镜像 卷名称
# 挂载卷,文件系统人工配置
openstack server add volume [instance1] 卷名称
# 卸载
openstack server remove volume [instance1] 卷名称
# 备份卷
openstack volume backup create --name 备份名称 卷名称
# 卷快照
openstack volume snapshot create --volume 卷名称 快照名称
# 由快照创建新卷
openstack volume create --snapshot 快照名称 --size 2 新卷名称
软件定义存储-ceph
cinder-provider:后端存储的抽象,比如nfs-provider、ceph-provider,在cinder.conf文件定义,通过相应发driver通信,同时,cinder-provider与cinder-volume一一对应。
crushmap
1、crush算法通过计算数据存储位置来确定如何存储和检索,授权客户端直接连接osd
2、对象通过算法被切分成数据片,分布在不同的osd上
3、提供很多种的bucket,最小的节点是osd
powershell
# 结构
osd (or device)
host #主机
chassis #机架
rack #机柜
row
pdu
pod
room #机房
datacenter #数据中心
zone #区域
region #地区
root #最高:根
# 查看crushmap
ceph osd crush tree
ceph osd tree
# 查看详细
ceph osd crush dump
# 查看规则
ceph osd crush rule ls
# 某个规则关联起来的pool
ceph osd pool get xxxxx crush_rule
举例
环境: 一个pool包含3个host,多个osd,通过不同crushmap rule分隔,数据按照不同pool rule落盘。
1、先做crushmap文件备份
2、修改引起大量pg变更,后期不要动
3、调整配置osd crush update on start = false,
powershell
#创建root类型bucket
ceph osd crush add-bucket ssd-bucket root
# 添加host类型bucket
ceph osd crush add-bucket node-1-ssd-bucket host
ceph osd crush add-bucket node-2-ssd-bucket host
# root类型bucket添加host类型bucket
ceph osd crush move node-1-ssd-bucket root=ssd-bucket
ceph osd crush move node-2-ssd-bucket root=ssd-bucket
# host类型bucket添加osd
ceph osd crush move osd.3 host=node-1-ssd-bucket root=ssd-bucket
ceph osd crush move osd.4 host=node-2-ssd-bucket root=ssd-bucket
#规则名称、rootbucket名称、容灾机制(默认default)、host类型、磁盘类型
ceph osd tree
#创建一条名为ssd-rule的规则,将基于ssd的OSD作为复制池的目标
ceph osd crush rule create-replicated ssd-rule ssd-bucket host ssd
#关联pool和rule
ceph osd pool set ceph-ssd crush_rule ssd-rule