惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
博客园_首页
量子位
Jina AI
Jina AI
S
SegmentFault 最新的问题
IT之家
IT之家
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
N
News | PayPal Newsroom
P
Proofpoint News Feed
Cyberwarzone
Cyberwarzone
S
Securelist
Google Online Security Blog
Google Online Security Blog
P
Privacy International News Feed
博客园 - Franky
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
C
Cisco Blogs
V
Vulnerabilities – Threatpost
腾讯CDC
The Hacker News
The Hacker News
K
Kaspersky official blog
C
Cyber Attacks, Cyber Crime and Cyber Security
雷峰网
雷峰网
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Security Archives - TechRepublic
Security Archives - TechRepublic
A
About on SuperTechFans
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
Scott Helme
Scott Helme
B
Blog
Security Latest
Security Latest
Last Week in AI
Last Week in AI
Google DeepMind News
Google DeepMind News
W
WeLiveSecurity
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

Yee's Blog

腾讯云/轻量云 安装ArchLinux的个人记录 记录我的联想M720Q Arch Sway窗口管理器的安装和配置过程 Jenkins Linux安装 腾讯课堂、钉钉在线网课视频直播回放下载离线播放 Ceph块设备对RBD块设备操作LVM创建PV时报错 Ceph映射RBD块设备 2020年9月26日前端部门Vue考核 2020年9月26日后端部门Python考核 Nginx反向代理下载传输超过1G大文件时断开问题 Windows Server 2019 Datacenter M720q 安装记录 Ceph块设备基础及快照、克隆操作 从Ceph集群中删除OSD节点 Centos8配置 chrony NTP服务端及客户端 搭建Ceph集群 OSD与Pool池的常见操作及管理 Ceph用户管理 MacOS睡眠管理——让你的Mac睡的更香 初中古诗文必背篇目 Ansible 技巧之场 Ansible 包含和导入文件 Ansible 学习文档 Ansible 主机模式 Ansible 角色 Ansible 调整连接数 Splunk数据搜索和报表 Ansible 常用模块 Ansible 变量和事实 Ansible 任务控制 Ansible Playbook Ansible 基础概念 42Team-Flask框架-HTTP协议快速了解 42Team-Flask框架-路由和视图 42Team-Flask框架-请求与响应 42Team-Flask框架 42Team-Flask框架-Flask介绍 42Team-Flask框架-使用Pycharm来构建一个全新的Flask项目 How to install RHEL8(Centos) on Dell R710/R610 server Centos8安装Docker报错解决方案 Centos8安装Docker后容器内无法访问网络 Docker或Podman容器内无法解析DNS问题多种解决方案 使用NetworkManager来管理树莓派Ubuntu系统网络以及个人的体验优化 Linux 存储设备的挂载及识别 Firewalld 防火墙常用指令教程-常用规则(禁止Ping | 放行端口) Linux 查找系统中的文件 Linux 守护进程和控制服务 Linux SSH远程访问 42Team小组_Linux基础培训课件 如何在AmazeUI中当改变select标签后触发Vue方法的问题 使用Docker部署安装WordPress博客平台 在Raspberry树莓派中搭建NFS存储服务器 在 树莓派 Linux 中搭建匿名 danted socks5 代理服务器 HTTP与HTTPS区别随笔 Bash/Shell学习笔记
Ceph硬件准备
本文作者: YeeFire · 2020-07-26 · via Yee's Blog

大部分的推荐配置来源于http://docs.ceph.org.cn/

Ceph为普通硬件设计,这可以让维护构建PB级别的数据集群的费用相对来说更低廉。在搭建集群前最初的硬件架构设计极为重要。你需要均衡几个方面的因素,包括区域实效和潜在的性能问题。硬件规划包含要把使用Ceph集群的Ceph守护进程和其他进程所需要的资源恰当合理分布。

通常只推荐在一台机器上运行一种类型的守护进程。我们推荐把使用数据集群的进程(如 Openstack、CloudStack等)安装在别的机器上。

CPU

Ceph元数据服务器对CPU敏感,他会动态地重分布他们的负载,所以你的元数据服务器应该有足够的处理能力(如4核或更强悍的CPU)。Ceph的OSD运行着RADOS服务,用CRUSH算法计算着数据存放位置、复制数据、维护它自己的集群运行图副本,因此OSD需要一定的处理能力(如双核心CPU)。Ceph监视器只简单地维护者集群运行图的副本,因此对CPU不敏感。

但是需要考虑是否未来会在Ceph监视器的机器会运行其他的CPU密集型任务。比如运行用于计算的虚拟机(Openstack NOVA),你就要确保给Ceph进程保留足够的处理能力,所以推荐在其他机器上运行CPU密集型任务。

内存

元数据服务器和监视器必须尽可能快的提供他们的数据,所以元数据服务器与监视器至少每个进程分配1G内存。

OSD的日常运行不需要那么多的内存,但是也要确保每个进程能分配到500M的内存,通常来说在进行数据恢复的期间他们占用的内存比较大,每TB级数据需要1GB的内存。

通常内存越多越好。

数据存储

谨慎的规划数据和数据存储架构,因为期间涉及明显的成本和性能折衷。

来自操作系统的并行操作和到单个硬盘的多个守护进程的并发读写会极大的降低性能。同时文件系统局限性也要考虑,btrfs尚未稳定到可以用于生产环境的程度,但它可以同时记录日志并写入数据,而xfs和ext4不能。

Ceph发送ACK前必须把所有数据写入日志(至少对xfs和ext4来说是),因此均衡日志和OSD性能相当重要。

磁盘驱动器

OSD应该有足够的空间用于存储对象数据。考虑到大硬盘的没GB成本,建议使用容量大于1TB的硬盘。建议用GB数除以硬盘价格来计算每GB的成本,因为较大的硬盘通常会对每GB成本有较大影响。

值得注意的是,单个驱动器的容量越大,其对应的OSD进程所需要的内存就越大,特别是在重均衡、回填、恢复期间。1TB的存储空间大约需要1GB内存。

在单个硬盘上运行多个OSD,这样不太妙!
在运行了OSD的磁盘上又同时运行着监视器或者云数据服务器这样也不太妙!

磁盘驱动器受限于寻道时间、访问时间、读写时间、还有吞吐量这些磁盘的物理局限影响着整体系统的性能,特别是在出现故障系统恢复期间。因此推荐独立的磁盘用于安装操作系统和软件,避免增加OSD存储磁盘的负担以提升性能。

Ceph可以在每块硬盘上运行多个OSD,但这会导致资源竞争并降低总体吞吐量;Ceph也允许把日志和对象数据存储在相同的磁盘驱动器上,但这会增加记录写日志并回应客户端的延迟,因为Ceph必须先写入日志才会回应确认了写动作。btrfs文件胸能同时写入日志数据和对象数据,而xfs、etx4不能。

Ceph最佳实践指示,应该分别在单独的硬盘运行操作系统、OSD和OSD日志。

固态硬盘

一种提升性能的方法是使用固态硬盘SSD来降低随机访问时间和读延时,同时增加吞吐量。SSD和硬盘相比每GB的成本通常要高出10倍以上,但访问时间至少比硬盘快100倍!

SSD没有可移动机械部件,所以不存在和硬盘一样的局限性。但是SSD也有其他的局限性,评估SSD时,顺序读写的性能很重要,在为多个OSD存储日志时,有着400MB/s顺序读写吞吐量的SSD性能远高于120MB/s的。

建议发觉SSD的用法来提升性能,在大量投入SSD前,强烈建议核实SSD的性能指标,并在测试环境下衡量性能。相对廉价的SSD虽然价格很诱人,但是要谨慎使用!一分钱一分货的道理是永恒不变的。

正是因为SSD没有移动机械部件,所以它很适合Ceph里不需要太多存储空间的地方。可接受的IOPS指标对选择用于Ceph的SSD还不够,用于日志和SSD时还有几个重要考量:

  • 写密集语意:写日志数据涉及密集语意,所以要确保选用的SSD写入性能和硬盘相当或者好于硬盘。廉价SSD可能在加速访问的同时引入写延时,有时候高性能的硬盘的写入速度可以和便宜的SSD硬盘相媲美。
  • 顺序写入:在一个SSD上为多个OSD存储多个日志时也必须考虑SSD的顺序写入极限,因为它们要同时处理多个OSD日志的写入请求。
  • 分区对齐:采用SSD的一个常见问题是人们喜欢分区,却常常忽略了分区对齐,这会导致SSD的数据传输速率慢很多,所以请确保分区对齐了。

SSD用于对象存储太昂贵了,但是把OSD的日志存到SSD、把对象数据存储到独立的硬盘可以明显提升性能。osd journal选项的默认值是/var/lib/ceph/osd/$cluster-$id/journal,所以说可以把目录存储的位置更改到SSD磁盘或SSD的分区上,这样它就不再是和对象数据一样存储在同一个硬盘上的文件了。

提升CephFS文件系统性能的一种方法是从CephFS文件内容中分离出元数据。Ceph提供了默认的metadata存储池来存储CephFS元数据,所以你不需要给CephFS元数据创建存储池,但是可以给它创建一个仅指向某主机SSD的CRUSH运行图。具体详情见OSD与Pool池的常见操作及管理

硬盘控制器

硬盘控制器也会对吞吐量有显著影响,要谨慎的选择控制器,以免产生性能瓶颈。

网络

建议每台机器最少两个千兆网卡,现在大多数的机械硬盘都能达到100MB/s的吞吐量,网卡应该能处理所有的OSD硬盘总吞吐量,所以推荐最少两个千兆网卡分别用于公网和集群网络。集群网络用来处理数据复制产生的额外负载,而且可以防止拒绝服务攻击,拒接服务攻击会干扰数据归置组,使OSD数据复制时不能回到active+clean状态。所以最好考虑使用两个万兆网卡。

通过 1Gbps 网络复制 1TB 数据耗时 3 小时,而 3TB (典型配置)需要 9 小时,相比之下,如果使用 10Gbps 复制时间可分别缩减到 20 分钟和 1 小时。在一个 PB 级集群中, OSD 磁盘失败是常态,而非异常;在性价比合理的的前提下,系统管理员想让 PG 尽快从 degraded (降级)状态恢复到 active + clean 状态。

增加的硬件成本可用节省的运营(网络安装、维护)成本抵消。使用 VLAN 来处理集群和计算栈(如 OpenStack 、 CloudStack 等等)之间的 VM 流量时,采用 10G 网卡仍然值得。每个网络的机架路由器到核心路由器应该有更大的带宽,如 40Gbps 到 100Gbps 。

其他要注意的点

可以在同一台主机上运行多个OSD,但是要确保OSD硬盘总吞吐量不超过客户端提供读写服务所需的网络带宽;还要考虑集群在每台主机上所存储的数据占总体的百分比,如果一台主机所占百分比太大而它宕机了,就可能导致诸如超过full ratio的问题,此问题会使Ceph中止运作以防止数据丢失。

保证内核是最新的,确保硬件性能可以达到期望值。

OSD数量比较多的主机会产生大量OSD线程,尤其是在恢复和重均匀期间。很多Linux内核默认的最大线程数较小(如 32K 个),如果遇到了这类问题,可以把kernel.pid_max 值调高些。理论最大值是 4194303 。例如把下列这行加入 /etc/sysctl.conf 文件:

kernel.pid_max = 4194303

故障域

故障域指任何导致不能访问一个或多个 OSD 的故障,可以是主机上停止的进程、硬盘故障、操作系统崩溃、有问题的网卡、损坏的电源、断网、断电等等。规划硬件需求时,要在多个需求间寻求平衡点,像付出很多努力减少故障域带来的成本削减、隔离每个潜在故障域增加的成本。