Ceph用法

什么是Ceph

Ceph是一种分布式文件系统,具有高可用,高扩展,高性能的特点
Ceph可以提供对象存储,块存储,文件系统存储和PB级别的存储空间
https://docs.ceph.com/docs/master/start/intro/

Ceph组件

OSDs —存储设备
MONITOR —集群监控组件
RGW —对象存储网关
MDS —存放文件系统的元数据

案例

部署Ceph集群

案例拓扑
部署步骤

  • 所有节点配置时钟同步
  • 安装部署工具ceph-deploy
  • 创建ceph集群
  • 准备日志磁盘分区
  • 创建OSD存储空间
  • 查看ceph状态,
  • 验证

安装软件
[root@node1 ~]# yum -y install ceph-deploy
[root@node1 ceph-cluster]# for i in node1 node2 node3
do
ssh $i “yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw”
done
部署集群
[root@node1 ~]# mkdir ceph-cluster
[root@node1 ~]# cd ceph-cluster/
[root@node1 ceph-cluster]# ceph-deploy new node1 node2 node3 定义monitor主机是谁
[root@node1 ceph-cluster]# ceph-deploy mon create-initial 启动monitor服务
创建OSD
[root@node1 ceph-cluster]# for i in node1 node2 node3 创建vdb1,vdb2来作为缓存盘
do
ssh $i “parted /dev/vdb mklabel gpt”
ssh $i “parted /dev/vdb mkpart primary 1 50%”
ssh $i “parted /dev/vdb mkpart primary 50% 100%”
done
[root@node1 ceph-cluster]# chown ceph.ceph /dev/vdb1 为ceph用户设置硬盘的权限
[root@node1 ceph-cluster]# chown ceph.ceph /dev/vdb2
#上面的权限修改为临时操作,重启计算机后,权限会再次被重置。
#需要将规则写到配置文件实现永久有效。
[root@node1 ceph-cluster]# vim /etc/udev/rules.d/70-vdb.rules

ENV{DEVNAME}=="/dev/vdb1",OWNER=“ceph”,GROUP=“ceph”

ENV{DEVNAME}=="/dev/vdb2",OWNER=“ceph”,GROUP=“ceph”
wq

[root@node1 ceph-cluster]# ceph-deploy disk zap node1:vdc node1:vdd 对其他硬盘进行初始化清空磁盘数据
[root@node1 ceph-cluster]# ceph-deploy disk zap node2:vdc node2:vdd
[root@node1 ceph-cluster]# ceph-deploy disk zap node3:vdc node3:vdd

[root@node1 ceph-cluster]# ceph-deploy osd create \ 创建osd存储设备,vdc为集群提供存储空间,vdb1提供JOURNAL缓存,每个存储设备对应一个缓存设备,缓存需要SSD,不需要很大
node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2
[root@node1 ceph-cluster]# ceph-deploy osd create
node2:vdc:/dev/vdb1 node2:vdd:/dev/vdb2
[root@node1 ceph-cluster]# ceph-deploy osd create
node3:vdc:/dev/vdb1 node3:vdd:/dev/vdb2
验证
[root@node1 ~]# ceph -s 查看集群状态
[root@node1 ~]# systemctl restart ceph*.service ceph*.target 重启ceph服务

创建ceph块存储

创建步骤

  • 创建块存储镜像
  • 客户端映射镜像
  • 创建镜像快照
  • 使用快照还原数据
  • 使用快照克隆镜像
  • 删除快照与镜像

创建镜像
[root@node1 ~]# ceph osd lspools 查看存储池
[root@node1 ~]# rbd create demo-image --image-feature layering --size 10G 创建镜像,demo-image和jacob为镜像名,可随意取名,image-feature为配置特性,layering代表开启COW
[root@node1 ~]# rbd create rbd/jacob --image-feature layering --size 10G
[root@node1 ~]# rbd list 查看镜像
[root@node1 ~]# rbd info demo-image
rbd image ‘demo-image’:
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3aa2ae8944a
format: 2
features: layering
动态调整
[root@node1 ~]# rbd resize --size 15G jacob 扩大
[root@node1 ~]# rbd info jacob
[root@node1 ~]# rbd resize --size 7G jacob --allow-shrink 缩小
[root@node1 ~]# rbd info image
用户通过KRBD访问
[root@client ~]# yum -y install ceph-common 客户端需要安装ceph-common软件包
[root@client ~]# scp 192.168.4.11:/etc/ceph/ceph.conf /etc/ceph/ 拷贝配置文件(否则不知道集群在哪)
[root@client ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ 拷贝连接密钥(否则无连接权限)
[root@client ~]# rbd map jacob 发现磁盘镜像
[root@client ~]# lsblk
[root@client ~]# rbd showmapped
id pool image snap device
0 rbd jacob - /dev/rbd0
[root@client ~]# mkfs.xfs /dev/rbd0 格式化,挂载磁盘
[root@client ~]# mount /dev/rbd0 /mnt/
[root@client ~]# echo “test” > /mnt/test.txt
创建磁盘镜像快照
[root@node1 ~]# rbd snap ls jacob 查询镜像jacob快照
[root@node1 ~]# rbd snap create jacob --snap jacob-snap1 创建快照jacob-snap1
[root@node1 ~]# rbd snap ls jacob
SNAPID NAME SIZE
4 jacob-snap1 15360 MB
[root@client ~]# rm -rf /mnt/test.txt
[root@client ~]# umount /mnt
[root@node1 ~]# rbd snap rollback jacob --snap jacob-snap1 还原到快照状态
[root@client ~]# mount /dev/rbd0 /mnt/ 重新挂载
[root@client ~]# ls /mnt
创建快照克隆
[root@node1 ~]# rbd snap protect jacob --snap jacob-snap1 保护镜像快照
[root@node1 ~]# rbd snap rm jacob --snap jacob-snap1 会失败
[root@node1 ~]# rbd clone jacob --snap jacob-snap1 jacob-clone --image-feature layering
使用jacob镜像的快照jacob-snap1克隆一个新的名称为jacob-clone的镜像
[root@node1 ~]# rbd info jacob-clone
rbd image ‘jacob-clone’:
size 15360 MB in 3840 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3f53d1b58ba
format: 2
features: layering
flags:
parent: rbd/jacob@jacob-snap1
[root@node1 ~]# rbd flatten jacob-clone 克隆镜像很多数据都来自于快照链
#如果希望克隆镜像可以独立工作,就需要将父快照中的数据,全部拷贝一份,但比较耗时!!!

[root@node1 ~]# rbd info jacob-clone
rbd image ‘jadob-clone’:
size 15360 MB in 3840 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3f53d1b58ba
format: 2
features: layering
flags:
#注意,父快照信息没了!
[root@node1 ~]# rbd snap unprotect jacob --snap jacob-snap1 取消快照保护
[root@node1 ~]# rbd snap rm jacob --snap jacob-snap1 可以删除快照
客户端撤销磁盘映射
[root@client ~]# umount /mnt
[root@client ~]# rbd showmapped
id pool image snap device
0 rbd jacob - /dev/rbd0
[root@client ~]# rbd unmap /dev/rbd0

创建ceph文件系统存储

CephFS: 使用Ceph集群提供与posfix兼容的文件系统,允许linux直接将ceph存储mount到本地
元数据(metadata):

  • 任何文件系统中的数据分为数据和元数据
  • 数据是指普通文件中的实际数据
  • 元数据指用来描述一个文件的特征的系统数据
  • 比如访问权限,文件拥有者以及文件数据块的分布信息(inode)等
    部署要点
  • 部署MDSs节点
  • 创建Ceph文件系统
  • 客户端挂载文件系统

安装软件包
在块存储的基础上,再添加一台机器
IP地址:192.168.4.14
主机名:node4
配置yum源(包括rhel、ceph的源)
与Client主机同步时间
node1允许无密码远程node4
修改node1的/etc/hosts,并同步到所有node主机
[root@node4 ~]# yum -y install ceph-mds
部署元数据服务器
[root@node1 ~]# cd /root/ceph-cluster
[root@node1 ceph-cluster]# ceph-deploy mds create node4
[root@node1 ceph-cluster]# ceph-deploy admin node4 如果没有密钥和配置文件则可以通过admin命令重新发送配置和密钥(备选操作)
[root@node4 ~]# ceph osd pool create cephfs_data 128 创建两个存储池,对应128个PG,用来存放元数据和文件数据
[root@node4 ~]# ceph osd pool create cephfs_metadata 128
备注:一个文件系统是由inode和block两部分组成,效果如图-1所示。
inode存储文件的描述信息(metadata元数据),block中存储真正的数据。
在这里插入图片描述
创建文件系统
[root@node4 ~]# ceph fs new myfs1 cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
//注意,先写medadata池,再写data池
//默认,只能创建1个文件系统,多余的会报错
[root@node4 ~]# ceph fs ls 查询文件系统
name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
用户端挂载
[root@client ~]# mount -t ceph 192.168.4.11:6789:/ /mnt/cephfs/
-o name=admin,secret=AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==
//注意:文件系统类型为ceph
//192.168.4.11为MON节点的IP(不是MDS节点)
//admin是用户名,secret是密钥
//密钥可以在/etc/ceph/ceph.client.admin.keyring中找到

创建ceph对象存储

对象存储: 也就是键值存储,通过接口指令,也就是简单的GET,PUT,DEL和其他扩展,向存储服务上传下载数据; 对象存储中所有数据都被认为是一个对象,所以任何数据都可以存入对象存储服务器,如图片,视频,音频等
RGW(Rados Gateway): 是Ceph对象存储网关,用于向客户端应用呈现存储界面,提供RESTful API访问接口
RGW部署拓扑如下:
RGW部署拓扑
部署要点

  • 安装部署Rados Gateway
  • 启动RGW服务
  • 设置RGW的前端服务与端口
  • 客户端测试

部署对象存储服务器
准备一台新机器
IP地址:192.168.4.15
主机名:node5
配置yum源(包括rhel、ceph的源)
与Client主机同步时间
node1允许无密码远程node5
修改node1的/etc/hosts,并同步到所有node主机
[root@node1 ~]# yum -y install ceph-radosgw
[root@node1 ~]# cd /root/ceph-cluster
[root@node1 ~]# ceph-deploy rgw create node5 启动一个rgw服务
[root@node5 ~]# ps aux |grep radosgw 登录node5验证服务是否启动
ceph 4109 0.2 1.4 2289196 14972 ? Ssl 22:53 0:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.node4 --setuser ceph --setgroup ceph
[root@node5 ~]# systemctl status ceph-radosgw@*
修改服务端口
RGW默认服务端口为7480,可修改为8000或80更方便客户端记忆和使用
[root@node5 ~]# vim /etc/ceph/ceph.conf
[client.rgw.node5]
host = node5 node5为主机名
rgw_frontends = “civetweb port=8000” civetweb是RGW内置的一个web服务

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值