首页 > 其他分享 >ceph的部署与简单使用

ceph的部署与简单使用

时间:2024-11-12 11:47:55浏览次数:3  
标签:部署 ceph -- rbdtest 简单 rbd osd pool

OSD(Object Storage Daemon,守护进程 ceph-osd)

是负责物理存储的进程,一般配置成和磁盘一一对应,一块磁盘启动一个OSD进程。主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查,负责响应客户端请求返回具体数据的进程等。通常至少需要3个OSD来实现冗余和高可用性。

PG(Placement Group 归置组)

PG 是一个虚拟的概念而已,物理上不真实存在。它在数据寻址时类似于数据库中的索引:Ceph 先将每个对象数据通过HASH算法固定映射到一个 PG 中,然后将 PG 通过 CRUSH 算法映射到 OSD。

Pool

Pool 是存储对象的逻辑分区,它起到 namespace 的作用。每个 Pool 包含一定数量(可配置)的 PG。Pool 可以做故障隔离域,根据不同的用户场景统一进行隔离。

Pool中数据保存方式支持两种类型:

●多副本(replicated):类似 raid1,一个对象数据默认保存 3 个副本,放在不同的 OSD ●纠删码(Erasure Code):类似 raid5,对 CPU 消耗稍大,但是节约磁盘空间,对象数据保存只有 1 个副本。由于Ceph部分功能不支持纠删码池,此类型存储池使用不多

Pool、PG 和 OSD 的关系:

一个Pool里有很多个PG;一个PG里包含一堆对象,一个对象只能属于一个PG;PG有主从之分,一个PG分布在不同的OSD上(针对多副本类型)

Monitor(守护进程 ceph-mon)

用来保存OSD的元数据。负责维护集群状态的映射视图(Cluster Map:OSD Map、Monitor Map、PG Map 和 CRUSH Map),维护展示集群状态的各种图表, 管理集群客户端认证与授权。一个Ceph集群通常至少需要 3 或 5 个(奇数个)Monitor 节点才能实现冗余和高可用性,它们通过 Paxos 协议实现节点间的同步数据。

Manager(守护进程 ceph-mgr)

负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率、当前性能指标和系统负载。为外部监视和管理系统提供额外的监视和接口,例如 zabbix、prometheus、 cephmetrics 等。一个 Ceph 集群通常至少需要 2 个 mgr 节点实现高可用性,基于 raft 协议实现节点间的信息同步。

MDS(Metadata Server,守护进程 ceph-mds)

是 CephFS 服务依赖的元数据服务。负责保存文件系统的元数据,管理目录结构。对象存储和块设备存储不需要元数据服务;如果不使用 CephFS 可以不安装。

ceph可以创建三种存储类型

  • RBD块存储:RADOS BLOCK DEVICE,即RADOS块设备,提供裸设备的能力,映射到操作系统是一块磁盘;

  • RGW对象存储:RADOS GateWay,即存储对象网关,提供无限存储接入能力,提供上传PUT下载GET接口;

  • CephFS文件存储:Ceph FileSystem,即Ceph文件系统,提供文件共享存储能力,映射到操作系统是一个目录

部署

node110.0.0.20
node210.0.0.30
node310.0.0.40

        前置

#安装时间同步,启用
apt install -y ntp
systemctl enable --now ntp
#安装python3
apt install -y python3
#安装docker
	#添加docker GPG公钥
	curl -fsSL https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
	#移动公钥
	mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d/
	#添加软件仓库
	sudo add-apt-repository "deb [arch=amd64] https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
	#安装
apt install -y docker-ce
#启动docker
systemctl enable --now docker

 部署

#node1安装cephadm
apt install -y cephadm
#初始化主节点
cephadm bootstrap --mon-ip *<mon-ip>*  --initial-dashboard-user admin --initial-dashboard-password admin --dashboard-password-noupdate
							↑						↑							↑						↑
							主节点IP				web用户名						web密码				关闭强制修改web密码

#拷贝ceph公钥到其他节点
ssh-copy-id -f -i /etc/ceph/ceph.pub [email protected]/40
...
#安装ceph命令
apt install -y ceph-common
#添加节点
ceph orch host add 主机名 IP
ceph orch host add node2 10.0.0.30
...
#添加管理节点标签
ceph orch host label add node2(节点host) _admin
#查看
ceph orch host ls
#拷贝ceph配置文件和keyring
scp /etc/ceph/{*.conf,*.keyring} root@node2:/etc/ceph
#添加mon
ceph orch apply mon "node1,node2,node3"(host)
#添加mgr
ceph orch apply mgr --placement="node1,node2,node3"(host)
#添加osd(存储)
ceph orch daemon add osd node1:/dev/vdb (host:设备)
...

创建pool

#查看pool
ceph osd pool ls
#创建pool
ceph osd pool create mypool
#查看副本数
ceph osd pool get mypool size
#修改pool副本数
ceph osd pool set mypool size 2
#修改默认副本数
vim /etc/ceph/ceph.conf
osd_pool_default_size = 2
#查看 PG 和 PGP 数量
ceph osd pool get mypool pg_num
ceph osd pool get mypool pgp_num
#修改 pg_num 和 pgp_num 的数量
ceph osd pool set mypool pg_num 128
ceph osd pool set mypool pgp_num 128

删除pool

#临时开启pool删除
ceph config set global mon_allow_pool_delete true
#删除
ceph osd pool rm mypool mypool --yes-i-really-really-mean-it

创建chepfs

#创建mds
ceph orch apply mds ***
#创建pool(需要两个,一个数据,一个元数据)
ceph osd pool create data 64 64
ceph osd pool create metadata 64 64
#副本数设置
ceph osd pool set data size 2
ceph osd pool set metadata size 2
#创建fs
ceph fs new cephfs01 metadata data  启用ceph,元数据Pool在前,数据Pool在后
#挂载(需要下载ceph命令,拷贝ceph配置)
scp 10.0.0.20:/etc/ceph/ceph.conf /etc/ceph/ceph.conf
apt install -y ceph-common
#查看公钥
cat /etc/ceph/ceph.client.admin.keyring   
  key = AQBdiixncCjUHRAAgnUJnIG2GUA9UAkzft4asw==
#挂载
mount -t ceph ip:6789 本地路径 -o name=admin,secret=AQBdiixncCjUHRAAgnUJnIG2GUA9UAkzft4asw

删除chepfs

#删除mds
	#查看docker mds进程
	docker ps 找mds服务
	#停服务
	docker contariner rm mds容器ID
#删除fs
ceph fs rm cephfs01 --yes-i-really-mean-it
#按需删除pool
    #临时开启pool删除
    ceph config set global mon_allow_pool_delete true
    #删除
    ceph osd pool rm data data --yes-i-really-really-mean-it

创建RBD

(服务端创建RBD,看到的是一个镜像,这个镜像就是RBD)

#创建pool存储池
ceph osd pool create rbdtest 64 64
#转换存储池为rbd模式
ceph osd pool application enable rbdtest rbd
#初始化存储池
rbd pool init -p rbdtest
#创建镜像
rbd create -p rbdtest --image rbdtest.img --size 10G
	#查看存储池下存在哪些镜像
	rbd ls -l -p rbdtest
	#查看镜像的详细信息
	rbd info -p rbd-test --image rbdtest.img
	#修改镜像大小
	rbd resize -p rbdtest --image rbdtest.img --size 20G
	#使用 resize 调整镜像大小,一般建议只增不减,如果是减少的话需要加选项 --allow-shrink
	rbd resize -p rbdtest --image rbdtest.img --size 5G --allow-shrink

#删除镜像
rbd rm -p rbdtest --image rbdtest.img
rbd remove rbdtest/rbdtest.img
#推荐使用 trash 命令,这个命令删除是将镜像移动至回收站,如果想找回还可以恢复
rbd trash move rbdtest/rbdtest.img
#查看回收站镜像
rbd trash list  查看全部
rbd trash list -p rbdtest  指定存储池
#还原镜像
rbd trash restore rbdtest/rbdtest.img

#挂载
	#拷贝配置文件到客户端/etc/ceph/
	ceph.conf      ceph.client.admin.keyring
	#挂载
	rbd map rbdtest/rbdtest.img --keyring ceph.client.admin.keyring(指定认证文件)
	#格式化
	mkfs -t xfs(ext4.....) /dev/rbd0
#创建特定用户
ceph auth get-or-create client.用户名 osd "allow * pool=RBD-Pool名" mon "allow r" > ceph.client.用户名.keyring  
	#分发文件
	scp ceph.client.用户名.keyring ......
	#特定用户挂载
	rbd map rbd/rbd.img --keyring ceph.client.usr.keyring --user user
#删除用户
ceph auth del client.user
	
#查看挂载的rbd
rbd showmapped
rbd device list
#取消挂载
rbd umap rbdtest/rbdtest.img(通过rbd showmapped查看)
#挂载后在线扩容
	#服务端
	rbd resize rbd/rbd.img --size 20G
	#客户端(刷新文件系统)
	xfs_growfs /dev/rbd0		#刷新xfs文件系统容量
	resize2fs /dev/rbd0			#刷新ext4类型文件系统容量


#rbd快照
	#服务端-在管理节点对镜像创建快照
	rbd snap create --pool rbdtest --image rbdtest.img --snap rbdtest-backup
    					等于
	rbd snap create rbdtest/rbdtest.img@rbdtest-backup
	#列出指定镜像所有快照
	rbd snap ls rbdtest/rbdtest.img
	#恢复快照
	rbd snap rollback rbdtest/rbdtest.img@rbdtest-backup


#导出镜像
rbd export rbdtest/rbdtest.img /opt/rbdtest.img
#导入镜像
rbd import /opt/rbdtest.img rbdtest/rbdtest.img

创建RGW

#创建对象存储rgw
ceph orch apply rgw rgwtest	
#创建创建 RadosGW 账户
radosgw-admin user create --uid="rgwuser" --display-name="rgw test user"
							↑					↑
						用户名					用户备注
						要记录好创建成功时输出的user、access_key、secret_key
#后续忘记key可以使用此命令查看
radosgw-admin user info --uid="rgwuser"
#创建bucket桶
radosgw-admin bucket create --uid=rgwuser --bucket=mybucket
						指定可用的用户		指定桶名

#客户端可以使用如下软件测试
Gladinet Cloud Desktop

标签:部署,ceph,--,rbdtest,简单,rbd,osd,pool
From: https://blog.csdn.net/abc2116146/article/details/143705393

相关文章

  • SpringBoot校园电动车短租平台设计与实现x2rqw 程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:学生,区域分类,电动车租借,电动车分类,租车订单,通知开题报告内容一、选题背景与意义随着环保意识的提升和校园出行需求的增加,电动车作为一种便捷、......
  • SpringBoot小区蔬菜直销系统12x8w 程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:用户,商品分类,商品信息开题报告内容一、研究背景随着居民生活水平的提高和健康意识的增强,小区居民对新鲜、安全、便捷的蔬菜需求日益增长。传统的蔬......
  • SpringBoot线上书城网站h5z49 程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:用户,图书类型,热卖图书开题报告内容一、课题背景与意义随着互联网技术的快速发展,电子商务已成为现代商业活动的重要组成部分。线上书城作为电子商务......
  • 使用 PostScript 实现简单的 OCR 处理
    PostScript并不直接支持图像处理,因此我们将展示如何通过一些基本图像绘制和简单字符检测来模拟文字识别的概念。读取图像并转换为灰度图由于PostScript并不原生支持读取图像,这里假设我们可以将图像以数据的形式加载,并通过PostScript的逻辑来绘制出图像的灰度形式。posts......
  • Docker:部署kkFileView所有格式文档在线预览服务
    前言kkFileView是一个文档在线预览服务,基本支持主流文档格式预览,目前支持的文件类型如下:支持doc,docx,xls,xlsx,xlsm,ppt,pptx,csv,tsv,dotm,xlt,xltm,dot,dotx,xlam,xla等Office办公文档支持wps,dps,et,ett,wpt等国产WPSOffice办公文档支持odt,......
  • leetcode算法题-有效的括号(简单)
    有效的括号(简单)leetcode:https://leetcode.cn/problems/valid-parentheses/description/前言防止脑袋生锈,做一下leetcode的简单算法题,难得也做不来哈哈。大佬绕道,小白可看。题目描述给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:......
  • 在华为开发者空间,简单几步带你实现AI风格化编程
    摘要:通过调用ModelArts上的动漫头像制作应用,将头像图片转化为动漫风格的头像图片。本文分享自华为云社区《【开发者空间实践指导】基于FunctionGraph的AI风格化编程》,作者:开发者空间小蜜蜂。一、案例介绍本实验基于FunctionGraph和ModelArts的智能头像动漫化处理应用。......
  • 模态内重叠优化,简单有效的CLIP微调方法 | BMVC'24 Oral
    来源:晓飞的算法工程笔记公众号,转载请注明出处论文:CLIPAdaptationbyIntra-modalOverlapReduction论文地址:https://arxiv.org/abs/2409.11338创新点提出一种基于轻量级适配的新方法,直接在图像空间中减少CLIP中的模态内重叠(IMO)。新特征与任何利用缓存模型的无训练......
  • 写程序实现线性回归模型及其简单的方法
    以下是一个使用Python实现线性回归模型的示例代码:importnumpyasnpclassLinearRegression:def__init__(self,learning_rate=0.01,num_iterations=1000):self.learning_rate=learning_rateself.num_iterations=num_iterationsself......
  • Qt读写文件简单示例
    voidtestReadWriteFile(){//当前程序所在文件夹QStringdirPath=QCoreApplication::applicationDirPath();QStringpath=QDir::cleanPath(dirPath+QDir::separator()+"test.txt");qDebug()<<"Filepath:"<<path;......