关于ceph:Ceph集群搭建篇

环境筹备ceph官网文档:https://docs.ceph.com/en/latest/ 本次搭建用到的测试机器,布局如下: 主机名IP数据盘ceph-node01192.168.11.135块1TB容量硬盘ceph-node02192.168.11.145块1TB容量硬盘ceph-node03192.168.11.155块1TB容量硬盘解下来在所有节点实现上面的筹备工作敞开防火墙、selinux、禁用swapsystemctl stop firewalldsystemctl disable firewalldsetenforce 0sed -i 's/enforcing/disabled/' /etc/selinux/configswapoff -ased -ri 's/.*swap.*/#&/' /etc/fstab在部署 Ceph 集群时,倡议将所有节点的替换分区(swap)禁用或调整到最小值。这是因为 Ceph 对于节点内存的需要较高,如果零碎中开启了 swap 分区,那么当内存不足时,零碎会将一些内存数据转储到 swap 中,这会导致性能降落和零碎不稳固。因而,禁用或调整 swap 分区大小能够确保零碎有足够的内存来反对 Ceph 的失常运行和性能。 配置阿里云yum源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bakcurl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repoyum makecache装置epelyum install epel-release -y装置dockerwget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo && yum -y install docker-ce && systemctl enable docker && systemctl start dockercat > /etc/docker/daemon.json << EOF{  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],  "exec-opts": ["native.cgroupdriver=systemd"]}EOFsystemctl restart docker装置lvm2、python3、ntpyum install lvm2 python3 ntpdate -y && ntpdate ntp1.aliyun.com部署ceph集群在每个节点装置Cephadm和ceph工具包# curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadmchmod +x cephadmmv cephadm /usr/local/bin/# 查看版本的同时会下载镜像quay.io/ceph/ceph:v15,倡议在这一步提前下载好,等会部署ceph集群和退出osd的时候,都要用到这个镜像# 在一台下载后能够导出散发到其余节点进行导入,省心省力。[root@ceph-node01 yum.repos.d]# cephadm versionceph version 15.2.17 (8a82819d84cf884bd39c17e3236e0632ac146dc4) octopus (stable) # 留神这个版本号octopus[root@ceph-node01 ~]# docker imagesREPOSITORY          TAG       IMAGE ID       CREATED        SIZEquay.io/ceph/ceph   v15       93146564743f   7 months ago   1.2GB# 装置对应版本号的相干软件包cephadm add-repo --release octopus && cephadm install ceph-common在第一个节点(ceph-node01)上,初始化Ceph集群和创立OSDcephadm bootstrap --mon-ip 192.168.11.13# 胜利后的输入:Ceph Dashboard is now available at:             URL: https://ceph-node01:8443/            User: admin        Password: 71w76yawguYou can access the Ceph CLI with:        sudo /usr/local/bin/cephadm shell --fsid 09588bf8-ce9d-11ed-b54e-0050563ecf1e -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyringPlease consider enabling telemetry to help improve Ceph:        ceph telemetry onFor more information see:        https://docs.ceph.com/docs/master/mgr/telemetry/Bootstrap complete.在创立实现后,您将看到输入中显示的管理员账号和明码,能够应用浏览器登录到web治理页面。 查看集群状态: [root@ceph-node01 ~]# ceph -s  cluster:    id:     cf322aa0-ce9d-11ed-a072-0050563ecf1e    health: HEALTH_WARN            OSD count 0 < osd_pool_default_size 3   services:    mon: 1 daemons, quorum ceph-node01 (age 16m)    mgr: ceph-node01.qzkggl(active, since 15m)    osd: 0 osds: 0 up, 0 in   data:    pools:   0 pools, 0 pgs    objects: 0 objects, 0 B    usage:   0 B used, 0 B / 0 B avail    pgs:     能够看到ceph集群曾经有一个节点ceph-node01,它负责了mon、mgr的角色,在我的布局中,也是要让ceph-node01节点作为osd角色的,它的osd数量目前为0,接下来咱们在ceph-node01上创立osd # 查看存储设备列表,它有5块盘[root@ceph-node01 ~]# ceph orch device lsHostname     Path      Type  Serial  Size   Health   Ident  Fault  Available  ceph-node01  /dev/sdb  hdd           1073G  Unknown  N/A    N/A    Yes        ceph-node01  /dev/sdc  hdd           1073G  Unknown  N/A    N/A    Yes        ceph-node01  /dev/sdd  hdd           1073G  Unknown  N/A    N/A    Yes        ceph-node01  /dev/sde  hdd           1073G  Unknown  N/A    N/A    Yes        ceph-node01  /dev/sdf  hdd           1073G  Unknown  N/A    N/A    Yes        # sda是系统盘,sdb-sdf打算用来做osd盘,通过查看目前的状态能够晓得,这5块盘还没有交由ceph治理[root@ceph-node01 ~]# lsblk NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda               8:0    0  500G  0 disk ├─sda1            8:1    0    2G  0 part /boot└─sda2            8:2    0  498G  0 part   ├─centos-root 253:0    0  122G  0 lvm  /  ├─centos-swap 253:1    0   16G  0 lvm    ├─centos-usr  253:2    0   60G  0 lvm  /usr  ├─centos-var  253:3    0  250G  0 lvm  /var  ├─centos-tmp  253:4    0   30G  0 lvm  /tmp  └─centos-home 253:5    0   20G  0 lvm  /homesdb               8:16   0 1000G  0 disk sdc               8:32   0 1000G  0 disk sdd               8:48   0 1000G  0 disk sde               8:64   0 1000G  0 disk sdf               8:80   0 1000G  0 disk # 接下来咱们创立新的OSD,间接通知Ceph应用任何可用和未应用的存储设备ceph orch apply osd --all-available-devices# 接着查看,sdb-sdf磁盘曾经交由ceph治理,并作为osd盘,[root@ceph-node01 ~]# lsblk NAME                                                                                                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda                                                                                                     8:0    0  500G  0 disk ├─sda1                                                                                                  8:1    0    2G  0 part /boot└─sda2                                                                                                  8:2    0  498G  0 part   ├─centos-root                                                                                       253:0    0  122G  0 lvm  /  ├─centos-swap                                                                                       253:1    0   16G  0 lvm    ├─centos-usr                                                                                        253:2    0   60G  0 lvm  /usr  ├─centos-var                                                                                        253:3    0  250G  0 lvm  /var  ├─centos-tmp                                                                                        253:4    0   30G  0 lvm  /tmp  └─centos-home                                                                                       253:5    0   20G  0 lvm  /homesdb                                                                                                     8:16   0 1000G  0 disk └─ceph--e445c08f--1564--443c--9f7c--de2772686c56-osd--block--91538bd9--a63e--4d2a--9283--8bc66f01726f 253:6    0 1000G  0 lvm  sdc                                                                                                     8:32   0 1000G  0 disk └─ceph--660d76c7--6f90--422e--baa2--ce8441bd8812-osd--block--1820432c--3ee3--4fb6--9c7f--682160c3b13b 253:7    0 1000G  0 lvm  sdd                                                                                                     8:48   0 1000G  0 disk └─ceph--0c0eaf4c--2b6f--45d9--a8a3--a6cac35b285d-osd--block--1f060c14--2dd7--4fdd--839f--9402616bf9fb 253:8    0 1000G  0 lvm  sde                                                                                                     8:64   0 1000G  0 disk └─ceph--60fceaeb--a0c7--45e5--babe--bd714884fbea-osd--block--7eb9b03a--ea87--4ab3--97f4--2c1dcf802930 253:9    0 1000G  0 lvm  sdf                                                                                                     8:80   0 1000G  0 disk └─ceph--8beea209--9020--4c91--b4a4--38b862de7cc0-osd--block--b224910e--7894--470b--8617--0b28c6a1add8 253:10   0 1000G  0 lvm  # 查看集群中的osd状态[root@ceph-node01 ~]# ceph osd statusID  HOST          USED  AVAIL  WR OPS  WR DATA  RD OPS  RD DATA  STATE       0  ceph-node01  1026M   998G      0        0       0        0   exists,up   1  ceph-node01  1026M   998G      0        0       0        0   exists,up   2  ceph-node01  1026M   998G      0        0       0        0   exists,up   3  ceph-node01  1026M   998G      0        0       0        0   exists,up   4  ceph-node01  1026M   998G      0        0       0        0   exists,up  将另外2个节点增加到集群和创立OSD(在ceph-node01节点上操作)# 下发ceph集群的公钥和增加节点ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.11.14ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.11.15ceph orch host add ceph-node02 192.168.11.14ceph orch host add ceph-node03 192.168.11.15ceph-node02和ceph-node03退出ceph集群后,会主动将任何可用和未应用的存储设备作为osd盘当然也能够手动指定从特定主机上的特定设施创立OSD,命令如下: ceph orch daemon add osd 192.168.11.14:/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde,/dev/sdfceph orch daemon add osd 192.168.11.15:/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde,/dev/sdf至此,ceph集群曾经搭建实现。实现后,查看集群状态、osd状态、集群应用状况[root@ceph-node01 ~]# ceph -s  cluster:    id:     cf322aa0-ce9d-11ed-a072-0050563ecf1e    health: HEALTH_OK   services:    mon: 3 daemons, quorum ceph-node01,ceph-node03,ceph-node02 (age 7m)    mgr: ceph-node01.qzkggl(active, since 34m), standbys: ceph-node02.ioyzpg    osd: 15 osds: 15 up (since 6m), 15 in (since 6m)   data:    pools:   1 pools, 1 pgs    objects: 0 objects, 0 B    usage:   15 GiB used, 15 TiB / 15 TiB avail    pgs:     1 active+clean [root@ceph-node01 ~]# ceph osd statusID  HOST          USED  AVAIL  WR OPS  WR DATA  RD OPS  RD DATA  STATE       0  ceph-node01  1030M   998G      0        0       0        0   exists,up   1  ceph-node01  1030M   998G      0        0       0        0   exists,up   2  ceph-node01  1030M   998G      0        0       0        0   exists,up   3  ceph-node01  1030M   998G      0        0       0        0   exists,up   4  ceph-node01  1030M   998G      0        0       0        0   exists,up   5  ceph-node02  1030M   998G      0        0       0        0   exists,up   6  ceph-node02  1030M   998G      0        0       0        0   exists,up   7  ceph-node02  1030M   998G      0        0       0        0   exists,up   8  ceph-node02  1030M   998G      0        0       0        0   exists,up   9  ceph-node02  1030M   998G      0        0       0        0   exists,up  10  ceph-node03  1030M   998G      0        0       0        0   exists,up  11  ceph-node03  1030M   998G      0        0       0        0   exists,up  12  ceph-node03  1030M   998G      0        0       0        0   exists,up  13  ceph-node03  1030M   998G      0        0       0        0   exists,up  14  ceph-node03  1030M   998G      0        0       0        0   exists,up  [root@ceph-node01 ~]# [root@ceph-node01 ~]# ceph df--- RAW STORAGE ---CLASS  SIZE    AVAIL   USED     RAW USED  %RAW USEDhdd    15 TiB  15 TiB  104 MiB    15 GiB       0.10TOTAL  15 TiB  15 TiB  104 MiB    15 GiB       0.10 --- POOLS ---POOL                   ID  PGS  STORED  OBJECTS  USED  %USED  MAX AVAILdevice_health_metrics   1    1     0 B        0   0 B      0    4.6 TiB[root@ceph-node01 ~]# 登录ceph web治理页面看看: ![图片]() 写在最初对于工夫同步 在 Ceph 集群中,每台节点的工夫同步十分重要,因为 Ceph 集群的各个组件都须要严格的工夫同步能力失常运行。以下是一些重要起因:防止数据不统一:Ceph 集群中的数据正本散布在不同的节点上,如果节点之间的工夫不同步,可能会导致写操作的数据不统一,或者无奈正确地读取数据。防止时钟漂移:因为硬件和软件的起因,每个节点的时钟可能会呈现漂移。如果这种漂移超过了肯定的阈值,可能会导致 Ceph 零碎无奈失常工作。防止锁竞争问题:Ceph 集群中的许多组件都应用锁来管制拜访资源的程序。如果节点之间的工夫差别太大,可能会导致锁竞争问题,从而影响零碎的性能。因而,确保每台节点的工夫同步是 Ceph 集群稳定性和可靠性的重要保障。能够通过应用 NTP(网络工夫协定)或其余工夫同步工具来实现工夫同步。在本次搭建中,同步的是公网阿里云的工夫服务器。须要留神的是,如果在生产环境,还要配置定期可能主动同步,本次只是测试,所以就不配置了,如果是生产环境且不能出外网的机器,还要确保本地有NTP服务器。对于mon节点的数量一个典型的 Ceph 集群官网倡议部署3个或5个监控守护过程(MON),散布在不同的主机上。因为 MON 负责保护 Ceph 集群的状态信息,包含存储池和 OSD 的映射关系、客户端的连贯信息等,它们须要进行定期的状态信息替换和协调。如果某个 MON 产生故障,那么其余的 MON 能够协同工作来保护集群的状态信息。一般来说,部署更多的 MON 能够进步集群的可靠性和容错性,因为它们能够更好地协同工作来保护集群的状态信息。同时,部署更多的 MON 还能够进步集群的性能,因为它们能够更好地分担状态信息替换的负载。 倡议在 Ceph 集群中至多部署五个或更多的 MON,以进步集群的可靠性、容错性和性能。本文转载于WX公众号:不背锅运维(喜爱的盆友关注咱们):https://mp.weixin.qq.com/s/YzuaRf2ZABFIU7Wkyro4vw

April 24, 2023 · 1 min · jiezi

关于ceph:云原生存储解决方案RookCeph与Rainbond结合的实践

根底不牢,地动山摇。无论是何种体系架构,底层存储的抉择都是一个值得探讨的话题。存储承载着业务的数据,其性能间接影响到业务利用的理论体现。也正因为存储和业务的数据关联严密,其可靠性也必须失去关注,存储的生效一旦导致业务数据失落,那将会是一场劫难级别的事变。1. 云原生时代的存储抉择之路最近几年,我的工作内容始终围绕着客户 Kubernetes 集群的建设。如何为客户的 Kubernetes 集群抉择一款稳固牢靠、性能体现优异的存储解决方案,这样的问题始终困扰着我。 存储卷能够在 Pod 漂移到其余节点后从新挂载这一最根底的功能性要求,让我一开始就把眼光放在了共享文件系统这一存储类型上。最开始抉择了 Nfs,到起初又投入了 Glusterfs 的怀抱,直到最近开始致力摸索其余更好的云原生存储解决方案,这一路走来也让我对各种存储有了肯定的理解。它们各自有着本人的特点: Nfs:Nfs 是一种老牌的基于网络共享文件的存储解决方案。它的长处是简略高效。它的毛病也比拟显著,服务端单点故障,数据没有复制机制。在某些对可靠性要求不高的场景下,Nfs仍然是不二之选。Glusterfs:这是一种开源的分布式共享存储解决方案。绝对于 Nfs 而言,Gfs 通过多正本复制集晋升了数据的可靠性,增加 Brick 的机制也让存储集群的扩大不再受限于一台服务器。Gfs 一度是我部在生产环境下的首选,通过将复制因子设置为 3 ,保障了数据的可靠性的同时,又可能防止分布式系统下的数据脑裂的问题。随同 Gfs 一起后退了很久之后,咱们也发现了它在密集小文件读写场景下的性能短板。而且繁多的共享文件系统类型的存储,也慢慢不再满足咱们的应用场景须要。咱们在寻找更适合的存储这一道路上始终没有进行摸索。这两年云原生概念煊赫一时,社区中不断涌现进去各种云原生畛域我的项目,其中也不乏存储相干的我的项目。最开始,咱们将眼光放在 Ceph 身上,它最吸引咱们的是能够提供高性能的块设施类型存储。然而被其简单的部署形式、较高的运维门槛一度劝退。而 CNCF 毕业我的项目 Rook 的呈现,终于铲平了接触 Ceph 的最初一道门槛。 Rook 我的项目提供了一种云原生存储编排工具,为各种类型的存储提供平台级、框架级的反对,统管了存储软件的装置、运维。Rook 在 2018 年公布的 0.9 版本中,正式将 Ceph Operator 作为稳固反对的个性,迄今曾经数年。应用 Rook 部署和治理生产级别的 Ceph 集群还是十分持重的。 绝对于 Gfs ,Rook-Ceph 提供了性能极高的块设施类型存储,这相当于为 Pod 挂载了一块硬盘,应答密集小文件读写场景并非难事。Rook-Ceph 除了可能提供块设施类型存储之外,也能够基于 Cephfs 提供分布式共享存储,以及基于 S3 协定的对象存储。多种存储类型对立治理,并提供了可视化治理界面,对于运维人员十分敌对。 作为 CNCF 毕业我的项目,Rook-Ceph 对云原生场景的反对毋庸置疑。部署实现的 Rook-Ceph 集群提供了 CSI 插件,以 StorageClass 的模式面向 Kubernetes 供给数据卷,对于兼容 CSI 标准的各类云原生 PaaS 平台也十分敌对。 ...

June 14, 2022 · 2 min · jiezi

关于ceph:CEPH初识篇ceph详细介绍搭建集群及使用带你认识新大陆

@[toc] 前言你好,我是无名小歌。明天给大家分享一个分布式存储系统ceph。 简介(实践篇)什么是ceph?Ceph在一个对立的零碎中独特地提供对象、块和文件存储。Ceph 高度牢靠、易于治理且收费。Ceph 的弱小性能能够扭转您公司的 IT 基础架构和治理大量数据的能力。Ceph 提供了不凡的可扩展性——数以千计的客户端拜访 PB 到 EB 的数据。ceph存储集群互相通信以动静复制和重新分配数据。 为什么应用ceph?目前泛滥云厂商都在应用ceph,利用宽泛。如:华为、阿里、腾讯等等。目前炽热的云技术openstack、kubernetes都反对后端整合ceph,从而进步数据的可用性、扩展性、容错等能力。一个 Ceph 存储集群至多须要一个 Ceph Monitor(监视器)、Ceph Manager(治理) 和 Ceph OSD(对象存储守护过程)。MonitorsCeph Monitor ( ceph-mon) 保护集群状态的映射,包含监视器映射、管理器映射、OSD 映射、MDS 映射和 CRUSH 映射。这些映射是 Ceph 守护过程互相协调所需的要害集群状态。监视器还负责管理守护过程和客户端之间的身份验证。冗余和高可用性通常须要至多三个监视器。ManagersCeph Manager守护过程 ( ceph-mgr) 负责跟踪运行时指标和 Ceph 集群的以后状态,包含存储利用率、以后性能指标和零碎负载。高可用性通常须要至多两个管理器。Ceph OSD一个Ceph OSD(ceph-osd)存储数据、解决数据复制、复原、从新均衡,并通过查看其余 Ceph OSD 守护过程的心跳来向 Ceph 监视器和管理器提供一些监督信息。冗余和高可用性通常须要至多三个 Ceph OSD。MDSCeph 元数据服务器(MDS ceph-mds) 代表Ceph 文件系统存储元数据(即 Ceph 块设施和 Ceph 对象存储不应用 MDS)。Ceph 元数据服务器容许 POSIX 文件系统用户执行根本命令(如 ls、find等),而不会给 Ceph 存储集群带来微小累赘。 Ceph 将数据作为对象存储在逻辑存储池中。应用 CRUSH算法,Ceph 计算出哪个归置组应该蕴含该对象,并进一步计算出哪个 Ceph OSD Daemon 应该存储该归置组。CRUSH 算法使 Ceph 存储集群可能动静扩大、从新均衡和复原。 ...

June 4, 2022 · 10 min · jiezi

关于ceph:Cephfs的MDS侧元数据池和mdcache存储数据结构分析

一,元数据池中的数据结构1,DirCephfs 的元数据池中次要寄存着目录dir或目录决裂后的分片对象,数据池中寄存着文件的对象(依据偏移能够划分多个)。 查看名为vdb.1_1.dir(目录下有100万个文件)的目录的inode号为1099511627788,转换为16进制为1000000000C 通过inode号在metapool里搜到513个对象,去掉原目录1000000000c.00000000,能够看到该目录存在512个目录分片,每个分片由inode号1000000000c和分片号frag_t(32位)组成,前8位示意有效位数,前面24位为value值,这里前8位为09示意value前9位无效。每一个目录分片在元数据池中作为一个dir对象存在。 [root@node2 cephfs]# rados -p cephfs-metadata ls 2,Dentry和Inode组织构造通过查看元数据池中目录分片的内容,咱们能够看到对应dir对象中存在的文件的dentry和inode信息,以1000000000c.09640000分片为例,如下可见dir对象中寄存的items map记录治理的目录项dentry, 每一个目录或文件的dentry信息以key-value键值对的模式存在dir中。 [root@node2 testSetattr]# rados -p cephfs-metadata listomapvals 1000000000c.09640000 以文件vdb_f0033为例,在其所在的分片1000000000c.09640000中,key是以文件名_head的模式存在,value外面寄存着对应文件的元数据inode信息(蕴含inode号,如上图红框所示为1000000002D,小端模式须要倒着看。从数据池中能找到这个对象,对象的名称为文件的inode号.编号(总大小/对象大小object_size个),对象存的数据多了就依据偏移拆成多个) 咱们目前的目录vdb.1_1.dir的上级文件的元数据信息就全副找到了,依照元数据的组织构造,不论是文件或者目录,其inode信息和dentry都寄存在其下级目录dir(或者对应分片)的items map之内。 以vdb.1_1.dir为例,其父目录为testSetattr,inode号为109951163887,转成16进制为10000002B59。查看10000002b59.00000000对象能够找到vdb.1_1.dir的元数据信息。 [root@node3 cephfs]# rados -p cephfs-metadata listomapvals 10000002b59.00000000 因为testSetattr目录下级目录就是文件系统根目录,所以其inode信息寄存在根目录的dir对象中(根目录的inode号为1),通过以下命令查到[root@node3 cephfs]# rados -p cephfs-metadata listomapvals 1.00000000 而针对于根目录的inode信息,寄存在1.00000000.inode对象当中。 二,内存对象中的构造 大体的内存组织构造借用上图示意,上面具体介绍: 1,DirCInode          *inode;  // my inodefrag_t           frag;   // my frag...dentry_key_map  items;Dir内存构造次要是其本身的inode索引和以后的分片号,以及存在其中的dentry 列表items,具体参数见Dir.h。通过CDir::fetch()读取metapool中的数据,填充本人的CDir::items,从而在内存初中创立相应的dentry和inode构造。 2,Dentry 简要地说,dentry的内存构造次要蕴含对应文件或目录的名字mempool::mds_co::string name,其归属的目录或者分片CDir *dir,以及链接的inode信息linkage_t linkage,链接linkage蕴含inode或remote inode(跟硬链接无关)索引。 3,Inode Inode的数据结构较为简单,次要变量CDentry *parent(失常链接的primary dentry)和remote_parents(硬链接应用),指向其所链接的dentry,dirfragtree是以后inode为dir的状况下指向对应目录分片。次要信息存在其继承的InodeStoreBase类中,其蕴含了具体inode信息所在的inode_t(即mempool_inode构造),和对应文件或目录的扩大属性xattr,inode_t则蕴含了传统inode的元数据信息,包含ctime、mtime、mode、uid、gid等等具体的属性信息。

May 10, 2022 · 1 min · jiezi

关于ceph:Cephfs数据池数据对象命名规则解析

家喻户晓,cephfs的数据和元数据是拆散的,处于不同的pool池外头,而无论是rgw、cephfs、rbd底层的数据池的存储都是基于RADOS(Reliable Autonomic Distributed Object Store),Ceph存储集群的根底,RADOS层的一切都是以对象的模式存储着的,无论下层是文件、对象还是块。 次要说说cephfs的文件在数据池中是如何散布的,上面以cephfs的内核客户端为例进行剖析。 以下图文件为例,先找到这个文件的inode号1099511627776,转换为16进制为10000000000,从数据池中找到这个对象,对象的名称为文件的inode号.编号(数据地位/对象大小object_size(默认4M),从0开始编号) Cephfs读数据转换osd申请struct ceph_file_layout {    /* file -> object mapping */    u32 stripe_unit;   /* stripe unit, in bytes */    u32 stripe_count;  /* over this many objects */    u32 object_size;   /* until objects are this big */    s64 pool_id;        /* rados pool id */    struct ceph_string __rcu *pool_ns; /* rados pool namespace */};文件的layout的属性,位于每个文件的inode属性中,是用来计算文件理论对象散布的条件。 客户端(linux内核客户端)位于文件的扩大属性xattr当中,通过set_xattr流程(客户端入口函数__ceph_setxattr和服务端mds入口函数为Server::handle_client_setxattr)进行批改。 ...

May 10, 2022 · 1 min · jiezi

关于ceph:调整ceph集群镜像源

Ceph在阿里云镜像源地址https://mirrors.aliyun.com/ceph/有时候从ceph默认下载时下载较慢,能够替换成阿里云镜像源yum源初始化筹备建设ceph.repo文件将扭转镜像源并且不会主动切回默认镜像地址须要在所有节点上配置好阿里云的镜像源具体位置在/etc/yum.repos.d/下新建一个ceph.repo [Ceph]name=Ceph packages for $basearchbaseurl=https://mirrors.aliyun.com/ce...$basearchenabled=1gpgcheck=1type=rpm-mdgpgkey=https://mirrors.aliyun.com/ce... [Ceph-noarch]name=Ceph noarch packagesbaseurl=https://mirrors.aliyun.com/ce...enabled=1gpgcheck=1type=rpm-mdgpgkey=https://mirrors.aliyun.com/ce... [ceph-source]name=Ceph source packagesbaseurl=http://mirrors.aliyun.com/cep...enabled=1gpgcheck=1type=rpm-mdgpgkey=https://mirrors.aliyun.com/ce...

February 28, 2022 · 1 min · jiezi

关于ceph:ragosgwadmin4j-sdk调用ceph集群报404-not-found错误

1.问题 2.问题所在运维共事提供的ceph集群有问题,换个集群地址就能够了,我的代码没有问题。

June 18, 2021 · 1 min · jiezi

关于ceph:干货丨Ceph-日常运维常见难点及故障解决

本文转自twt社区。 【导读】Ceph 日常运维中有几类常见问题,社区日前组织Ceph领域专家进行了线上的答疑交换,对社区会员提出的局部典型问题进行了分享解答,以下是分享内容,心愿能为大家提供答案和一些参考。 Ceph是一个牢靠地、主动重平衡、主动复原的分布式存储系统,依据场景划分能够将Ceph分为三大块,别离是对象存储、块设施存储和文件系统服务。在虚拟化畛域里,比拟罕用到的是Ceph的块设施存储,比方在OpenStack我的项目里,Ceph的块设施存储能够对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比拟直观的是Ceph集群能够提供一个raw格局的块存储来作为虚拟机实例的硬盘。 Ceph相比其它存储的劣势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的地位,尽量将数据分布平衡,同时因为Ceph的良好设计,采纳了CRUSH算法、HASH环等办法,使得它不存在传统的单点故障的问题,且随着规模的扩充性能并不会受到影响。 企业在理论Ceph遇到的五大问题: 一、扩容问题 Ceph中数据以PG为单位进行组织,因而当数据池中退出新的存储单元(OSD)时,通过调整OSDMAP会带来数据重均衡。正如提到的,如果波及到多个OSD的扩容是可能导致可用PG中OSD小于min_size,从而产生PG不可用、IO阻塞的状况。为了尽量避免这种状况的呈现,只能将扩容粒度变小,比方每次只扩容一个OSD或者一个机器、一个机柜(次要取决于存储隔离策略),然而这样注定会带来极大的运维工作量,甚至连扩容速度可能都赶不上数据增长速度。 二、数据迁徙过程中的IO争用问题 在频繁数据迁徙过程中带来的IO争用问题。当集群规模变大后,硬盘损坏、PG数量裁减可能会变得常态化。 三、PG数量调整问题 在解决了数据迁徙过程中的PG可用性问题和IO争用问题后,提到的PG数量调整问题天然也就解决了。 四、集群利用率问题 存储老本问题次要是讲集群可用率问题,即:Ceph集群规模增大后,伪随机算法导致了存储资源散布不平衡,磁盘利用率方差过大的问题。 五、运维复杂度问题 Ceph自身是一个十分复杂的体系,要做到稳固运维十分看重团队的实力。 以下是一些典型问题解答,欢送参考: 1、PG和PGP的区别是什么?调整 PGP 会不会引起 PG 内的对象的决裂? @Lucien168: 首先来一段英文对于PG和PGP区别的解释: PG = Placement Group PGP = Placement Group for Placement purpose pg_num = number of placement groups mapped to an OSD When pg_num is increased for any pool, every PG of this pool splits into half, but they all remain mapped to their parent OSD. ...

May 27, 2021 · 3 min · jiezi

关于ceph:ceph安装过程遇到的问题

1.执行名称ceph-deploy new node2,报错: bash: python2: command not found[ceph_deploy][ERROR ] RuntimeError: connecting to host: node2 resulted in errors: IOError cannot send (already closed?)起因是node2上没有装置python2,通过命令apt install python-minimal装置即可。 2.

March 4, 2021 · 1 min · jiezi

关于ceph:cephrbd-高级功能

RBD回收站机制(TRASH)回收站就是将你的数据放在回收站,失常的 rbd image 一旦删除了就没了,然而ceph rbd 提供了回收站形式给你反悔的机会,能够自定义设置保留日期.创立镜像rbd create ceph-demo/ceph-trash.img --size 10G[root@node-1 ~]# rbd -p ceph-demo lsceph-trash.imgrbd-demo.img将镜像挪动到回收站回收后pool下将没有这个镜像rbd trash move ceph-demo/ceph-trash.img --expires-at 20200928--expires-at 设置指定的过期日期#查看回收站镜像[root@node-1 ~]# rbd trash -p ceph-demo ls16173ad6a4dc ceph-trash.img还原镜像[root@node-1 ~]# rbd trash restore ceph-demo/16173ad6a4dc[root@node-1 ~]# rbd -p ceph-demo lsceph-trash.imgrbd-demo.imgRBD镜像快照(SNAPSHOTS)快照是映像在某个特定工夫点的一份只读正本。 Ceph 块设施的一个高级个性就是你能够为映像创立快照来保留其历史。 Ceph 还反对分层快照,让你疾速、简便地克隆映像(如 VM 映像)。 Ceph 的快照性能反对 rbd 命令和多种高级接口,包含 QEMU 、 libvirt 、 OpenStack 和 CloudStack.创立快照rbd snap create ceph-demo/rbd-demo.img@snap_20200927#查看快照[root@node-1 ~]# rbd snap ls ceph-demo/rbd-demo.imgSNAPID NAME SIZE PROTECTED TIMESTAMP 4 snap_20200927 20 GiB Sun Sep 27 10:40:17 2020快照复原[root@node-1 ~]# rbd snap rollback ceph-demo/rbd-demo.img@snap_20200927Rolling back to snapshot: 100% complete...done.快照复原后数据仍然还是不存在的,因为复原后磁盘是离线状态,须要unmount而后从新挂载数据能够复原。 ...

September 27, 2020 · 2 min · jiezi

关于ceph:cephrbd使用

创立存储池ceph osd pool create ceph-demo 64 64#查看存储池ceph osd lspools查看存储池参数[root@node-1 ~]# ceph osd pool get ceph-demo pg_numpg_num: 64[root@node-1 ~]# ceph osd pool get ceph-demo pgp_numpgp_num: 64[root@node-1 ~]# ceph osd pool get ceph-demo sizesize: 3批改存储池参数ceph osd pool get ceph-demo pg_num 32ceph osd pool get ceph-demo pgp_num 32创立镜像rbd create -p ceph-demo --image rbd-demo.img --size 10G或者 rbd create ceph-demo/rbd-demo-1.img --size 10G[root@node-1 ~]# rbd -p ceph-demo lsrbd-demo.imgrbd-demo-1.img查看镜像详细信息root@node-1 ~]# rbd info ceph-demo/rbd-demo.imgrbd image 'rbd-demo.img': size 10 GiB in 2560 objects order 22 (4 MiB objects) snapshot_count: 0 id: 1134749f26f5 block_name_prefix: rbd_data.1134749f26f5 format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten op_features: flags: create_timestamp: Tue Sep 22 15:39:03 2020 access_timestamp: Tue Sep 22 15:39:03 2020 modify_timestamp: Tue Sep 22 15:39:03 2020删除镜像rbd rm ceph-demo/rbd-demo-1.img[root@node-1 ~]# rbd -p ceph-demo lsrbd-demo.img块设施映射rbd map ceph-demo/rbd-demo.imgrbd: sysfs write failedRBD image feature set mismatch. Try disabling features unsupported by the kernel with "rbd feature disable".In some cases useful info is found in syslog - try "dmesg | tail".rbd: map failed: (6) No such device or address下面有报错是因为有些个性centos7的内核不反对,所以须要关了 ...

September 25, 2020 · 3 min · jiezi

关于ceph:cephdeploy-搭建ceph集群

ceph集群搭建ceph组件介绍MON(monitor)Monitor在Ceph集群中扮演者管理者的角色,保护了整个集群的状态,是Ceph集群中最重要的组件。Mon保障集群的相干组件在同一时刻可能达成统一,相当于集群的领导层,负责收集、更新和公布集群信息。为了躲避单点故障,在理论的Ceph部署环境中会部署多个Mon,同样会引来多个Mon之前如何协同工作的问题。在一个规范的Ceph环境中。OSD理论存储数据的过程。通常一个OSD daemon绑定一个物理磁盘。Client write/read 数据最终都会走到OSD去执行write/read操作。RADOS(Reliable Autonomic Distributed Object Store, RADOS)RADOS是Ceph 存储集群的根底。Ceph 中的所有都以对象的模式存储,而RADOS 就负责存储这些对象,而不思考它们的数据类型。RADOS 层确保数据一致性和可靠性。对于数据一致性,它执行数据复制、故障检测和复原。还包含数据在集群节点间的recovery。Librados简化拜访RADOS的一种办法,目前反对PHP、Ruby、Java、Python、C和C++语言。它提供了Ceph 存储集群的一个本地接口RADOS ,并且是其余服务(如RBD 、RGW) 的根底,以及为CephFS 提供POSIX 接口。librados API 反对间接拜访RADOS ,使得开发者可能创立本人的接口来拜访Ceph 集群存储。RBDCeph块设施。对外提供块存储。能够像磁盘一样被映射、格式化曾经挂载到服务器上。反对snapshot(快照)及增量备份。RGWCeph对象网关,提供了一个兼容S3和Swift的restful API接口。RGW还反对多租户和Openstack的keyston身份验证服务。MDSCeph元数据服务器,跟踪文件层次结构并存储只供CephFS应用的元数据。Ceph块设施和RADOS网关不须要元数据。MDS不间接给client提供数据服务。ceph写入数据流程如下图所示一个File首先被切割为多个objects,每个objects默认4M大小,也就是100M的数据会被切割为25个object,并且每个object都有本人的objectid,通过hash而后进行掩码的运算,确认object是应该散布那个pg中,而后pg通过crush算法,将数据落在不同的osd.默认的crush算法基于host的. 部署ceph集群应用三台服务器服务器用处192.168.21.101node-1192.168.21.101node-2192.168.21.102node-3批改三台服务器hostnamehostnamectl set-hostname node-1hostnamectl set-hostname node-2hostnamectl set-hostname node-3开启ssh免密登录ssh-keygenssh-copy-id -i /root/.ssh/id_rsa.pub node-2ssh-copy-id -i /root/.ssh/id_rsa.pub node-3敞开所有节点selinux和firewalldsetenforce 0sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configsystemctl stop firewalld所有节点装置ntpyum install ntp ntpdate ntp-docsystemctl start ntpd && systemctl enable ntpdntpq -np所有节点增加yum源wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repocat >/etc/yum.repos.d/ceph.repo <<EOF[norch]name=norchbaseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/enabled=1gpgcheck=0[x86_64]name=x86_64baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/enabled=1gpgcheck=0EOF装置ceph初始化monyum clean all && yum makecacheyum install python-setuptools ceph-deploy -ymkdir ceph-deploy && cd ceph-deployceph-deploy new --public-network 192.168.21.0/0 --cluster-network 192.168.21.0/0 node-1yum install ceph ceph-mon ceph-mgr ceph-radosgw cepht-mds -y #所有节点装置ceph-deploy mon create-initial #初始化monceph-deploy admin node-1 node-2 node-3 #推送配置文件到各个节点ceph-deploy mgr create node-1 #初始化mgr作为监控ceph -s # 查看集群状态扩大mon增加osd#集群增加osdceph-deploy osd create node-1 --data /dev/sdbceph-deploy osd create node-2 --data /dev/sdbceph-deploy osd create node-3 --data /dev/sdb#增加mon节点使其高可用ceph-deploy --overwrite mon add node-2ceph-deploy --overwrite mon add node-3#查看osd状态ceph osd tree#查看Ceph monitor仲裁状态ceph quorum_status --format json-pretty

September 23, 2020 · 1 min · jiezi