Ceph作为Linux PB级分布式文件系统,因其灵活智能可配置, 在软件定义存储的大潮中,越来越受到iass方案提供商的注意。
我们知道OpenStack中围绕虚拟机主要的存储需求来自于nova中的disk,glance中的image,cinder中的虚拟硬盘,本文中,我们将全部采用ceph作为这些存储的后端,摆脱现有部署中各搞一套的现状。本文主要主要是对Ceph使用的总结,因个人环境不同,可能存在各种环境与包依赖等问题,本人就遇到了qemu的版本不够,iptables等问题,欢迎交流。先画个集成逻辑图
CEPH底层为RADOS存储,提供访问RADOS的是librados库,librbd的调用就是基于librados,Nova只要是通过libvirt->qemu来调用librbd,所以我们知道暂时只有libvirtDriver支持,Cinder与Glance直接调用librbd。
CEPH存储集群中的层次结构也可见上图,主要是先文件条带化为obj, obj通过hash函数映射到PG(上图中Pool就是PG的容器),PG通过CRUSH算法均匀映射到OSD,OSD基于文件系统,比如xfs,ext4等等。
本文中将只使用三个osd(官方推荐是至少两个, 一个无法应对故障), 三个监视器(主要负责接受数据上报, 提供cluster map, 至少要三个, 一个不好容灾,奇数个可确保PAXOS算法能确定一批监视器里哪个版本的集群运行图是最新的) , 只放了一个mds, 这样的搭配基本是测试环境下最小的配置了,ceph很强调它的扩展性, 所以越多越好, 越能体现其优势
本文使用的系统环境: redhat6.5 四台机器 规划如下:
mds 192.168.122.149 装一个mds 一个mon, 一个osd
osd 192.168.122.169 装一个mon, 一个osd
mon 192.168.122.41 装 一个mon, 一个osd
client 192.168.122.104 上安装openstack all-in-one,管理节点
三台机器组成ceph存储集群,hostname分别为mds,osd,mon,下文将都是使用这些短的hostname代表节点,其中在这三台机器上都部署monitor和对象存储osd,在mds上部署metadata服务器mds,另外一台机器作为openstack all-in-one环境节点 hostname:client
采用ceph-deploy来部署安装ceph, 这个类似与我们部署openstack用的chef。非常方便。
第一步: 在管理节点上修改/etc/hosts,ceph-deploy 后面的节点参数必须使用hostname,为了能够解析hostname,需要配置/etc/hosts,为下面粘贴部分的后四行。
[root@client ceph ]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.122.149 mds
192.168.122.169 osd
192.168.122.41 mon
192.168.122.104 client
第二步:配置管理节点无密码访问其他节点,这个是方便我们使用ceph-deploy部署安装ceph
[root@client install]# ssh-keygen
[root@client install]# ssh-copy-id mds
[root@client install]# ssh-copy-id ods
[root@clien