随着OpenStack日渐成为开源云计算的标准软件栈,Ceph也已经成为OpenStack的首选后端存储。Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。
ceph官方文档:http://docs.ceph.org.cn/
ceph中文开源社区:http://ceph.org.cn/
Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN存储、NAS存储等。
对象存储:即radosgw,兼容S3接口。通过rest api上传、下载文件。
文件系统:posix接口。可以将ceph集群看做一个共享文件系统挂载到本地。
块存储:即rbd。有kernel rbd和librbd两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的后端存储
统一存储:虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。
高扩展性:扩容方便、容量大。能够管理上千台服务器、EB级的容量。
可靠性强:支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自管理、自动修复。无单点故障,容错性强。
高性能:因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的IOPS和吞吐量越高。另外一点ceph客户端读写数据直接与存储设备(osd) 交互。
# 关闭SELinux setenforce 0 sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config systemctl stop firewalld.service systemctl disbale firewalld.service
controller 192.168.182.143 admin,osd, mon # 作为管理节点和监控节点 compute1 192.168.182.142 osd,mds compute2 192.168.182.128 osd,mds
# controller作管理. osd. mon节点
# controler mkfs.xfs /dev/sdc mkdir -p /var/local/osd0 mount /dev/sdc /var/local/osd0/ # compute1 mkfs.xfs /dev/sdb mkdir -p /var/local/osd1 mount /dev/sdb /var/local/osd1/ # compute2 mkfs.xfs /dev/sdb mkdir -p /var/local/osd2 mount /dev/sdb /var/local/osd2/
如果看不到新增的磁盘设备,则重启虚拟机;或者执行下面命令重新扫描一下磁盘,注意查看/sys/class/scsi_host/目录下有几个host文件
echo ‘- - -‘ > /sys/class/scsi_host/host{0,1,2}/scan
# 在管理节点使用ssh-keygen 生成ssh keys 发布到各节点
# controller
ssh-keygen ssh-copy-id controler ssh-copy-id compute1 ssh-copy-id compute2
# 增加 yum配置文件(各个节点都需要增加yum源)
wget -O /etc/yum.repos.d/ceph.repo https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/ceph.repo
或者
cat << EOF > /etc/yum.repos.d/ceph.repo [ceph] name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/ gpgcheck=0 priority=1 [ceph-noarch] name=cephnoarch baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/ gpgcheck=0 priority=1 [ceph-source] name=Ceph source packages baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS enabled=0 gpgcheck=1 type=rpm-md gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc priority=1 EOF
# 更新软件源并安装ceph-deploy 管理工具
yum clean all && yum makecache
yum -y install ceph-deploy
# controller
mkdir /etc/ceph && cd /etc/ceph
# mon安装在controller节点
ceph-deploy new controller
# 生成配置文件在当前目录下
[root@controler ceph]# ls
ceph.conf ceph.log ceph.mon.keyring
# Ceph配置文件、一个monitor密钥环和一个日志文件
# 配置文件的默认副本数从3改成2,这样只有两个osd也能达到active+clean状态,把下面这行加入到[global]段(可选配置)
$ vim ceph.conf [global] fsid = 92f5581d-79d2-4c9f-a523-4965eedc846b mon_initial_members = controller mon_host = 192.168.182.143 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx osd_pool_default_size = 2
# 在所有节点安装ceph
ceph-deploy install controller compute1 compute2
# 安装ceph monitor
ceph-deploy mon create controller
# 收集节点的keyring文件
ceph-deploy gatherkeys controller
# 添加osd节点 (所有osd节点执行)
# 我们实验准备时已经创建目录/var/local/osd{id}
8.1)创建激活osd
# 创建osd
# controller ceph-deploy osd prepare controller:/var/local/osd0 compute1:/var/local/osd1 compute2:/var/local/osd2
# 激活osd
ceph-deploy osd activate controller:/var/local/osd0 compute1:/var/local/osd1 compute2:/var/local/osd2
# 如果报错
解决:在各个节点上添加权限
chmod 777 -R /var/local/osd0/ chmod 777 -R /var/local/osd1/ chmod 777 -R /var/local/osd2/
# 查看状态
ceph-deploy osd list controller compute1 compute2
# 用ceph-deploy把配置文件和admin密钥拷贝到所有节点,这样每次执行Ceph命令行时就无需指定monitor地址和ceph.client.admin.keyring了
ceph-deploy admin controller compute1 compute2
# 各节点修改ceph.client.admin.keyring权限
chmod +r /etc/ceph/ceph.client.admin.keyring
# 查看osd状态
ceph health 或 ceph -s
ceph-deploy mds create compute1 compute2
# 查看状态
ceph mds stat
# 集群状态
ceph -s
# 查看
ceph fs ls
# 创建存储池
ceph osd pool create cephfs_data <pg_num> ceph osd pool create cephfs_metadata <pg_num>
其中:<pg_num> = 128 ,
关于创建存储池
确定 pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值:
*少于 5 个 OSD 时可把 pg_num 设置为 128
*OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512
*OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096
*OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值
*自己计算 pg_num 取值时可借助 pgcalc 工具
随着 OSD 数量的增加,正确的 pg_num 取值变得更加重要,因为它显著地影响着集群的行为、以及出错时的数据持久性(即灾难性事件导致数据丢失的概率)。
11.1、创建文件系统
# 创建好存储池后,你就可以用 fs new 命令创建文件系统了,其中:<fs_name> = cephfs 可自定义
ceph fs new <fs_name> cephfs_metadata cephfs_data
# 查看创建后的cephfs
ceph fs ls
# 查看mds节点状态,active是活跃的,另1个是处于热备份的状态
ceph mds stat
11.2、挂载Ceph文件系统(compute1)
A:内核驱动挂载Ceph文件系统
# 创建挂载点
mkdir /opt
# cat
/etc/ceph/ceph
.client.admin.keyring
# 将key对应的值复制下来保存到文件:
/etc/ceph/admin
.secret中。
mount -t ceph 192.168.182.143:6789:/ /opt -o name=admin,secretfile=/etc/ceph/admin.secret
# 取消挂载
umount /opt
B:用户控件挂载Ceph文件系统
# 安装ceph-fuse
yum install -y ceph-fuse
# 挂载
ceph-fuse -m 192.168.182.143:6789 /opt
# 取消挂载
fusermount -u /opt
ceph在开源社区还是比较热门的,但是更多的是应用于云计算的后端存储。所以大多数在生产环境中使用ceph的公司都会有专门的团队对ceph进行二次开发,ceph的运维难度也比较大。但是经过合理的优化之后,ceph的性能和稳定性都是值得期待的。
清理机器上的ceph相关配置:
停止所有进程: stop ceph-all
卸载所有ceph程序:ceph-deploy uninstall [{ceph-node}]
删除ceph相关的安装包:ceph-deploy purge {ceph-node} [{ceph-data}]
删除ceph相关的配置:ceph-deploy purgedata {ceph-node} [{ceph-data}]
删除key:ceph-deploy forgetkeys
卸载ceph-deploy管理:yum -y remove ceph-deploy
~~~部署Ceph分布式存储完成~~~
CentOS7安装OpenStack-11.部署Ceph分布式存储架构
原文:https://www.cnblogs.com/liugp/p/12513702.html