理论:
Ceph是一个开源的、统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。
ceph支持的三种存储方式:
块存储 RDB: 安全、读写性强、大型或超大型企业使用,需要光纤组网成本高
对象存储 RGW:键值存储、安全、高读写、简单易管理,不适应变动大的文件、不适合数据库、系统挂载困难
文件系统存储 CephFS:成本低、适用于内部文件共享,低读写、低传输
ceph组件:
osd: 存储数据、副本数据处理、数据恢复、数据回补、平衡数据分布,并将数据相关的一些监控信息提供给mon,以便mon来检查其他OSD的心跳状态。
mon:负责监视Ceph集群,维护Ceph集群的健康状态,同时维护着Ceph集群中的各种Map图
mds: 保存的是Ceph文件系统的元数据。Ceph的块设备和Ceph对象存储都不需要mds
mgr: 负责跟踪运行时间指标和Ceph群集的当前状态,包括存储利用率,当前性能指标和系统负载。
1.环境
ceph01 192.168.8.10 admin、osd、mon、mgr ceph02 192.168.8.20 osd、mds、mon、mgr ceph03 192.168.8.30 osd、mds、mon、mgr client 192.168.8.40 client (前3台另加一块100G硬盘,不要分区)
2.ssh免密
ceph01: cat >> /etc/hosts << EOF 192.168.8.10 ceph01 192.168.8.20 ceph02 192.168.8.30 ceph03 192.168.8.40 client EOF ssh-keygen for i in ceph01 ceph02 ceph03 client;do ssh-copy-id $i;done scp /etc/hosts ceph02:/etc scp /etc/hosts ceph03:/etc scp /etc/hosts client:/etc
3.所有ceph主机基础配置
yum源: wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo cat> /etc/yum.repos.d/ceph.repo << EOF [ceph] name=ceph baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/x86_64/ gpgcheck=0 [ceph-noarch] name=ceph-noarch baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch/ gpgcheck=0 EOF 时间同步: yum -y install chrony vim /etc/chrony.conf 修改: server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server ntp3.aliyun.com iburst 保存退出 systemctl restart chronyd 安装ceph-deploy yum install -y ceph-deploy ceph ceph-radosgw snappy leveldb gdisk python-argparse gperftools-libs
4.创建集群
(1)管理节点,多个mon模式
ceph01: cd /etc/ceph/ ceph-deploy new ceph01 ceph02 ceph03 ls /etc/ceph/ ceph.conf ceph-deploy-ceph.log ceph.mon.keyring rbdmap # ceph.conf 为 ceph 配置文件; ceph-deploy-ceph.log 为 ceph-deploy 日志文件; ceph.mon.keyring 为 ceph monitor 的密钥环。 # 把 Ceph 配置文件里的默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态。 echo "osd_pool_default_size = 2" >> ceph.conf
(2)初始化mon节点,收集所有秘钥
# 管理节点 ceph01: ceph-deploy mon create-initial # 查看集群状态 ceph -s
5.添加osd服务
# 使用ceph自动分区 ceph01: ceph-deploy disk zap ceph01 /dev/sdb ceph-deploy disk zap ceph02 /dev/sdb ceph-deploy disk zap ceph03 /dev/sdb # 添加osd节点 ceph01: ceph-deploy osd create ceph01 --data /dev/sdb ceph-deploy osd create ceph02 --data /dev/sdb ceph-deploy osd create ceph03 --data /dev/sdb # 查看osd节点 ceph01: ceph-deploy osd list ceph01 ceph02 ceph03
6.添加mgr服务
ceph01: ceph-deploy mgr create ceph01 ceph02 ceph03
7.统一集群配置
ceph01: ceph-deploy admin ceph01 ceph02 ceph03 # 集群每一个节点授权 chmod +r /etc/ceph/ceph.client.admin.keyring
8.添加mds服务
ceph01: ceph-deploy mds create ceph02 ceph03 #查看mds状态 ceph mds stat #查看集群状态 ceph -s ---------------- ceph集群应用
一.文件系统运用
1.创建CephFS
# 查看文件系统 ceph01: ceph fs ls 显示无文件系统 # CephFS 需要两个Pools: cephfs-data、cephfs-metadata, 分别存储文件数据和文件元数据 # 取值范围:osd<5 取128;osd 5-10 取512;osd 10-50取4096;osd>50 通过pgcalc计算 ceph01: ceph osd pool create ceph_data 128 ceph osd pool create ceph_metadata 128 # 为存储池创建文件系统 ceph01: ceph fs new cephfs ceph_metadata ceph_data #查看文件系统和mds状态 ceph01: ceph fs ls ceph fs status cephfs
2.客户端挂载
(1) 普通挂载
# 客户端创建挂载点 client: mkdir /data # 管理节点查看客户端秘钥 ceph01: cat /etc/ceph/ceph.client.admin.keyring [client.admin] key = AQC++Zxk7ie+IxAAaOUqx/ZErIEXBfHNhDqK8g== # 客户端使用秘钥挂载 client: mount -t ceph 192.168.8.10:6789:/ /data/ -o name=admin,secret=AQC++Zxk7ie+IxAAaOUqx/ZErIEXBfHNhDqK8g== # 卸载 umount /data
2. 用户空间方式挂载
# 客户端安装ceph-fuse client: yum -y install ceph-fuse mkdir /etc/ceph # 管理节点复制秘钥和配置文件到客户端 ceph01: scp ceph.client.admin.keyring ceph.conf client:/etc/ceph/ # 客户端挂载 ceph-fuse -m 192.168.8.10:6789 /data/ # 查看挂载 df -hT
二.块存储运用
1.查看内核是否支持rbd,否则升级内核
ceph01: modprobe rbd lsmod | grep rbd
2.创建块存储的存储池
ceph01: ceph osd pool create rbd 64 # pg取值一般64 128 256,具体看osd数量 # 查看pg值 ceph osd pool get rbd pg_num # 手动设置pg值 ceph osd pool set rbd pg_num 128
3.创建块存储镜像
ceph01: rbd create --size 102400 rbd/test1 #更改镜像大小 rbd resize --size 51200 test1 --allow-shrink # 查看rbd信息 rbd ls rbd info test1
4.客户端映射块设备
client: # 安装ceph命令 yum -y install ceph-common # 内核4.0前系统需要关闭某些功能 rbd feature disable test1 object-map fast-diff deep-flatten exclusive-lock # 映射rbd rbd map test1 #挂载 mkdir /cephrbd mkfs.xfs /dev/rbd0 mount /dev/rbd0 /cephrbd # 测试写入 dd if=/dev/zero of=/cephrbd/file bs=100M count=1 # 查看rados(ceph底层系统) rados df
5.创建快照并测试回滚
client: rbd snap create --snap mysnap rbd/test1 # 删除文件 rm -rf /cephrbd/file # 取消挂载 umount /dev/rbd0 # 回滚 rbd snap rollback rbd/test1@mysnap # 重新挂载并查看文件 mount /dev/rbd0 /cephrbd/ ls /cephrbd
6. 块设备克隆(基于快照)
# 保护快照 rbd snap protect rbd/test1@mysnap # 卸载 umount /dev/rbd0 # 基于快照克隆 rbd clone rbd/test1@mysnap rbd/test2 # 查看块存储 rbd ls # 映射rbd rbd map rbd/test2 # 挂载新设备 mkdir /cephrbd1 mount /dev/rbd1 /cephrbd1 ls /cephrbd1
三、ceph常用命令
1.服务相关
systemctl status ceph\*.service ceph\*.target #查看所有服务 systemctl stop ceph\*.service ceph\*.target #关闭所有服务 systemctl start ceph.target #启动服务 systemctl stop ceph-osd\*.service # 关闭所有osd服务 systemctl stop ceph-mon\*.service #关闭所有mon服务 systemctl start ceph-osd@{id} #启动单个osd服务 systemctl start ceph-mon@{hostname} #启动单个mon服务 systemctl start ceph-mds@{hostname} #启动单个mds服务
2.查看
ceph -help #查看命令帮助 ceph -s #查看状态 ceph osd pool set rbd pg_num 1024 # 修改pg_num数量 ceph osd pool set rbd pgp_num 1024 # 修改pgp_num数量 ceph osd tree #查看osd树列表 ceph osd pool ls #查看所有的osd池 ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show # 查看指定的osd运行中的所有参数 rados df #查看储存池使用情况 rados -p rbd ls |sort ceph osd pool get rbd pg_num ceph osd pool get rbd pgp_num ceph osd pool set rbd pg_num 1024 ceph osd pool set rbd pgp_num 1024
3.清除ceph配置
systemctl stop ceph\*.service ceph\*.target #停止所有进程 ceph-deploy uninstall [{ceph-node}] #卸载所有ceph程序 ceph-deploy purge {ceph-node} [{ceph-data}] #删除ceph相关的安装包 例如:ceph-deploy purge node4 ceph-deploy purgedata {ceph-node} [{ceph-data}] #删除ceph相关的配置 ceph-deploy forgetkeys #删除key yum -y remove ceph-deploy #卸载ceph-deploy管理