Ceph是一个可靠的、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘,我们这篇文章就是通过纯ssd盘创建存储池给Openstack中的虚拟机做云硬盘来使用。
一. Ceph集群操作
$ ceph osd set norecover
$ ceph osd set nobackfill
$ ceph osd getcrushmap -o oldmap
$ crushtool -d oldmap -o map.txt
$ vim map.txt
#在replicated_rule下step take default⾏,改成step take default class hdd
rule replicated_rule {
id 0
type replicated
min_size 1
max_size 10
# step take default
step take default class hdd
step chooseleaf firstn 0 type host
step emit
}
$ crushtool -c map.txt -o newmap
$ ceph osd setcrushmap -i newmap
# 按照约500GB⼀个分区将SSD进⾏分区
# 基于分区创建osd
# 检查新创建出来的OSD class为ssd
$ ceph osd tree 就可以看到
12 hdd 3.63820 osd.12 up 1.00000 1.00000
15 ssd 3.63820 osd.15 up 1.00000 1.00000
# 使用ssd盘新加的osd不识别为ssd类型的情况
# 32,33为新加osd的id
$ for i in 32 33;do ceph osd crush rm-device-class osd.$i;done
$ for i in 32 33;do ceph osd crush set-device-class ssd osd.$i;done
$ ceph osd crush rule create-replicated replicated-ssd default host ssd
# 创建名为ssdpool的pool
$ ceph osd pool create ssdpool 128 128 replicated-ssd
$ ceph osd unset norecover
$ ceph osd unset nobackfill
$ ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images,profile rbd pool=ssdpool'
二. Openstack侧操作
$ vim /etc/kolla/cinder-volume/cinder.conf
[DEFAULT]
glance_api_version = 2
# rbd-2 为准备新加的backends
enabled_backends = rbd-1, rbd-2
[rbd-1]
rbd_ceph_conf = /etc/ceph/ceph.conf
backend_host = rbd:volumes
rbd_pool = volumes
volume_backend_name = rbd-1
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_user = cinder
rbd_secret_uuid = 27a2e46a-c070-4f18-acd8-47d9bbd42407
[rbd-2]
rbd_ceph_conf = /etc/ceph/ceph.conf # ceph存储服务的配置文件
backend_host = rbd:volumes # ceph存储服务所在的主机名
rbd_pool = ssdpool # ceph创建存储池的名称,这里为ssdpool
volume_backend_name = ssd # 存储后端的名字,与存储后端配置组的名称无关,可以自定义
volume_driver = cinder.volume.drivers.rbd.RBDDriver # 配置Ceph存储驱动
# 因为Ceph启用了cephx 认证,还需要配置Ceph用户及其密钥,这两个值由Ceph服务创建提供
rbd_user = cinder
rbd_secret_uuid = 27a2e46a-c070-4f18-acd8-47d9bbd42407
# kolla_ansbile部署都是使用容器部署的集群
$ docker restart cinder_volume
$ source /etc/kolla/admin-openrc.sh
$ openstack volume type create --property volume_backend_name=ssd ssd
如果觉得文章对大家有帮助,欢迎关注、点赞、评论、收藏和分享,后续将为大家分享更多的文章。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved