简单介绍Ceph分布式存储集群
在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考:
1)CPU选择
Ceph metadata server会动态的重新分配负载,它是CPU敏感性的,所以Metadata Server应该有比较好的处理器性能 (比如四核CPU). Ceph OSDs运行RADOS服务,需要通过CRUSH来计算数据的存放位置,replicate数据,以及维护Cluster Map的拷贝,因此OSD也需要合适的处理性能 Ceph Monitors 简单的维护了Cluster Map的主干信息所以这个是CPU不敏感的。
2)RAM选择
Metadata servers 以及Monitors 必须能够快速的提供数据,因此必须有充足的内存(e.g., 1GB of RAM per daemon instance). OSDs 在执行正常的操作时不需要过多的内存 (e.g., 500MB of RAM per daemon instance);但是 执行恢复操作时,就需要大量的内存(e.g., ~1GB per 1TB of storage per daemon). Generally, 而且是越多越好。
3)Data Storage选择
规划数据存储时要考虑成本和性能的权衡。同时OS操作,同时多个后台程序对单个驱动器进行读写操作会显着降低性能。也有文件系统的限制考虑:BTRFS对于生产环境来说不是很稳定,但有能力记录journal和并行的写入数据,而XFS和EXT4会好一点。
提示:不推荐单个磁盘的分区上运行多个OSD。不推荐单个磁盘的分区上运行一个OSD和一个监视器或元数据服务。
存储驱动器受寻道时间,访问时间,读取和写入时间,以及总吞吐量的限制。这些物理限制会影响整个系统的性能,尤其是在恢复过程中。我们建议为操作系统和软件使用专用的驱动器,并且为你在主机上运行每个OSD守护分配一个驱动器。大多数“慢OSD”的问题的产生是由于在一个操作系统同一驱动器上运行多个OSDs和/或多个日志。
由于解决性能问题的一小部分的成本可能超过额外的磁盘驱动器的成本,因此你可以加快你的的集群设计规划,为了避免OSD存储驱动器负荷过重。
在每个硬盘驱动器上同时运行多个Ceph的OSD守护程序,但是这可能会导致资源争用,并降低整体吞吐量。你可能把日志和对象数据存储在相同的驱动器上,但这样可能会增加所花费在记录写入操作和发送ACK给客户端的时间。在CEPH可以ACK对于写入操作前,Ceph必须把操作写入到日志。
BTRFS文件系统的日志数据和对象数据的同时可以写,而XFS和ext4的不能。Ceph的推荐做法,分开在单独的驱动器上运行操作系统,OSD数据和OSD日志。
4)固态硬盘选择
性能改进的机会之一是使用固态硬盘(SSD),以减少随机访问时间,读取等待时间,同时吞吐量加速。固态硬盘每GB的费用与硬盘驱动器相比往往超过10倍之多,但固态硬盘往往表现至少比硬盘驱动器快100倍的访问时间。
固态硬盘没有移动机械部件,所以他们不需要受同类型硬盘驱动器的限制。尽管固态硬盘有明显的局限性。重要的是考虑其连续读取和写入的性能。当存储多个OSDs的多个日志时,有400MB/s的顺序写入吞吐量的SSD的性能,相比机械盘120MB/s的顺序写入吞吐量,SSD更好、更快。
固态硬盘的OSD对象存储成本高昂,通过存储一个OSD的日志在一个单独的硬盘驱动器SSD和OSD的对象数据上时,OSDs上可能会看到一个显着的性能提升。OSD日志配置默认在/var/lib/ceph/osd/$cluster-$id/journal里。你可以挂载这个路径到SSD或SSD的分区上,将日志文件和数据文件分别存放在不同的磁盘。
5)Networks选择
建议每台机器最少两个千兆网卡,现在大多数普通硬盘吞的吐量都能达到100MB/s,网卡应该能处理所以OSD硬盘总吞吐量,所以推荐最少两个千兆网卡,分别用于public network和cluster_network。集群网络(最好别连接到互联网)用于处理由数据复制产生的额外负载,并且有助于阻止拒绝服务攻击,拒绝服务攻击会干扰数据归置组,使之在OSD数据复制时不能回到active+clean状态。请考虑部署万兆网卡。通过1Gbps网络复制1TB数据耗时3小时,而3TB(一个典型的驱动配置)需要9小时,与之相反,如果使用10Gbps复制时间可分别缩减到20分钟和1小时。
在一个PB级集群中,OSD磁盘失败是常态,而非异常;在性价比合理的前提下,系统管理员想让PG尽快从degraded(降级)状态恢复到active+clean状态。采用10G网卡值得考虑使用。每个网络的顶级机架路由器到核心路由器通信应该有更快的吞吐量,例如,40Gbps~100Gbps。
6)其他注意事项:
可以在每台主机上运行多个OSD进程,但应该确保OSD硬盘的吞吐量总和不超过客户端读取或写入数据所需的网络带宽。也应该考虑在每个主机上数据的存储率。如果一个特定的主机上的百分比较大,它可能会导致问题:为了防止数据丢失,会导致Ceph停止操作。
当每台主机上运行多个OSD进程时,还需要保证内核是最新的。 当每台主机上运行多个OSD进程时(如>20)会产生很多的线程,特别是进行recovery和relalancing操作。许多Linux内核默认线程限最大数量比较小(例如,32k的)。如果您遇到这方面的问题,可以考虑把kernel.pid_max设置的高一点。理论上的最大值为4,194,303。
简单介绍Ceph分布式存储集群的更多相关文章
- Ceph分布式存储集群-硬件选择
在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考: 1)CPU选择Ceph metadata server会动态的重新分 ...
- 一步一步安装配置Ceph分布式存储集群
Ceph可以说是当今最流行的分布式存储系统了,本文记录一下安装和配置Ceph的详细步骤. 提前配置工作 从第一个集群节点开始的,然后逐渐加入其它的节点.对于Ceph,我们加入的第一个节点应该是Moni ...
- docker部署Ceph分布式存储集群
1.环境准备 3台virtualbox虚拟机,用来安装ceph集群,已用docker-machine安装上了docker,每台虚拟机虚拟创建一个5G的硬盘,用于存储osd数据,例如:/dev/sdb ...
- Docker简单部署Ceph测试集群
通过docker可以快速部署小规模Ceph集群的流程,可用于开发测试. 以下的安装流程是通过linux shell来执行的;假设你只有一台机器,装了linux(如Ubuntu)系统和docker环境, ...
- 基于Ceph分布式集群实现docker跨主机共享数据卷
上篇文章介绍了如何使用docker部署Ceph分布式存储集群,本篇在此基础之上,介绍如何基于Ceph分布式存储集群实现docker跨主机共享数据卷. 1.环境准备 在原来的环境基础之上,新增一台cen ...
- redis5.0.0功能介绍以及主从集群、哨兵搭建
这两天突然想起redis,索性就再尝试一下搭建最新版本的redis,过程有点艰辛呀,记录一下,供自己和大家今后搭建做参考. 一.为什么用Redis? 我自己总结了一下: 1.基于内存实现的key-va ...
- Centos6.5下一个Ceph存储集群结构
简单的介绍 Ceph的部署模式下主要包括下面几个类型的节点 • Ceph OSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复,填充.调整资源组合以及通过检查 ...
- 初试 Centos7 上 Ceph 存储集群搭建
转载自:https://cloud.tencent.com/developer/article/1010539 1.Ceph 介绍 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统 ...
- 002.RHCS-配置Ceph存储集群
一 前期准备 [kiosk@foundation0 ~]$ ssh ceph@serverc #登录Ceph集群节点 [ceph@serverc ~]$ ceph health #确保集群状态正常 H ...
随机推荐
- oracle 根据约束名查表名
PK_ID为约束名 select constraint_name,constraint_type,table_name from all_constraints where CONSTRAINT_NA ...
- 使用pytorch构建神经网络的流程以及一些问题
使用PyTorch构建神经网络十分的简单,下面是我总结的PyTorch构建神经网络的一般过程以及我在学习当中遇到的一些问题,期望对你有所帮助. PyTorch构建神经网络的一般过程 下面的程序是PyT ...
- activiti流程
package cn.demo.service.impl; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...
- STM32F103ZET6 用定时器级联方式输出特定数目的PWM
STM32F103ZET6 用定时器级联方式输出特定数目的PWM STM32F103ZET6里共有8个定时器,其中高级定时器有TIM1-TIM5.TIM8,共6个. 这里需要使用定时器的级联功能,ST ...
- 在ASP.NET MVC中使用Knockout实践03,巧用data参数
使用Knockout,当通过构造函数创建View Model的时候,构造函数的参数个数很可能是不确定的,于是就有了这样的一个解决方案:向构造函数传递一个object类型的参数data. <inp ...
- Quartz 定时任务设置某个时间区间每隔一定时间触发的cron表达式
原文:https://blog.csdn.net/yansong_8686/article/details/46991189 Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间 ...
- python测试开发django-11.模型models详解
前言 Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库 只需要在settings ...
- 从零开始写一个发送h264的rtsp服务器(下)
转自:http://blog.csdn.net/jychen105/article/details/47012099 一.H264是如何通过rtsp发送的 简单来说,H264就是通过打包到rtp协议的 ...
- UITextField的简易封装
UITextField的简易封装 效果 源码 https://github.com/YouXianMing/UI-Component-Collection 中的 UITextFieldView // ...
- 【转】Itunes Connect新版本如何提交应用
本文系转载,版权归原作者所有(原文链接>>). How do I submit my app to iTunes connect? To submit your app to iTunes ...