openstack部署ceph集群(基于centos7.4) 1.安装ceph的yum源 echo "[ceph] name=Ceph packages for $basearch baseurl=https://download.ceph.com/rpm-luminous/el7/$basearch enabled=1 priority=2 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-luminous/el7/noarch enabled=1 priority=2 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=https://download.ceph.com/rpm-luminous/el7/SRPMS enabled=0 priority=2 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc" > \ /etc/yum.repos.d/ceph.repo midr ceph_12.2.12; cd ceph_12.2.12 yum -y install ceph ceph-deploy --downloadonly --downloaddir=./ 2.创建ceph集群 yum -y install ceph-deploy mkdir ceph_cluster cd ceph_cluster ceph-deploy new vs-compute1 vs-compute2 vs-compute3 \ --public-network 10.209.4.0/24 --cluster-network 10.209.5.0/24 sed -i 's/cephx/none/g' ceph.conf # 对接openstack更方便 # 复制mon的key到/var/lib/ceph/mon/ceph-$(hostname)/下 cp /root/ceph_cluster/ceph.mon.keyring \ /var/lib/ceph/mon/ceph-vs-controller/keyring ceph-deploy admin vs-compute1 vs-compute2 vs-compute3 ceph-deploy mon create-initial # 复制osd的key到/var/lib/ceph/bootstrap-osd/下 cp /root/ceph_cluster/ceph.bootstrap-osd.keyring \ /var/lib/ceph/bootstrap-osd/ceph.keyring ceph-deploy mgr create vs-compute1 vs-compute2 vs-compute3 3.创建osd for host in vs-compute{1..13} do echo init $host ssh $host "for i in /dev/sd{b..g}; do ceph-volume lvm prepare --data \$i ; done " ssh $host " ceph-volume lvm activate --all "; done 详细解析: BLUESTORE: 创建OSD【创建过程可以分为两个阶段(准备和激活)】: ①准备OSD ceph-volume lvm prepare --data {data-path} {data-path} 例如:ceph-volume lvm prepare --data /dev/hdd1 ②激活OSD # 查看创建好的lvm,获取OSD的ID和FSID ceph-volume lvm list # 激活OSD ceph-volume lvm activate {ID} {FSID} 例如:ceph-volume lvm activate 0 a7f64266-0894-4f1e-a635-d0aeaca0e993 或者:ceph-volume lvm activate --all 4.创建存储池: Ceph集群中的PG总数: PG总数 = (OSD总数 * 100) / 最大副本数 ** 结果必须舍入到最接近的2的N次方幂的值。 Ceph集群中每个pool中的PG总数: 存储池PG总数 = (OSD总数 * 100 / 最大副本数) / 池数 ceph osd pool create pool-hdd 4096 4096 5.容量均衡 ceph balancer mode upmap ceph balancer on ceph balancer optimize upmap pool-hdd ceph balancer eval pool-hdd 6.开启dashboard ceph mgr module enable dashboard http://10.209.2.13:7000/ 查询命令 # 查询存储池副本数 ceph osd pool get data size # 设置存储池副本数 ceph osd pool set data size 3 # 打印存储池列表 ceph osd lspools # 获取pool pg_num/pgp_num ceph osd pool get amizPool pg_num ceph osd pool get amizPool pgp_num # 设置pool pg_num/pgp_num ceph osd pool set amizPool pg_num 128 ceph osd pool set amizPool pgp_num 128 # 等同于首次创建 ceph osd pool create {pool-name} {pg_num} {pgp_num} PS:如果是单台机器做ceph分布式存储,需要注意以下操作 ceph osd pool ls detail ceph osd pool get pool-hdd size ceph osd pool set {pool-name} min_size 1 在ceph中,它的全名叫做osd_pool_default_min_size,这里大家就会问了,不是还活着一个呢吗,为什么就不能读取内容了,因为我们设置的min_size=2,在ceph中的意义就是,如果存活数少于2了,比如这里的1 ,那么ceph就不会响应外部的IO请求。因为min_size=1时,只要集群里面有一份副本活着,那就可以响应外部的IO请求。 # 查看osd状态树 ceph osd tree # 如果分布式ceph存储集群只有一个节点(不推荐,默认为三节点),需要执行以下操作 ceph osd pool set {pool-name} size 1 ceph osd pool application enable {pool-name} rbd --yes-i-really-mean-it 通常在创建pool之前,需要覆盖默认的pg_num,官方推荐: 若少于5个OSD, 设置pg_num为128。 5~10个OSD,设置pg_num为512。 10~50个OSD,设置pg_num为4096。 超过50个OSD,可以参考pgcalc计算