ceph

Linux运维---2.ceph部署实践(mimic版本)

一笑奈何 提交于 2020-02-27 17:30:47
环境准备 备注:已配置互信,并且在部署节点安装了自动化部署工具ansible,已配置ceph的yum源 主机名已更改、ssh免密登录 # centos7.5 每个机器都有2块盘 10.100.2.50 deploy 10.100.2.51 mon1 10.100.2.52 mon2 10.100.2.53 mon3 10.100.2.54 osd1 10.100.2.61 osd2 10.100.2.62 osd3 10.100.2.71 osd4 配置环境 使用ansible批量修改主机及IP地址 vim hostReset.yml --- - hosts: openstack remote_user: root tasks: - name: change hostname raw: "echo {{ hostname | quote }} > /etc/hostname" - name: copy ens161 config template: src="/etc/sysconfig/network-scripts/ifcfg-ens161" dest="/etc/sysconfig/network-scripts/" - name: change ens161 ip address shell: | sed -i "s#IPADDR=10.100.2.10#IPADDR={{

Ceph心跳机制

耗尽温柔 提交于 2020-02-26 19:00:21
1. 心跳介绍 心跳是用于节点间检测对方是否故障的,以便及时发现故障节点进入相应的故障处理流程。 问题: 故障检测时间和心跳报文带来的负载之间做权衡。 心跳频率太高则过多的心跳报文会影响系统性能。 心跳频率过低则会延长发现故障节点的时间,从而影响系统的可用性。 故障检测策略应该能够做到: 及时:节点发生异常如宕机或网络中断时,集群可以在可接受的时间范围内感知。 适当的压力:包括对节点的压力,和对网络的压力。 容忍网络抖动:网络偶尔延迟。 扩散机制:节点存活状态改变导致的元信息变化需要通过某种机制扩散到整个集群。 2. Ceph 心跳检测 OSD节点会监听public、cluster、front和back四个端口 public端口:监听来自Monitor和Client的连接。 cluster端口:监听来自OSD Peer的连接。 front端口:供客户端连接集群使用的网卡, 这里临时给集群内部之间进行心跳。 back端口:供客集群内部使用的网卡。集群内部之间进行心跳。 hbclient:发送ping心跳的messenger。 3. Ceph OSD之间相互心跳检测 步骤: 同一个PG内OSD互相心跳,他们互相发送PING/PONG信息。 每隔6s检测一次(实际会在这个基础上加一个随机时间来避免峰值)。 20s没有检测到心跳回复,加入failure队列。 4. Ceph

ceph-immmutable-object-cache

社会主义新天地 提交于 2020-02-26 14:11:12
一、简介 目前官方提供了ceph-immmutable-object-cache守护进程负责将内容缓存到本地缓存目录上。为了获得更好的性能,建议使用SSD作为底层存储介质。 二、IO流程 ceph-immmutable-object-cache守护进程启动进行初始化,并且时监听本地域套接字,并等待来自librbd客户端的连接。 客户端librbd通过域套接字来连接缓存守护进程, 并且向缓存守护进程进行注册。 客户端librbd读取时请求到缓存守护进程进行查找。如果未查找到,守护进程会直接读取RADOS对象,然后写入到本地缓存目录.否则,找到更新LRU移动到头部。 如果返回告诉客户端未缓存, 则客户端librbd直接从rados中获取信息。(下次librbd则直接从本地获取) 三、策略 MAP信息维护filename和Entry信息。 LRU链表维护Entry信息,保证容量达到阈值剔除缓存。 Entry信息,维护最大容量、容量水位、最大ops。 四、 存储格式 filename: pool_nspace + ":" + std::to_string(pool_id) + ":" + std::to_string(snap_id) + ":" + oid cache_file_dir: ceph_crc32c(0, file_name, length) % 100 key: m

ceph-pg哈希

允我心安 提交于 2020-02-26 14:03:37
序言 ceph简介 Ceph 是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。底层的rados分布式存储是ceph的精华所在,ceph以rados为基础在上层封装了对象、块、文件存储接口。客户端可以通过ceph提供的librados库直连rados集群,待存对象通过计算获取指定机器,然后将数据发送到该机器上存储。因为都是通过计算的方式,所以rados不需要维护一个中心table来存储对象所在的位置,这种计算型的方式不仅快速,而且能够节省节点的资源。 下图为ceph的总体框架图: 数据如何映射 Ceph对集群中所有存储资源进行池化管理,对象通过计算直接映射到底层的osd中,为了更好的管理和映射数据,ceph有如下的概念。 - object: 用户需要存储的对象,可以是文档、视频、音频等等文件,用户在存储的时候需要指定唯一的对象名。 - pool:资源池,这是一个虚拟概念,一个集群可以分出多个pool,也可以使用单个pool,但是必须有一个pool。 用户可以针对不同的pool指定不同的CRUSH规则,也可以针对不同的pool指定不同的数据冗余策略。 - pg:全称 placement groups, 一个pool对应多个pg, 通过hash对象会存储到pool中的特定pg中。在创建pool的时候就要把pg数量规划好。pg数量只可以增大不可以缩小。 - osd

BlueStore源码分析之Stupid分配器

扶醉桌前 提交于 2020-02-26 08:31:48
前言 前面介绍了 BlueStore的BitMap分配器 ,我们知道新版本的 Bitmap 分配器的优势在于 使用连续的内存空间从而尽可能更多的命中CPU Cache以提高分配器性能 。在这里我们了解一下基于区间树的 Stupid 分配器(类似于Linux Buddy内存管理算法),并对比分析一下其优劣。 目录 伙伴算法 数据结构 初始化 插入删除 空间分配 空间回收 优劣分析 <a name="chapter1"></a>伙伴算法 Linux内存管理算法为了能够快速响应请求,尽可能的提高内存利用率同时减少外部内存碎片,引入了伙伴系统算法 Buddy-System 。该算法将所有的空闲页分组为11个链表,每个链表分别包含 1、2、4、8、16、32、64、128、256、512、1024 个连续的页框块,每个页框块的第一个内存页的物理地址是该块大小的整数倍。 伙伴的特点是:两个块大小相同、两个块地址连续、第一块的第一个页框的物理地址是两个块总大小的整数倍(同属于一个大块,第1块和第2块是伙伴,第3块和第4块是伙伴,但是第2块和第3块不是伙伴) 。具体内存分配和内存释放可自行Google。 优点: 较好的解决外部碎片问题,不能完全解决。 针对大内存分配设计,可以快速的分配连续的内存。 缺点: 合并的要求过于严格,只能是满足伙伴关系的块才可以合并。 一块连续的内存中仅有一个页面被占用

Ceph:ImportError: No module named pkg_resources

淺唱寂寞╮ 提交于 2020-02-26 05:37:10
说明:步骤ceph的时候出现"ImportError: No module named pkg_resources" # ceph-deploy --overwrite-conf new ceph01.wanwan.com ceph02.wanwan.com ceph03.wanwan.com Traceback (most recent call last): File "/bin/ceph-deploy", line 18, in <module> from ceph_deploy.cli import main File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module> import pkg_resources ImportError: No module named pkg_resources 解决方法: # yum -y install python2-pip-8.1.2-5.el7.noarch 记录下,备忘 来源: 51CTO 作者: 冰冻vs西瓜 链接: https://blog.51cto.com/molewan/2104287

ceph部署手册

笑着哭i 提交于 2020-02-25 12:41:35
CentOS7.2部署Luminous版Ceph-12.2.0 在 CentOS7.2上安装部署Luminous版Ceph-12.2.0。由于ceph的Luminous版本默认使用bluestore作为后端存储类型,也新增了mgr功能,所以使用ceph-deploy的1.5.38版本来部署集群、创建MON、OSD、MGR等。 环境 每台主机 CentOS Linux release 7.2.1511 (Core) Mini版 两个 100G的磁盘做OSD 1 2 3 4 5 6 7 8 9 10 11 12 13 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom xvda 202:0 0 10G 0 disk ├─xvda1 202:1 0 500M 0 part /boot └─xvda2 202:2 0 9.5G 0 part ├─centos-root 253:0 0 8.5G 0 lvm / └─centos-swap 253:1 0 1G 0 lvm [SWAP] xvdb 202:16

Ceph集群搭建

梦想与她 提交于 2020-02-25 01:56:53
暂时使用ceph-deploy来搭建集群。手动搭建集群会另外找时间补充并说明。 1. 虚拟机安装操作系统,并克隆出4台机器,分配不同的IP地址,IP最好放在同一个网段 准备4台虚拟机做4个节点,虚拟机至少需要准备2个磁盘,一个用来安装操作系统,另外一个用于作为OSD节点(硬盘多多益善) admin-node 客户端,部署 node1 OSD/MDS/MON node2 OSD/MDS/MON node3 OSD/MDS/MON 修改节点名称,修改后要reboot重启 vim /etc/hostname IP地址映射,把所有节点名称和其IP地址写入hosts文件中 vim /etc/hosts   2. 关闭所有节点防火墙和关闭selinux setenforce 0 一般来说新安装的服务器版本linux防火墙是没有设置的 3. 在admin节点安装ceph部署工具ceph-deploy apt-get install ceph-deploy 4. 在admin节点建立ceph安装路径,并进入该路径 mkdir /etc/ceph cd /etc/ceph 5. 部署无密码登陆所有ceph节点 生成节点密钥 ssh-keygen 把admin节点密钥复制到所有节点上 ssh-copy-id root@admin-node ssh-copy-id root@node1 ssh-copy

分布式存储ceph——(1)部署ceph

风流意气都作罢 提交于 2020-02-21 16:29:10
前言: 很多朋友想学ceph,但是开始ceph部署就让初学者举步为艰,ceph部署时由于国外源的问题(具体大家应该懂得),下载和安装软件便会卡住,停止不前。即使配置搭建了国内源后,执行ceph-deploy install 时又跑去了国外的源下载,很是无语呀!!!这样导致我们停下了学习ceph的脚步,所以笔者就在这里编写了这篇文章,只要掌握了通过国内源找到并下载对应正确的ceph版本rpm包到本地,部署ceph简直小意思! 一、部署准备: 准备5台机器(linux系统为centos7.6版本),当然也可以至少3台机器并充当部署节点和客户端,可以与ceph节点共用: 1台部署节点(配一块硬盘,运行ceph-depoly) 3台ceph节点(配两块硬盘,第一块为系统盘并运行mon,第二块作为osd数据盘) 1台客户端(可以使用ceph提供的文件系统,块存储,对象存储) (1)所有ceph集群节点(包括客户端)设置静态域名解析; 1 2 3 4 5 6 7 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.254.163 dlp

Ceph 集群操作和管理(五)

本小妞迷上赌 提交于 2020-02-17 16:51:27
一、Ceph 服务管理 1.1 启用和停止守护进程 # 启动当前节点的所有Ceph服务 [root@ceph01 ~]# systemctl start ceph.target # 停止当前节点的所有Ceph服务 [root@ceph01 ~]# systemctl stop ceph\*.service ceph\*.target # 对远端节点进行操作 -H 192.168.5.93 [root@ceph01 ~]# systemctl -H ceph02 start ceph.target 1.2 查看相关服务 systemctl status ceph-osd.target systemctl status ceph-osd@1.service systemctl status ceph-mds.target systemctl status ceph-mon.target systemctl status ceph-radosgw.target 二、集群扩展 从根本上说,Ceph一直致力于成长从几个节点到几百个,它应该在没有停机的情况下即时扩展。 2.1 节点信息及系统初始化(请按第一节进行初始化配置) # ceph-deploy节点设置免密登录[cephadmin@ceph01 ~]$ ssh-copy-id cephadmin@ceph04# 以前为新加节点配置