Ceph一共使用了四个配置对可用存储空间进行校验并实施控制,如下: mon_osd_full_ratio:集群中的任一OSD空间使用率大于等于此数值时,集群将被标记为Full,此时集群将停止接受来自客户端的写入请求...; mon_osd_nearfull_ratio:集群中的任一OSD空间使用率大于等于此数值时,集群将会被标记为NearFull,此时集群将产生告警,并提示所有已经处于NearFull状态的OSD; osd_backfill_full_ratio...:OSD空间使用率大于等于此数值时,拒绝PG通过Backfill方式迁入或者继续迁入本OSD中; osd_failsafe_full_ratio:PG执行包含写操作的op时,防止所在OSD磁盘空间被100%
手头资源有限,所以这里先用三台机器组集群环境,用Proxmox VE再配合Ceph存储组成一个高可用的虚拟化平台,Proxmox VE的安装过程这里就不写了,实在是太简单了,将网上下载的proxmox-ve...当然,用户也可以配置外部的glusterfs、ceph、sheepdog等基于服务器的分布式存储。...glusterfs挂载后可以作为文件存储使用,ceph和sheepdog应该都只能作为卷存储使用了。 前面多次提到了文件存储和卷存储两个概念,又有什么区别呢?...本地磁盘-本地目录-文件存储 本地磁盘-lvm-卷存储 本地磁盘-zfs-卷存储/文件存储 本地磁盘-ceph-卷存储 外部存储-nfs-文件存储 外部存储-iscci/fc-lvm-卷存储 外部存储-...iscsi/fc-目录-文件存储 外部glusterfs-glusterfs插件挂载-文件存储 外部ceph-iscsi-卷存储 外部sheepdog-插件挂载-卷存储 #在每个节点上安装ceph,详见
1.问题描述 在OpenStack云环境的部署中,存储通常具备Thin provision的功能,这项功能实现了存储按需分配的能力。...但实际上,该文件在存储系统上占用的空间并没有释放。 当用户在文件系统中删除一个文件,并不会在块设备上的对应空间填0,而仅仅在磁盘的元数据结构中将这些block标记为未使用。...因此,虽然文件系统知道这些block是未使用或者说可用的,但是底层的存储系统并不知道文件系统做的操作,会认为这些block仍在使用。...因为从Ceph的角度讲,它并不知道文件系统中发生的事情。 2.解决办法 需要配置Nova和Glance支持virtio-scsi和discard。...比如,fstrim -v mountpoint,就会释放对应块设备上不用的空间。
问题描述 在OpenStack云环境的部署中,存储通常具备Thin provision的功能,这项功能实现了存储按需分配的能力。现在有这样一种场景,用户在文件系统中创建了大文件,使用完之后进行了删除。...但实际上,该文件在存储系统上占用的空间并没有释放。 当用户在文件系统中删除一个文件,并不会在块设备上的对应空间填0,而仅仅在磁盘的元数据结构中将这些block标记为未使用。...因此,虽然文件系统知道这些block是未使用或者说可用的,但是底层的存储系统并不知道文件系统做的操作,会认为这些block仍在使用。...因为从Ceph的角度讲,它并不知道文件系统中发生的事情。 解决办法 配置 需要配置Nova和Glance支持virtio-scsi和discard。...比如,fstrim -v mountpoint,就会释放对应块设备上不用的空间。
ceph对象存储 作为文件系统的磁盘,操作系统不能直接访问对象存储。相反,它只能通过应用程序级别的API访问。...ceph是一种分布式对象存储系统,通过ceph对象网关提供对象存储接口,也称为RADOS网关(RGW)接口,它构建在ceph RADOS层之上。...RGW为应用程序提供了一个RESTful S3/swift兼容的接口,用于在ceph集群中以对象的形式存储数据。ceph还支持多租户对象存储,可以通过RESTful API访问。...此外,RGW还支持ceph管理API,可以使用本机API调用来管理ceph存储集群。...librados软件库非常灵活,允许用户应用程序通过C、C++、java、python和php绑定直接访问ceph存储集群。ceph对象存储还具有多站点功能,即灾难恢复提供解决方案。
PV、PVC概述 管理存储是管理计算的一个明显问题。PersistentVolume子系统为用户和管理员提供了一个API,用于抽象如何根据消费方式提供存储的详细信息。...该API对象包含存储的实现细节,即NFS,iSCSI或云提供商特定的存储系统。 PersistentVolumeClaim(PVC)是用户存储的请求。 它类似于pod。...这个概念有时在其他存储系统中称为“配置文件” POD动态供给 动态供给主要是能够自动帮你创建pv,需要多大的空间就创建多大的pv。...kubernetes.io/rbd 1 91s 6、在 default 命名空间创建pvc用于访问ceph的 secret kubectl create...CephFS需要使用两个Pool来分别存储数据和元数据 1、如下操作在ceph的mon或者admin节点CephFS需要使用两个Pool来分别存储数据和元数据 ceph osd pool create
文件存储 ceph文件系统提供了任何大小的符合posix标准的分布式文件系统,它使用Ceph RADOS存储数据。...要实现ceph文件系统,需要一个正在运行的ceph存储集群和至少一个ceph元数据服务器(MDS)来管理其元数据并使其与数据分离,这有助于降低复杂性和提高可靠性。...Ceph FS使用cephfuse模块扩展到用户空间(FUSE)中的文件系统。它还允许使用libcephfs库与RADOS集群进行直接的应用程序交互。...只有Ceph FS才需要Ceph MDS,其他存储方法的块和基于对象的存储不需要MDS。Ceph MDS作为一个守护进程运行,它允许客户机挂载任意大小的POSIX文件系统。...NFS-ganesha是一个在用户空间中运行的NFS服务器,使用libcephfs支持Ceph FS文件系统抽象层(FSAL)。
1、列出存储池 ceph osd lspools 2、创建存储池 ceph osd pool create poolname pg-num pgp-num replicated crush-ruleset-name...crush-ruleset-name expected-num-objects //poolname 要唯一 3、设置存储池配额 ceph osd pool set-quota poolname...max-objects max-bytes 4、删除存储池 ceph osd pool delete poolname 5、重命名存储池 ceph osd pool rename {current-pool-name...} {new-pool-name} 6、存储池统计信息 rados df 7、存储池快照 ceph osd pool mksnap poolname snapname 8、删除存储池快照 ceph...osd pool rmsnap poolname snapname 9、查看存储池配置 ceph osd pool get poolname [key]
ceph2 ssh-copy-id ceph3 [root@ceph1 ~]# vim /etc/yum.repos.d/ceph.repo [ceph] name=Ceph packages for...mkdir /etc/ceph && cd /etc/ceph ceph-deploy new ceph1 ceph2 ceph3 yum install -y python-setuptools...install ceph1 ceph2 ceph3 ceph-deploy mon create-initial [root@ceph1 ceph]# ceph -s cluster:...ceph1 ceph2 ceph3 [root@ceph1 ceph]# ceph -s cluster: id: fcb2fa5e-481a-4494-9a27-374048f37113...rgw集群 ceph-deploy install --rgw ceph1 ceph2 ceph3 ceph-deploy admin ceph1 ceph2 ceph3 ceph-deploy rgw
最近我在kubernetes中使用了ceph的rbd及cephfs存储卷,遇到了一些问题,并逐一解决了,在这里记录一下。...ceph rbd存储卷扩容失败 第一个问题是某应用程序使用了ceph rbd存储卷,但随着时间的推移,发现原来pvc申请的存储空间不够用了,需要进行扩容。这里参考官方指引,进行了一些配置。...cephfs存储卷quota失效 项目里还有一些应用程序使用了cephfs的存储卷,但经过验证,发现pvc里设置的存储卷大小无效,应用程序可以随意往存储卷里写入大量数据,这就很危险了。...函数,以实现给创建的cephfs存储卷设置quota的。...验证一把,这下应用程序终于在受限的盒子里使用cephfs存储卷了。 真正的用户场景还是涉及cephfs存储卷的扩容,在网上找了下,发现已经有人实现了,文章在这里。
1.创建存储池 在ceph节点中执行如下语句。...分别填控制节点和计算节点IP。...如果显示在控制节点和计算节点中没有ceph文件夹,则在两节点中创建对应文件夹。...librbd的 Python 绑定 #yum install python-rbd 计算节点和控制节点进行安装 Python 绑定和客户端命令行工具 #yum install ceph-common...#ceph auth get-key client.cinder | ssh {your-compute-node} tee /etc/ceph/client.cinder.key 在计算节点上执行如下语句
),Ceph在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据的位置,尽量的分布均衡。...目前也是OpenStack的主流后端存储,随着OpenStack在云计算领域的广泛使用,ceph也变得更加炙手可热。...Ceph设计思想:集群可靠性、集群可扩展性、数据安全性、接口统一性、充分发挥存储设备自身的计算能力、去除中心化 Ceph架构介绍 架构如下: ?...其实就是块的大小和在 Ceph中实际占用大小是没有关系的,刚创建出来的块是不占空间,今后用多大空间,才会在 Ceph 中占用多大空间。...因此,对于高可用性系统,实际配置max_mds时,最好比系统中MDS的总数少一个。
本文目标:理解ceph存储流程,例如:当client向ceph集群中写入一个文件时,这个文件是如何存储到ceph中的,其存储过程是如何?...# ceph存储流程图 # ceph存储流程详解 File: 就是我们想要存储和访问的文件,这个是面向我们用户的,是我们直观操作的对象。...Object:object就是Ceph底层RADOS所看到的对象,也就是在Ceph中存储的基本单位。object的大小由RADOS限定(通常为2m或者4m)。...在ceph中,数据到底是在哪个osd是通过CRUSH算法计算出来的 # 查看一个Object的具体存放位置 # 1....进入到对应osd的存储目录,找到对应文件即可 root in iscloud163-200 in ceph-0/current/3.7_head ➜ pwd /var/lib/ceph/osd/ceph
OSD 进程是 Ceph 存储集群中的核心组件之一,负责将数据分散存储在多个节点和磁盘上,并提供高可用性、容错性和可靠性等特性。...每隔几秒钟,OSD 会停止向日志写入新的请求,以将 OSD日志的内容应用到后备存储,然后,它会修剪日志中的已提交请求,回收日志存储设备上的空间 当 Ceph OSD 或其存储服务器出现故障时,Ceph...ceph osd df:显示 OSD 的使用情况,包括总容量、已用空间、可用空间等信息。 ceph osd pool ls:列出所有的 OSD 数据存储池,包括数据存储池名称、ID 等信息。...ceph osd pool stats:显示 OSD 数据存储池的使用情况,包括存储池大小、已用空间、剩余空间等。...crush_rule 0:这是使用的 CRUSH 规则的编号,CRUSH 是 Ceph 集群用于计算数据位置的分布式算法,该规则规定了如何将数据分散到存储设备上。
1、安装Ceph对象网关 从管理节点的工作目录,在ceph_admin节点上安装 Ceph 对象网关软件包 ceph-deploy install --rgw ceph_admin ?...2、 ceph-deploy rgw create ceph_admin ? 3、通过7480端口来访问 http://10.20.10.215:7480/ ?...4、为S3访问新建一个RADOSGW用户 为了使用 REST 接口, 首先需要为 S3 接口初始化一个 Ceph 对象网关用户. 然后为 Swift 接口新建一个子用户.
全局Ceph节点宕机处理 在极端情况下,如数据中心断电,造成 Ceph 存储集群全局宕机,可以按照本节所示流程进行 Ceph 集群上电恢复操作。...ceph -w 使用 ceph-w 可查看集群运作输出,同步完毕后集群 health 应为HEALTH_OK 状态。...ceph -s 状态为HEALTH_OK ceph osd tree OSD 状态皆为UP 4.3 恢复使用指令及其说明 ceph -s : 确认 ceph cluster status ceph...-w : 查看集群运作输出 ceph osd tree : 查看ceph cluster上osd排列及状态 start ceph-all : 启动 所有 ceph service start ceph-osd-all...start ceph-mon id={hostname} : 启动指定 ceph monitor host ceph osd set noout : ceph stopping w/out rebalancing
单个Ceph节点宕机处理 在某些情况下,如服务器硬件故障,造成单台 Ceph 节点宕机无法启动,可以按照本节所示流程将该节点上的 OSD 移除集群,从而达到 Ceph 集群的恢复。...5.1 单台 Ceph 节点宕机处理步骤 登陆 ceph monitor 节点,查询 ceph 状态: ceph health detail 将故障节点上的所有 osd 设置成 out,该步骤会触发数据...recovery, 需要等待数据迁移完成, 同时观察虚拟机是否正常: ceph osd out osd_id 从 crushmap 将 osd 移除,该步骤会触发数据 reblance,等待数据迁移完成...,同时观察虚拟机是否正常: ceph osd crush remove osd_name 删除 osd 的认证: ceph auth del osd_name 删除 osd :ceph osd rm
testpool testobject testsnap1 # rados -p testpool ls testobject 在资源池testpool 中的对象数据testobject 的osd映射关系: ceph...查看数据存储的物理位置: 1、ceph osd tree 查看osd【5,4,6】其中一个所在的节点 2、ssh ceph-nodeN,进入该节点 #osd.5所在的node节点 3、df -h | grep...-i ceph-5找出该osd.5的物理存储位置 ,ceph-5是指osd.5 4、cd /var/lib/ceph/osd/ceph-5/current进入osd.5所在的物理存储文件夹 5、ls...-l |grep -i 6.31找出和PG(6.31)相关的文件夹 6、cd 6.31_head进入该PG文件夹 7、ls -l就可以看到我们存储的testobject数据的详细信息 vdbench vdbench...是存储性能测试的一个常用工具。
###前言 一直想弄对象存储,以前弄过一次,不是很理解region是个什么东西,后来时间和工作上的原因没有再折腾,这两天闲了下来,再次折腾了一次。我是参考的ceph的中文翻译文挡进行的部署和测试。...对象存储额外需要安装的包是:ceph-radosgw和ceph-common 安装完毕你的系统上应该至少存在三个命令:rados 、 radosgw 、 radosgw-admin 其中整个对象网关服务就是由...####关于region 对象存储设计考虑到数据中心区域的问题,这里的region就是区域的标识。比如中国西部数据中心,中国南方数据中心,不同的区域数据中心的bucket还可以异地同步(?...my-new-bucket', 'hello.txt', AmazonS3::ACL_PUBLIC); php sdk传送门 核心逻辑代码/services/s3.class.php ###终端玩转对象存储...在终端下要用s3对象存储,最好的工具无非是s3cmd,一般yum就可以直接安装下来,不过这玩意要注意版本,老版本的和最新的文档用法差别比较大。
相关软件包 1.1 安装软件包 PG数量的预估 集群中单个池的PG数计算公式如下:PG 总数 = (OSD 数 * 100) / 最大副本数 / 池数 (结果必须舍入到最接近2的N次幂的值) #在管理节点的工作目录下...,给 Ceph 对象网关节点安装Ceph对象所需的软件包 #ceph-deploy install --rgw [...ceph-xxx-osd03.gz01 [ceph_deploy.cli][INFO ] ceph-deploy options: [ceph_deploy.cli][INFO ] verbose...than once in the configuration [ceph-xxx-osd03.gz01][DEBUG ] Cleaning repos: Ceph Ceph-noarch base ceph-source...cd /etc/ceph/ $ ceph-deploy admin ceph-xxx-osd03.gz01 [ceph_deploy.conf][DEBUG ] found configuration