Ceph用法

mac2024-10-22  48

什么是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部署拓扑如下: 部署要点

安装部署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服务

最新回复(0)