部署完Ceph集群之后,如何在Ceph集群中存储文件呢?ceph提供了三种接口供用户使用,分别是:
前面我们使用 ceph-deploy 搭建了 Ceph 集群,本文我们将学习使用 Ceph 集群创建资源池,创建RBD 块以及 RBD 块的使用。
###ceph的rbd是可以进行调节大小的,但是调节需要进行一些操作,否则你看不到调节之后的效果,等于没调节,因为rbd就相当一块硬盘,但是文件系统一经初始化,分派的总容量大小、块大小 inode数量就定了,再去调节,势必要对sb分区进行重新才可以。 ###当然调节的方法要看具体的文件系统才能判断使用相应的工具
ceph简介 Ceph是一个PB级别的分布式软件定义存储系统,为用户提供了块存储、对象存储以及符合POSIX标准的文件系统接口。目前,Ceph已经成为Openstack最受欢迎的后端存储系统。下图为c
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aixiaoyang168/article/details/78999851
细节决定一切 网上很多文档默认都是只安装ceph-common然后直接rbd来跑ceph的rbd。 其实ceph的rbd块设备本地映射有两种方式: 盗个图(http://www.zphj1987.com/2016/05/19/ceph%E7%9A%84jewel%E6%96%B0%E6%94%AF%E6%8C%81%E7%9A%84rbd-nbd/):
服务相关: stemctl 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服务 sudo systemctl start ceph-o
基于主机安装或基于Kubernetes安装的 Rainbond 集群(均使用默认参数安装),默认使用的共享文件存储是 NFS ,以 Pod 方式运行在 Kubernetes 中,但这种方式也有一些无法避免的问题,比如:NFS 的 SVC 无法通信时集群无法挂载存储则导致不能使用、服务器关机时卡在 umount 导致不能正常关机等等。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aixiaoyang168/article/details/79120095
docker本身设计之初是用来执行一个app,抑或是一个应用程序,在其运行结束后,将销毁一切数据,但是这明显不是我们想要的,docker也 想到了这个,因此其本身提供一个-v的参数,用来将外部的存储挂载到container中,用来保存我们的持久化的数据。kubernetes最为其集群 管理工具,自然也想到了这些,而且还提供了更强大的功能,基于其插件化的设计,kubernetes针对volume的driver支持是十分丰富的。本 文就简单描述几个driver的设计思想和使用方法:
ceph块设备,以前称为RADOS块设备,为客户机提供可靠性、分布式和高性能的块存储磁盘。RADOS块设备利用librbd库并以顺序的形式在ceph集群的多个osd上存储数据块。RBD是由ceph的RADOS层支持,因此每个块设备都分布在多个ceph节点上,提供了性能和优异的可靠性。RBD有linux内核的本地支持,这意味着RBD驱动程序从过去几年就与linux内核集成的很好。除了可靠性和性能外,RBD还提供了企业特性,例如完整和增量快照、瘦配置、写时复制克隆、动态调整大小等,RBD还支持内存缓存,这大大提高了性能。
服务相关: stemctl 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服务 sudo systemctl start ceph-
1、查看rbd模块:modinfo rbd 2、加载rbd模块:modprobe rbd 3、创建10GB块设备:rbd create test_img --size 10240 4、查看创建的块设备:rbd list /// rbd info test_img 5、把test_image块设备映射到操作系统:rbd map test_img 6、查看系统中已经映射的块设备:rbd showmapped 7、取消块设备映射:rbd unmap devrbd0 -------------rdb创建过程-------------------------------- 8、rados mkpool poolname 9、rados lspools 10、rbd create poolname/image1 --size 10240 --image-format 2 11、查看:rdb ls poolname 12、查看image:rbd info poolname/image1 13、//在创建image时指定object对象大小,默认4KB rbd create poolname/image2 --size 10240 --order 24 --image-format 2 24的意思:2的24次方,16MB 14、//删除image rbd rm poolname/image2 15、//创建快照:rbd snap create poolname/image1@image1_snap 16、查看:rbd snap list poolname/image1 17、克隆:rbd snap protect poolname/image1@image1_snap rbd clone poolname/image1@image1_snap rbd/image2 //把分层的image独立出来:rbd flatten rbd/image2 18、导出image:rbd export poolname/image1 tmpimage1_export 导入:rbd import tmpimage1_export poolname/image3 --image-format 2
4.rbd cp aaa.img bbb.img 拷贝镜像aaa.img为bbb.img
Cluster A & B仍然是独立的Ceph集群,通过RBD的snapshot机制,在Cluster A端,针对image定期通过rbd创建image的snap,
原因:2017年5月4日 星期四 理解Ceph。 说明:阅读书籍。 官方文档:http://docs.ceph.com/docs/master/rbd/rbd-openstack/ 块存储、文件储存、对象存储:http://limu713.blog.163.com/blog/static/15086904201222024847744/ 可靠性、低成本、可扩展 SDS(软件定义存储-softwate defined storage) SDS可以降低存储基础设施的TCO(Total Cost of O
Ceph,作为一个高度可扩展的分布式存储系统,已经成为云计算和大数据时代的关键基石。随着企业和组织对数据存储的需求日益增长,Ceph 通过其强大的特性,如可靠性、伸缩性和性能,满足了这些需求。然而,随着集群规模的扩大和工作负载的多样性,如何确保资源的有效分配和性能隔离成为了一个重要议题。在这个背景下,Ceph 的 Quality of Service (QoS) 功能显得尤为重要。
RBD Mirror原理其实和MySQL的主从同步原理非常类似,前者基于journaling,后者基于binlog,简单地说就是利用日志进行回放(replay):通过在存储系统中增加Mirror组件,采用异步复制的方式,实现异地备份。(此处的journal是指Ceph RBD的journal,而不是OSD的journal)
RBD 的 mirroring 功能将在Jewel中实现的,这个Jewel版本已经发布了很久了,这个功能已经在这个发布的版本中实现了,本来之前写过一篇文章,但是有几个朋友根据文档配置后,发现还是有问题,自己在进行再次配置的时候也发现有些地方没讲清楚,容易造成误解,这里对文档进行再一次的梳理
请注意,本文档假设 Ceph 和 OpenStack 环境已经可用,在此基础上,配置 OpenStack 使用 Ceph RBD 作为镜像和卷的后端存储。
k8s默认使用的本地存储,集群容灾性差,ceph作为开源的分布式存储系统,与openstack环境搭配使用,已经很多云计算公司运用于生产环境,可靠性得到验证。这里介绍一下在k8s环境下ceph如何使用.
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
参考文档 http://docs.ceph.com/docs/master/start/quick-start-preflight/#rhel-centos https://www.linuxidc.com/Linux/2017-09/146760.htm http://s3browser.com/ http://docs.ceph.org.cn/man/8/rbd/ https://hub.packtpub.com/working-ceph-block-device/# https://github.co
通过Librbd调用ceph,测试rbd创建删除操作 # -*- coding: utf-8 -*- """ @Time : 2022/2/28 10:07 @Author : summer @File : test_librbd.py @Software: PyCharm """ import rados, rbd def main(): try: cluster = rados.Rados(conffile='/etc/ceph/ceph.conf')
在系列文章的第三篇中,讲到了如何使用 PV 和 PVC 挂载 RBD 上建立好的块存储镜像,但这还是不足以满足 cloud native 环境下的需求,试想如果部署一个应用,需要申请十个 RBD images,PV 和 PVC 的方式下,就需要先手动在 ceph 集群上部署十个 image,这在实际操作时,是完全不可接受的,就算用 Webhook 机制调用脚本自动执行,也会存在一些问题,比如何时释放 RBD image,而且这样也增加了系统的复杂度,更易出错,所以最好是有 Kubernetes 的原生的解决方案。而 Kubernetes 确实提供这样的解决方案,就是本文要谈到的 StorageClass。
意思就是说该Pod启动需要挂载PVC,但是这个PVC目前正被使用。可以确定的是除了这个Deployment之外,没有其他Deployment在使用这个PVC,那这是为什么呢?
之前有个想法,是不是有办法找到rbd中的文件与对象的关系,想了很久但是一直觉得文件系统比较复杂,在fs 层的东西对ceph来说是透明的,并且对象大小是4M,而文件很小,可能在fs层进行了合并,应该很难找到对应关系,最近看到小胖有提出这个问题,那么就再次尝试了,现在就是把这个实现方法记录下来 这个提取的作用个人觉得最大的好处就是一个rbd设备,在文件系统层被破坏以后,还能够从rbd提取出文件,我们知道很多情况下设备的文件系统一旦破坏,无法挂载,数据也就无法读取,而如果能从rbd中提取出文件,这就是保证了即使文件系统损坏的情况下,数据至少不丢失
对于这个问题,我原来的理解也是:对象默认设置的大小是4M一个,存储下去的数据,如果小于4M,就会占用一个小于4M的对象,如果超过4M,那么存储的数据就会进行拆分成多个4M,这个地方其实是不严谨的
本文详细介绍了如何在 Kubernetes 集群中部署 ceph-csi(v3.1.0),并使用 RBD 作为持久化存储。
那就会出现目录/data/rbd1目录下的文件目录结构丢失的请求,这种肯定是/data/rbd1文件系统的inode链接数数据被损坏所致。奇怪的现象就来了
原文链接:http://docs.ceph.com/docs/master/rbd/rbd-openstack/
1.说明 1.1介绍 RBD全称RADOS block device,是Ceph对外提供的块设备服务。 2. 常用操作 2.1 查看pool里所有镜像 $ rbd ls rbd 03aa248c-0de5-45e5-9c2b-5fe26b230275 97ee910f-8427-4b58-9b6a-4ed3df7049d0 a-0124fc5c-02e2-40b8-a05f-101da2f7d9a8 a-289320f4-ae8e-49e6-89f7-deec439a3831 a-44750fdc-6202
RBD 是 Ceph 的块存储方案,最近需要在一台 Linux 服务器上挂载 Ceph 镜像,做法和 Kubernetes 挂 RBD 很像,但部分操作由于 Kubernetes 在镜像中已经固化了,所以将这次完全自己控制的步骤记录下来,加深对 Ceph 挂载的理解。
teralytics是一家国外的大数据公司,这个是他们开源的ceph的备份的工具,在twitter上搜索相关信息的时候看到,觉得不错就拿来试用一番
PG数量的预估 集群中单个池的PG数计算公式如下:PG 总数 = (OSD 数 * 100) / 最大副本数 / 池数 (结果必须舍入到最接近2的N次幂的值)
今天介绍美国Scripps研究所Ian A. Wilson团队和中国香港大学Chris K. P. Mok团队合作在Science上发表的论文,该工作发现此前报道的针对SARS-CoV病毒具有中和活性的抗体CR3022, 其同样可以与导致COVID-19的SARS-CoV-2病毒发生交叉反应,这意味着具有相似基因组序列和结构的两种病毒可能在S蛋白受体结构(RBD)与上具有保守的抗原表位并被同一种抗体识别,,该研究对COVID-19冠状病毒抗体研究具有指导意义。
Ceph将数据副本分布到不同的硬件,从而有效地避免由于硬件故障而导致数据丢失的问题,得以实现数据的高可用性。然而,这种分布式存储机制也导致传统的基于存储复制或CDP技术难以用于Ceph来实现跨数据中心的数据复制和恢复。
多个行业(例如金融行业)越来越需要在主机上使用租户/用户提供的加密密钥以卷粒度加密数据。这是由国家法规和对安全性的日益重视所推动的。迄今为止,Ceph RBD 不提供任何此类解决方案,现有的替代方案是在 libRBD 之前添加一个加密层。此类解决方案的示例是使用 QEMU LUKS 加密或依赖 DM-Crypt。但是,在与 RBD 层中实现的存储功能接口时,使用 RBD 之上的加密层有局限性。当我们进行镜像克隆时,只有在父子节点使用相同的加密密钥加密时才会起作用。通过将加密向下移动到 libRBD,就可以灵活地使用 Ceph RBD 克隆了。
这个地方提示的很清楚了,不支持的属性0x3c,0x3c是16进制的数值,换算成10进制是3*16+12=60 60的意思是不支持:
上周解决pvc无法mount的问题,其实留了一个尾巴,当时只是知道由于未知的原因,AttachDetachController执行detach操作失败了。这周这个问题又出现了,这次追查了一下根源,这里记录下。
##前言 我使用xfs比较二一点,我是在ceph的rbd上直接格式化的xfs,所以ceph上的数据一般不会丢失,不过我的xfs是在docker内部进行的挂载,使用也是docker容器内使用,这里不得不说docker stop容器的时候还是相当的暴力,暴力到什么程度呢?xfs大多会在硬盘突然断电的情况下导致日志文件的写入损坏,故障往往就在这时发生,而docker stop容器和突然断电可以画上等号。最为悲催的是,我刚开始对xfs一无所知。ceph的rbd也是一知半解。而数据是万万不能丢失的,所以中间折腾了好长时间。
服务挂上rbd正常读写,经过很长时间之后再次发布就会出现timeout的错误,导致服务无法启动,但是如果强制把服务缩容到0,然后再发布改成1,这样就能启动成功,短时间内再次进行发布操作,rbd挂载 卸载又很正常了,故障再不会出现了
配置live-migration 修改/etc/libvirt/libvirtd.conf
经过pool,rbd,object、pg的层层映射关系,在PG这一层中,已经知道存储数据的3个OSD所在位置及主从关系。 客户端与primay OSD建立SOCKET 通信,将要写入的数据传给primary OSD,由primary OSD再将数据发送给其他replica OSD数据节点。
这周遇到了两个因pvc无法attach导致pod一直没法正常启动的问题,这里记录一下解决的过程。
1.在主集群创建Image的快照 2.导出主集群Image的全量快照 3.将导出的全量快照文件传输到备集群 4.备集群创建对应的pool/image 5.导入全量快照文件到备集群中 6.完成备份
前言 我们知道,FileStore是目前Ceph版本的默认存储方式(后续社区准备采用BlueStore)。 RDB是我们虚拟机使用Ceph的常用方式,Ceph是一个基于对象存储的分布式文件系统,在Ceph中,所有的文件都是对象,本文探讨在Ceph中的RDB在Ceph的实现原理和映射方式。 了解RBD的映射原理以后,对我们运维管理,数据恢复会有很大的帮助。 操作过程 1.创建pool 1. [root@centos7 ceph]# ceph osd pool create test 64 64 2. poo
领取专属 10元无门槛券
手把手带您无忧上云