---
title: 组件介绍
description: "Ceph是一个专注于分布式的、弹性可扩展的、高可靠的、性能优异的存储系统平台，可以同时支持块设备、文件系统和对象网关三种类型的存储接口。本文介绍的调优手段包括硬件层面和软件配置层面的优化，暂不涉及软件源码层面的优化。通过调整系统和Ceph配置参数，Ceph可以更充分的发挥系统硬件性能。Ceph PG分布调优和OSD绑核旨在让磁盘负载更平均，避免个别OSD成为瓶颈。此外，均衡型场景下，用NVMeSSD做Bcache也可以提升性能。Ceph架构如图1所示。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengsdss/ecosystemEnable/Ceph/kunpengcephfile_05_0002.html
sourcePath: /source/zh/kunpengsdss/ecosystemEnable/Ceph/kunpengcephfile_05_0002.html
indexId: 3554b6536edeea49e561c7abeceb874b45fe06534865be1371881f0b8726a9b072
---
# 组件介绍

#### Ceph

Ceph是一个专注于分布式的、弹性可扩展的、高可靠的、性能优异的存储系统平台，可以同时支持块设备、文件系统和对象网关三种类型的存储接口。本文介绍的调优手段包括硬件层面和软件配置层面的优化，暂不涉及软件源码层面的优化。通过调整系统和Ceph配置参数，Ceph可以更充分的发挥系统硬件性能。Ceph PG分布调优和OSD绑核旨在让磁盘负载更平均，避免个别OSD成为瓶颈。此外，均衡型场景下，用NVMeSSD做Bcache也可以提升性能。Ceph架构如图1所示。

图1 Ceph架构

Ceph的模块及组件说明如表1所示。


**表1 模块说明**

| 模块名称 | 功能描述 |
| --- | --- |
| RADOS | RADOS（Reliable Autonomic Distributed Object Store，RADOS）是Ceph存储集群的基础。Ceph中的一切都以对象的形式存储，而RADOS就负责存储这些对象，而不考虑它们的数据类型。RADOS层确保数据一致性和可靠性。对于数据一致性，它执行数据复制、故障检测和恢复，还包括数据在集群节点间的recovery。 |
| OSD | 实际存储数据的进程。通常一个OSD daemon绑定一个物理磁盘。Client write/read数据最终都会走到OSD去执行write/read操作。 |
| MON | Monitor在Ceph集群中扮演着管理者的角色，维护了整个集群的状态，是Ceph集群中最重要的组件。MON保证集群的相关组件在同一时刻能够达成一致，相当于集群的领导层，负责收集、更新和发布集群信息。为了规避单点故障，在实际的Ceph部署环境中会部署多个MON，同样会引来多个MON之间如何协同工作的问题。 |
| MGR | MGR目前的主要功能是一个监控系统，包含采集、存储、分析（包含报警）和可视化几部分，用于把集群的一些指标暴露给外界使用。 |
| librados | 简化访问RADOS的一种方法，目前支持PHP、Ruby、Java、Python、C和C++语言。它提供了Ceph存储集群的一个本地接口RADOS，并且是其他服务（如 RBD 、 RGW ）的基础，此外，还为 Ceph FS 提供POSIX接口。librados API支持直接访问RADOS，使开发者能够创建自己的接口来访问Ceph集群存储。 |
| RBD | Ceph块设备，对外提供块存储。可以像磁盘一样被映射、格式化和挂载到服务器上。 |
| RGW | 即RADOSGW。Ceph对象网关，提供了一个兼容S3和Swift的RESTful API接口。RGW还支持多租户和OpenStack的Keystone身份验证服务。 |
| MDS | Ceph元数据服务器，跟踪文件层次结构并存储只供Ceph FS使用的元数据。Ceph块设备和RADOS网关不需要元数据。MDS不直接给Client提供数据服务。 |
| Ceph FS | 提供了一个任意大小且兼容POSlX的分布式文件系统。Ceph FS依赖Ceph MDS来跟踪文件层次结构，即元数据。 |


#### Vdbench

Vdbench是一个命令行实用程序，旨在帮助工程师和客户生成用于验证存储性能和存储数据完整性的磁盘IO负载。还可通过输入文本文件指定Vdbench执行参数。

Vdbench工具参数很多，表2列举了几个重要的常用参数。


**表2 常用参数**

| 配置项 | 说明 |
| --- | --- |
| \-f | 指定一个压力测试的脚本文件 |
| \-o | 指定输出报告的路径，默认是当前路径 |
| lun | 测试的LUN设备或文件 |
| size | 设置测试LUN或测试文件的大小 |
| rdpct | 读所占百分比，100表示全读，0表示全写 |
| seekpct | 随机数据所占百分比，100代表全随机，0代表顺序 |
| elapsed | 定义本次运行测试时间 |
