配置指南

Red Hat Ceph Storage 4

Red Hat Ceph Storage 的配置设置

摘要

本文档提供有关在引导时和运行时配置红帽 Ceph 存储的说明。它还提供配置参考信息。
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看 CTO Chris Wright 信息

第 1 章 Ceph 配置的基础知识

作为存储管理员,您需要了解如何查看 Ceph 配置以及如何为红帽 Ceph 存储集群设置 Ceph 配置选项。您可以在运行时查看和设置 Ceph 配置选项。

1.1. 先决条件

  • 安装红帽 Ceph 存储软件.

1.2. Ceph 配置

所有 Red Hat Ceph Storage 集群都有配置,用于定义:

  • 集群身份
  • 身份验证设置
  • Ceph 守护进程
  • 网络配置
  • 节点名称和地址
  • 密钥环的路径
  • OSD 日志文件的路径
  • 其他运行时选项

Ansible 等部署工具通常会为您创建初始 Ceph 配置文件。但是,如果您更喜欢引导 Red Hat Ceph Storage 集群,而不必使用部署工具,您可以自行创建。

1.3. Ceph 配置数据库

Ceph 监控器管理 Ceph 选项的配置数据库,通过存储整个存储群集的配置选项来集中管理配置管理。通过将 Ceph 配置集中到数据库中,这有助于存储集群管理。默认情况下,在本地 Ceph 配置文件中可以定义一些 Ceph 选项,默认为 /etc/ceph/ceph.conf。这些少数 Ceph 配置选项控制其他 Ceph 组件如何连接到 Ceph 监控器进行身份验证,并从数据库获取配置信息。

Ceph 允许您在运行时更改守护进程的配置。此功能可用于通过启用或禁用调试设置来增加或减少日志输出,甚至可用于优化运行时。

注意

如果配置数据库和 Ceph 配置文件中存在相同的选项,则 Configuration database 选项的优先级低于 Ceph 配置文件中设定的优先级。

部分和掩码

正如您可以在全局范围内为每个守护进程类型或 Ceph 配置文件中的特定守护进程配置 Ceph 选项一样,您也可以根据这些部分在配置数据库中配置 Ceph 选项。Ceph 配置选项可以关联有掩码。这些掩码可进一步限制选项应用到哪些守护进程或客户端。

掩码有两个形式:

type:location
type 是 CRUSH 属性,如 机架主机位置 是属性类型的值。例如,host:foo 仅将 选项限制为在特定节点上运行的守护进程或客户端,本例中为 foo
class:device-class
device-class 是 CRUSH 设备类的名称,如 hdd 或 ssd。例如,class:ssd 仅将 选项限制为由固态驱动器(SSD)支持的 Ceph OSD。此掩码对客户端的非 OSD 守护进程没有影响。

管理命令

Ceph 配置数据库可以使用子命令 ceph 配置 ACTION 进行管理。您可以执行以下操作:

dump
转储存储集群的完整配置数据库选项。
get who
转储特定守护进程或客户端的配置。例如,公民 可以是 后台程序,如 amd s.a
设置 处理器 选项
设置 Ceph 配置数据库中的配置选项。
显示观察 机构
显示已报告的正在运行的守护进程配置。如果命令行或运行时中正在使用本地配置文件或选项,则这些选项可能与 Ceph monitor 存储的选项不同。此外,选项值的来源也会作为输出的一部分来报告。
assimilate-conf -i INPUT_FILE -o OUTPUT_FILE
INPUT_FILE 模拟配置文件,并将任何有效的选项移到 Ceph monitor 的配置数据库中。任何未被 Ceph monitor 识别、无效或无法控制的选项都会返回到存储在 OUTPUT_FILE 中的缩写配置文件。此命令对于从传统配置文件转换到集中式配置数据库非常有用。
help OPTION -f json-pretty
显示 使用 JSON 格式输出的特定选项的帮助。

1.4. Ceph 配置文件

Ceph 配置文件在启动时配置 Ceph 守护进程,这将覆盖其默认值。

提示

每一 Ceph 守护进程具有一系列默认值,这些值由 ceph/src/common/config_opts.h 文件设置。

Ceph 的默认配置文件的位置为 /etc/ceph/ceph.conf。您可以通过设置不同的路径来更改该位置:

  • $CEPH_CONF 环境变量中设置路径.
  • 指定 -c 命令行参数,如 -c path/ceph.conf

Ceph 配置文件采用 原语 语法。您可以通过前面的注释添加井号(#)或分号(;)注释。

示例

# <--A pound sign (#) sign precedes a comment.
# Comments always follow a semi-colon (;) or a pound (#) on each line.
# The end of the line terminates a comment.
# We recommend that you provide comments in your configuration file(s).
; A comment may be anything.

配置文件可以在 Ceph 存储集群中配置所有 Ceph 守护进程,或者在启动时配置特定类型的所有 Ceph 守护进程。要配置一系列守护进程,必须将设置包含在将接收配置的进程下,如下所示:

[global]
描述
[global] 下的设置会影响 Ceph 存储群集中的所有守护进程。
示例
支持 auth = cephx
[osd]
描述
[osd] 下的设置会影响 Ceph 存储集群中的所有 ceph-osd 守护进程,并覆盖 [global] 中的相同设置。
[mon]
描述
[mon] 下的设置会影响 Ceph 存储集群中的所有 ceph-mon 守护进程,并覆盖 [global] 中的相同设置。
示例
mon host = hostname1,hostname2,hostname3mon addr = 10.0.0.101:6789
[client]
描述
[client] 下的设置会影响所有 Ceph 客户端。例如,挂载的 Ceph 块设备和 Ceph 对象网关等。
示例
log file = /var/log/ceph/radosgw.log

全局设置会影响 Ceph 存储集群中所有守护进程的所有实例。将 [global] 标题用于 Ceph 存储集群中所有守护进程通用的值。您可以通过以下方法覆盖每个 [global] 选项:

  • 更改特定进程类型的选项:

    示例

    [osd], [mon]

或者

  • 更改特定进程的选项:

    示例

    [osd.1]

覆盖全局设置会影响所有子进程,但您在特定守护进程中特别覆盖的子进程除外。

典型的全局设置涉及激活身份验证。

示例

[global]
#Enable authentication between hosts within the cluster.
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

您可以指定应用到特定类型的守护进程的设置。当您在不指定特定实例的情况下指定 [osd] 或 [mon] 下的设置时,设置将分别应用于所有 OSD 或 monitor 守护进程。daemon-wide 设置的一个示例是 osd 内存目标。

示例

[osd]
osd_memory_target = 5368709120

您可以为守护进程的特定实例指定设置。您可以通过输入其类型来指定实例,并以句点(.)和实例 ID 分隔。Ceph OSD 守护进程的实例 ID 始终为数字,但 Ceph 监视器可以是字母数字。

示例

[osd.1]
# settings affect osd.1 only.

[mon.a]
# settings affect mon.a only.

典型的 Ceph 配置文件至少具有以下设置:

[global]
fsid = UNIQUE_CLUSTER_ID
mon_initial_members = NODE_NAME[, NODE_NAME]
mon_host = IP_ADDRESS[, IP_ADDRESS]

#All clusters have a front-side public network.
#If you have two NICs, you can configure a back side cluster
#network for OSD object replication, heart beats, backfilling,
#recovery, and so on
public_network = PUBLIC_NET[, PUBLIC_NET]
#cluster_network = PRIVATE_NET[, PRIVATE_NET]

#Clusters require authentication by default.
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

#Choose reasonable numbers for your number of replicas
#and placement groups.
osd_pool_default_size = NUM  # Write an object n times.
osd_pool_default_min_size = NUM # Allow writing n copy in a degraded state.
osd_pool_default_pg_num = NUM
osd_pool_default_pgp_num = NUM

#Choose a reasonable crush leaf type.
#0 for a 1-node cluster.
#1 for a multi node cluster in a single rack
#2 for a multi node, multi chassis cluster with multiple hosts in a chassis
#3 for a multi node cluster with hosts across racks, and so on
osd_crush_chooseleaf_type = NUM

1.5. 使用 Ceph metavariables

元变量极大地简化了 Ceph 存储集群配置。当在配置值中设置 metavariable 时,Ceph 会将 metavariable 扩展为一个具体的值。

在 Ceph 配置文件的 [global]、[ osd]、[ mon][client] 部分中使用时,元变量非常强大。但是,您也可以将它们用于管理套接字。Ceph 元变量与 Bash shell 扩展类似。

Ceph 支持以下 metavariables:

$cluster
描述
展开到 Ceph 存储集群名称。在同一个硬件上运行多个 Ceph 存储群集时很有用。
示例
/etc/ceph/$cluster.keyring
默认
Ceph
$type
描述
根据实例守护进程的类型,展开到 osdmon 之一。
示例
/var/lib/ceph/$type
$id
描述
扩展至守护进程标识符。对于 osd.0,这可能为 0
示例
/var/lib/ceph/$type/$cluster-$id
$host
描述
扩展至实例守护进程的主机名。
$name
描述
扩展至 $type.$id
示例
/var/run/ceph/$cluster-$name.asok

1.6. 在运行时查看 Ceph 配置

Ceph 配置文件可以在引导时查看,也可在运行时查看。

先决条件

  • Ceph 节点的根级别访问权限.
  • 访问 admin 密钥环.

流程

  1. 要查看运行时配置,请登录到运行守护进程的 Ceph 节点,并执行:

    语法

    ceph daemon DAEMON_TYPE.ID config show

    要查看 osd.0 的配置,您可以登录到包含 osd.0 的节点,并执行这个命令:

    示例

    [root@osd ~]# ceph daemon osd.0 config show

  2. 如需其他选项,请指定守护进程 和帮助

    示例

    [root@osd ~]# ceph daemon osd.0 help

1.7. 在运行时查看特定的配置

红帽 Ceph 存储的配置设置可以在运行时从 Ceph 监控节点查看。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • Ceph 监控节点的根级别访问权限.

流程

  1. 登录 Ceph 节点并执行:

    语法

    ceph daemon DAEMON_TYPE.ID config get PARAMETER

    示例

    [root@mon ~]# ceph daemon osd.0 config get public_addr

1.8. 在运行时设置特定配置

设置运行时配置有两种通用方法。

  • 使用 Ceph 监控器.
  • 使用 Ceph 管理套接字.

您可以使用 tellinjectargs 命令联系 monitor 来设置 Ceph 运行时配置选项。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对 Ceph monitor 或 OSD 节点的根级别访问权限。

流程

  1. 通过注入选项使用 Ceph 监控:

    ceph tell DAEMON_TYPE.DAEMON_ID or * injectargs --NAME VALUE [--NAME VALUE]

    DAEMON_TYPE 替换为 osdmon 之一。

    您可以使用 * 将 runtime 设置应用到特定类型的所有守护进程,或者指定特定的 DAEMON_ID (数字或名称)。

    例如,要将名为 osd.0ceph-osd 守护进程的 debug 日志更改为 0/5,请执行以下命令:

    [root@osd ~]# ceph tell osd.0 injectargs '--debug-osd 0/5'
    注意

    tell 命令采用多个参数,因此,要 告诉 的每个参数都必须在单引号内,并且前面带有两个短划线('--NAME VALUE [--NAME VALUE ]' ['--NAME VALUE [--NAME VALUE]'])。ceph tell 命令通过监视器。

    如果无法绑定到 monitor,您仍然可以使用 Ceph 管理套接字进行更改。

  2. 登录到要更改其配置的守护进程的节点。

    1. 将配置更改直接发布到 Ceph 守护进程:

      [root@osd ~]# ceph osd.0 config set debug_osd 0/5
      注意

      守护进程 命令不需要引号,因为它仅采用一个参数。

1.9. OSD 内存目标

BlueStore 使用 osd_memory_target 配置选项在指定目标大小下保留 OSD 堆内存用量。

选项 osd_memory_target 根据系统中的可用 RAM 设置 OSD 内存。默认情况下,Ansible 将该值设置为 4 GB。在部署守护进程时,您可以在 /usr/share/ceph-ansible/group_vars/all.yml 文件中更改以字节表示的值。您还可以使用 ceph.conf 文件中的 Ceph 覆盖来手动设置 osd 内存目标,例如,设置为 6 GB。

示例

ceph_conf_overrides:
  osd:
    osd memory target: 6442450944

重要

使用 Ceph 覆盖设置 选项时,请使用不带下划线的 选项。

当块设备缓慢(例如,传统的硬盘驱动器)时,Ceph OSD 内存缓存更重要,因为缓存命中的优势比使用固态硬盘高得多。不过,这必须要权衡为将 OSD 与其他服务在一起,例如在超融合基础架构(HCI)或其他应用中。

注意

osd_memory_target 的值是每个设备的一个 OSD,用于传统硬盘驱动器设备,每个设备两个 OSD 用于 NVMe SSD 设备。osds_per_devicegroup_vars/osds.yml 文件中定义。

其它资源

1.10. MDS 内存缓存限制

MDS 服务器将其元数据保存在一个名为 cephfs_metadata 的独立存储池中,是 Ceph OSD 的用户。对于 Ceph 文件系统,MDS 服务器必须支持整个红帽 Ceph 存储集群,而不仅仅是存储集群中的单一存储设备,因此其内存要求可能非常显著,特别是工作负载包含小到中型的中等大小文件,其中元数据与数据的比例要高得多。

示例: 将esds_cache_memory_limit 设置为 2 GiB

ceph_conf_overrides:
  osd:
    mds_cache_memory_limit: 2147483648
注意

对于具有元数据密集型工作负载的大型红帽 Ceph 存储集群,请勿将 MDS 服务器放在与其他内存密集型服务相同的节点上,这可让您选择为 MDS 分配更多内存,例如,大小大于 100 GB。

1.11. 其它资源

  • 有关具体选项说明和使用,请参见 附录 A 中的常规 Ceph 配置选项。

第 2 章 Ceph 网络配置

作为存储管理员,您必须了解红帽 Ceph 存储集群将在其中运行的网络环境,并相应地配置红帽 Ceph 存储。了解和配置 Ceph 网络选项可确保整个存储集群的最佳性能和可靠性。

2.1. 先决条件

  • 网络连接.
  • 安装红帽 Ceph 存储软件.

2.2. Ceph 的网络配置

网络配置对于构建高性能红帽 Ceph 存储集群至关重要。Ceph 存储集群不代表 Ceph 客户端执行请求路由或分配。相反,Ceph 客户端直接向 Ceph OSD 守护进程发出请求。Ceph OSD 代表 Ceph 客户端执行数据复制,这意味着复制和其他因素会给 Ceph 存储集群网络带来额外的负载。

所有 Ceph 集群都必须使用公共网络。但是,除非您指定了内部集群网络,Ceph 假设只有一个公共网络。Ceph 可以仅使用公共网络运行,但对于大型存储群集,您将看到通过第二个专用网络仅承载集群相关流量的显著性能改进。

重要

红帽建议运行具有两个网络的 Ceph 存储集群。个公共网络和一个专用网络.

为支持两个网络,每个 Ceph 节点都需要具有多个网络接口卡(NIC)。

网络架构

需要考虑运行两个独立的网络的原因如下:

  • 性能: Ceph OSD 处理 Ceph 客户端的数据复制。当 Ceph OSD 多次复制数据时,Ceph OSD 之间轻松出现网络负载,Ceph 客户端和 Ceph 存储集群之间的网络负载。这可以引入延迟并造成性能问题。恢复和重新平衡也可以带来公共网络上的显著延迟。
  • 安全性 :虽然大多数人普遍处于危险状态,但一些参与者将参与所谓的服务拒绝(DoS)攻击。当 Ceph OSD 之间的流量中断时,对等操作可能会失败,放置组可能不再反映 活动的 + 干净 状态,这可能会阻止用户读取和写入数据。防止此类攻击的一种好方法是维护一个完全独立的集群网络,其不能直接连接到互联网。

不需要网络配置设置。Ceph 只能使用公共网络运行,假设所有运行 Ceph 守护进程的主机上都配置了公共网络。但是,Ceph 允许您建立更具体的标准,包括用于公共网络的多个 IP 网络和子网掩码。您还可以建立单独的集群网络,以处理 OSD 心跳、对象复制和恢复流量。

请勿将配置中设置的 IP 地址与面向公共的 IP 地址网络客户端用于访问您的服务混淆。典型的内部 IP 网络通常是 192.168.0.010.0.0.0

注意

Ceph 对子网使用 CIDR 表示法,例如 10.0.0.0/24

重要

如果您为公共或专用网络指定了多个 IP 地址和子网掩码,则网络中的子网必须能够互相路由。此外,请确保在 IP 表中包括每个 IP 地址和子网,并根据需要打开它们的端口。

配置网络时,您可以重启集群或重启每个守护进程。Ceph 守护进程动态绑定,因此如果您更改了网络配置,则不必一次重启整个集群。

2.3. Ceph 守护进程的配置要求

Ceph 具有一个适用于所有守护进程的网络配置要求。Ceph 配置文件必须指定各个守护进程 的主机

重要

某些部署实用程序可能会为您创建配置文件。如果部署工具为您创建了这些值,则不要设置这些值。

重要

host 选项是节点的短名称,而不是其 FQDN。这不是 IP 地址。

您可以通过指定主机名来设置守护进程所在的 主机名 和 IP 地址。

示例

[mon.a]
    host = HOSTNAME
    mon_addr = IP_ADDRESS:6789

[osd.0]
    host = HOSTNAME

您不必为守护进程设置节点 IP 地址,它是可选的。如果您有一个静态 IP 配置并且公共和专用网络都正在运行,Ceph 配置文件可能会为每个守护进程指定节点的 IP 地址。为守护进程设置静态 IP 地址必须出现在 Ceph 配置文件的守护进程实例部分。

[osd.0]
    public_addr = NODE_PUBLIC_IP_ADDRESS
    cluster_addr = NODE_PRIVATE_IP_ADDRESS

您可以通过强制 OSD 主机,部署具有两个网络的集群中具有单个 NIC 的 OSD 主机。您可以通过添加 public addr 条目到 Ceph 配置文件的 [osd.n] 部分来强制 OSD 主机在公共网络上运行,其中 n 是指具有一个 NIC 的 OSD 数量。另外,公共网络和集群网络必须能够互相路由流量,红帽不建议出于安全原因推荐这些流量。

重要

红帽不建议为了安全起见,部署具有两个网络的单个 NIC 的 OSD 节点。

其它资源

  • 请参阅《 红帽 Ceph 存储配置指南》 附录 B 中的主机选项以了解具体的选项说明和使用。
  • 请参阅《 红帽 Ceph 存储配置指南》 附录 B 中的常用选项以了解具体的选项说明和使用。

2.4. Ceph 网络信息(conssenger)

Messenger 是 Ceph 网络层实施。红帽支持两种消息传递类型:

  • simple
  • async

在 Red Hat Ceph Storage 3 及更高版本 中,async 是默认的消息传递类型。若要更改 messenger 类型,可在 Ceph 配置文件的 [global] 部分中指定 ms_type 配置设置。

注意

对于 async messenger,红帽支持 posix 传输 类型,但目前不支持 rdma 或 dpdk。默认情况下,Red Hat Ceph Storage 3 或更高版本中的 ms_type 设置反映 async+posix,其中 async 是 messenger 类型,posix 是传输类型。

SimpleMessenger

SimpleMessenger 实施使用每个套接字有两个线程的 TCP 套接字。Ceph 将每个逻辑会话与一个连接关联。管道处理连接,包括每条消息的输入和输出。虽然 SimpleMessengerposix 传输 类型有效,但它不适用于其他传输类型,如 rdmadpdk

AsyncMessenger

因此,AsyncMessenger 是 Red Hat Ceph Storage 3 或更高版本的默认消息传递类型。对于红帽 Ceph 存储 3 或更高版本,AsyncMessenger 实施使用带有固定大小线程池的 TCP 套接字进行连接,其应当等于最多副本或纠删代码区块数。如果因为 CPU 数量较低或每台服务器的 OSD 数量导致性能下降,线程数可以设置为较低的值。

注意

目前,红帽不支持其他传输类型,如 rdmadpdk

其它资源

2.5. 配置公共网络

通过公共网络配置,您可以为公共网络配置明确定义 IP 地址和子网。您可以使用特定后台程序 的公共 addr 设置专门分配静态 IP 地址或覆盖公共网络 设置。

先决条件

  • 安装红帽 Ceph 存储软件.

流程

  1. 在 Ceph 配置文件的 [global] 部分中添加以下选项:
[global]
    ...
    public_network = PUBLIC-NET/NETMASK

其它资源

  • 请参阅《 红帽 Ceph 存储配置指南》 附录 B 中的常用选项以了解具体的选项说明和使用。

2.6. 配置专用网络

如果您声明了集群网络,OSD 将通过集群网络路由 heartbeat、对象复制和恢复流量。与使用单个网络相比,这可以提高性能。

重要

为了提高安全性,最好无法从公共网络或互联网访问集群网络。

集群网络配置允许您声明集群网络,专门为集群网络定义 IP 地址和子网。您可以使用特定 OSD 守护进程的集群 addr 设置来专门分配静态 IP 地址或覆盖 集群 网络设置

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 访问 Ceph 软件存储库。

流程

  1. 在 Ceph 配置文件的 [global] 部分中添加以下选项:
[global]
    ...
    cluster_network = CLUSTER-NET/NETMASK

2.7. 验证防火墙设置

默认情况下,守护进程绑定到 6800:7100 范围内的端口。您可以自由裁量配置这个范围。在配置防火墙前,请检查默认的防火墙配置。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 访问 Ceph 软件存储库。
  • Ceph 监控节点的根级别访问权限.

流程

  1. 您可以自由裁量配置这个范围:

    [root@mon ~]# sudo iptables -L
  2. 对于 firewalld 守护进程,请执行以下命令:

    [root@mon ~]# firewall-cmd --list-all-zones

    某些 Linux 分发包括拒绝所有入站请求的规则,但来自所有网络接口的 SSH 除外。

    示例

    REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

2.8. Ceph 监控节点的防火墙设置

默认情况下,Ceph 监视器侦听端口 6789。此外,Ceph 监视器始终在公共网络上运行。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 访问 Ceph 软件存储库。
  • Ceph 监控节点的根级别访问权限.

流程

  1. 使用以下示例添加规则:

    [root@mon ~]# sudo iptables -A INPUT -i IFACE -p tcp -s IP-ADDRESS/NETMASK --dport 6789 -j ACCEPT
    1. IFACE 替换为公共网络接口(如 eth0、eth1 等)。
    2. 使用公共网络的 IP 地址替换 IP-ADDRESS,将 NETMASK 替换为公共网络的子网掩码。
  2. 对于 firewalld 守护进程,执行以下命令:

    [root@mon ~]# firewall-cmd --zone=public --add-port=6789/tcp
    [root@mon ~]# firewall-cmd --zone=public --add-port=6789/tcp --permanent

2.9. Ceph OSD 的防火墙设置

默认情况下,Ceph OSD 绑定到 Ceph 节点上从端口 6800 开始的第一个可用端口。确保为节点上运行的每个 OSD 在端口 6800 上至少打开四个端口:

  • 个用于与客户端通信并在公共网络上监控。
  • 个用于将数据发送到集群网络上的其他 OSD。
  • 两个用于在群集网络上发送心跳数据包。
OSD 防火墙

端口特定于节点。但是,当进程重新启动并且绑定端口未被释放时,您可能需要打开更多端口,超过 Ceph 节点上运行的 Ceph 守护进程需要的端口数量。如果后台程序出现故障,请考虑打开一些额外端口,并且重新启动 而不释放端口,以便重新启动的 守护进程绑定到新端口。此外,还要考虑在每个 OSD 节点上打开端口范围 6800:7300

如果设置单独的公共和集群网络,您必须同时为公共网络和集群网络添加规则,因为客户端将使用公共网络和其他 Ceph OSD 守护进程进行连接,因此将使用集群网络进行连接。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 访问 Ceph 软件存储库。
  • 对 Ceph OSD 节点的根级别访问权限.

流程

  1. 使用以下示例添加规则:

    [root@mon ~]# sudo iptables -A INPUT -i IFACE  -m multiport -p tcp -s IP-ADDRESS/NETMASK --dports 6800:6810 -j ACCEPT
    1. IFACE 替换为公共网络接口(如 eth0、eth1 等)。
    2. 使用公共网络的 IP 地址替换 IP-ADDRESS,将 NETMASK 替换为公共网络的子网掩码。
  2. 对于 firewalld 守护进程,请执行以下操作:

    [root@mon ~] # firewall-cmd --zone=public --add-port=6800-6810/tcp
    [root@mon ~] # firewall-cmd --zone=public --add-port=6800-6810/tcp --permanent

如果您将集群网络放在另一个区中,根据需要打开那个区的端口。

2.10. 验证和配置 MTU 值

最大传输单元(MTU)值是链路层上发送的最大数据包的大小(以字节为单位)。默认的 MTU 值为 1500 字节。红帽建议将巨型帧(MTU 值为 9000 字节)用于 Red Hat Ceph Storage 集群。

重要

红帽 Ceph 存储在通信路径的所有网络设备中,公共和集群网络需要相同的 MTU 值。在在生产环境中使用 Red Hat Ceph Storage 集群之前,验证环境中所有节点和网络设备上的 MTU 值相同。

注意

将网络接口绑定在一起时,仅需要在绑定接口上设置 MTU 值。新的 MTU 值从绑定设备传播到底层网络设备。

先决条件

  • 节点的根级别访问权限。

流程

  1. 验证当前的 MTU 值:

    示例

    [root@mon ~]# ip link list
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: enp22s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 40:f2:e9:b8:a0:48 brd ff:ff:ff:ff:ff:ff

    在本例中,网络接口是 enp22s0f0,其 MTU 值为 1500

  2. 临时 在线更改 MTU 值:

    语法

    ip link set dev NET_INTERFACE mtu NEW_MTU_VALUE

    示例

    [root@mon ~]# ip link set dev enp22s0f0 mtu 9000

  3. 永久 更改 MTU 值。

    1. 打开 以编辑该特定网络接口的网络配置文件:

      语法

      vim /etc/sysconfig/network-scripts/ifcfg-NET_INTERFACE

      示例

      [root@mon ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp22s0f0

    2. 在新行中添加 MTU=9000 选项:

      示例

      NAME="enp22s0f0"
      DEVICE="enp22s0f0"
      MTU=9000 1
      ONBOOT=yes
      NETBOOT=yes
      UUID="a8c1f1e5-bd62-48ef-9f29-416a102581b2"
      IPV6INIT=yes
      BOOTPROTO=dhcp
      TYPE=Ethernet

    3. 重启网络服务:

      示例

      [root@mon ~]# systemctl restart network

其它资源

  • 如需了解更多详细信息,请参阅 Red Hat Enterprise Linux 8 的 配置和管理网络 指南。
  • 如需了解更多详细信息,请参阅红帽企业 Linux 7 的网络指南

2.11. 其它资源

第 3 章 Ceph monitor 配置

作为存储管理员,您可以使用 Ceph monitor 的默认配置值,或根据预期的工作负载对其进行自定义。

3.1. 先决条件

  • 安装红帽 Ceph 存储软件.

3.2. Ceph monitor 配置

了解如何配置 Ceph monitor 是构建可靠红帽 Ceph 存储集群的重要组成部分。所有集群至少有一个 monitor。监控器配置通常保持相当一致,但您可以在集群中添加、删除或替换 monitor。

Ceph 监视器维护群集映射的"主副本"。这意味着,Ceph 客户端只需连接一个 Ceph 监控器并检索当前的群集映射,便可确定所有 Ceph 监视器和 Ceph OSD 的位置。

Ceph 客户端必须先连接 Ceph monitor,然后才能从 Ceph OSD 读取或写入 Ceph OSD。利用群集映射的当前副本和 CRUSH 算法,Ceph 客户端可以计算任何对象的位置。计算对象位置的功能使得 Ceph 客户端能够直接与 Ceph OSD 通信,这是 Ceph 高可扩展性和性能的一个重要方面。

Ceph 监控器的主要角色是维护 cluster map 的主副本。Ceph 监视器还提供身份验证和日志记录服务。Ceph 监视器将 monitor 服务中的所有更改写入到单个 Paxos 实例,而 Paxos 将更改写入到键值存储,以获得强一致性。Ceph 监视器可以在同步操作期间查询 cluster map 的最新版本。Ceph 监视器利用键值存储的快照和迭代器(使用 leveldb 数据库)来执行存储范围的同步。

Paxos

3.3. Ceph 集群映射

cluster map 是 map 的复合,包括 monitor map、OSD map 和 PG map。集群映射跟踪多个重要事件:

  • 红帽 Ceph 存储 群集中 有哪些进程.
  • 红帽 Ceph 存储集群 中的 哪些进程 已经启动、运行或 停机
  • 放置组是 activeinactive,并且为 clean,还是处于其他状态。
  • 反映集群当前状态的其他详情,例如:

    • 存储空间总量或
    • 已使用的存储量。

例如,当群集状态发生重大变化时,Ceph OSD 出现故障时,PG 处于降级状态,以此类推。集群映射会更新,以反映集群的当前状态。此外,Ceph 监控器也维护群集先前状态的历史记录。monitor map、OSD map 和 PG map 各自维护其 map 版本的历史记录。每个版本称为 一个时期

在操作红帽 Ceph 存储集群时,跟踪这些状态是集群管理的重要组成部分。

3.4. Ceph monitor 仲裁

群集将通过单个 monitor 足够运行。但是,单个监控器是单一故障点。为确保生产 Ceph 存储群集中的高可用性,请使用多个 monitor 运行 Ceph,使得单个 monitor 故障不会导致整个存储群集出现故障。

当 Ceph 存储集群运行多个 Ceph 监控来实现高可用性时,Ceph monitor 使用 Paxos 算法来就主集群映射建立共识。共识要求运行的大多数 monitor 建立仲裁,以便就 cluster map 达成一致。例如,1、3 中的 2、5 中的 3 个、6 中的 4 个,等等。

红帽建议运行具有至少三个 Ceph 监控器的生产 Red Hat Ceph Storage 集群,以确保高可用性。当您运行多个监控器时,您可以指定作为存储集群成员的初始监控器,以便建立仲裁。这可缩短存储群集上线所需的时间。

[mon]
mon_initial_members = a,b,c
注意

存储集群中的大多数 monitor 必须能够互相访问,才能建立仲裁。您可以减少初始 monitor 数量,以使用 mon_initial_members 选项建立仲裁。

3.5. Ceph monitor 一致性

将 monitor 设置添加到 Ceph 配置文件时,您需要了解 Ceph 监控器的一些架构方面。Ceph 在发现集群中的其他 Ceph 监控器时,对 Ceph 监控器施加严格的一致性要求。虽然 Ceph 客户端和其他 Ceph 守护进程使用 Ceph 配置文件来发现监视器,而监视器则通过 monitor map(monmap)发现彼此,而非 Ceph 配置文件。

Ceph 监控器在发现红帽 Ceph 存储集群中的其他 Ceph monitor 时始终引用 monitor map 的本地副本。使用 monitor map 而不是 Ceph 配置文件可避免破坏集群的错误。例如,在指定监控地址或端口时,Ceph 配置文件中的拼写错误。由于监视器使用 monitor map 进行发现,并且它们与客户端和其他 Ceph 守护进程共享监控器映射,因此 monitor map 为监控器提供严格保证其共识有效。

将更新应用到 monitor map 时严格一致

与 Ceph 监控器上的任何其他更新一样,对 monitor map 的更改始终通过名为 Paxos 的分布式一致性算法运行。Ceph 监控器必须每次更新到 monitor map(如添加或删除 Ceph monitor)达成一致,以确保仲裁中的每个 monitor 具有相同的 monitor map 版本。monitor map 的更新是逐步进行的,以便 Ceph 监控器在版本上具有最新认可的版本,以及一组之前的版本。

维护历史

维护历史记录可让具有较旧版本的 monitor map 的 Ceph monitor 跟上红帽 Ceph 存储群集的当前状态。

如果 Ceph 监控器通过 Ceph 配置文件而不是通过 monitor map 互相发现,它会带来额外的风险,因为 Ceph 配置文件没有自动更新和分发。Ceph 监控器可能会意外使用较旧的 Ceph 配置文件,无法识别 Ceph 监控器,未能达到仲裁数,或者让 Paxos 无法准确确定系统的当前状态。

3.6. 引导 Ceph 监控器

在大多数配置和部署情形中,Ansible 等部署 Ceph 的工具可能会通过为您生成监控映射来帮助引导 Ceph 监控器。

Ceph 监控器需要几个显式设置:

  • 文件系统 IDfsid 是对象存储的唯一标识符。由于您可以在同一个硬件上运行多个存储集群,所以您必须在引导监控器时指定对象存储的唯一 ID。使用部署工具(如 Ansible)将生成文件系统标识符,但您也可以手动指定 fsid
  • 监控 ID :监控 ID 是分配给集群中各个 monitor 的唯一 ID。它是一个字母数字值,按照惯例,标识符通常跟随字母顺序递增。例如 b 等等。这可以在 Ceph 配置文件中设置。例如,通过部署工具或使用 ceph 命令,[ mon.a]、[mon.b] 等。
  • key :监控器必须具有 secret 密钥。

3.7. 配置文件中的 Ceph monitor 部分

要将配置设置应用到整个集群,请在 [global] 部分下输入配置设置。要将配置设置应用到集群中的所有 monitor,请在 [mon] 部分下输入配置设置。若要将配置设置应用到特定的监视器,请指定 monitor 实例。

示例

[mon.a]

按照惯例,监控实例名称使用 alpha 表示法。

[global]

[mon]

[mon.a]

[mon.b]

[mon.c]

3.8. Ceph monitor 的最小配置

Ceph 配置文件中 Ceph 监控器的最小监控器设置包含每个 monitor 的主机名(如果未为 DNS 和 monitor 地址配置)。您可以在 [mon] 下或在特定 monitor 条目下配置它们。

[mon]
mon_host = hostname1,hostname2,hostname3
mon_addr = 10.0.0.10:6789,10.0.0.11:6789,10.0.0.12:6789

或者

[mon.a]
host = hostname1
mon_addr = 10.0.0.10:6789
注意

monitor 的最小配置假定部署工具为您生成 fsidmon. 键。

重要

部署 Ceph 集群后,请勿更改 monitor 的 IP 地址。

自 RHCS 2.4 起,当集群配置为通过 DNS 服务器查找监控器时,Ceph 不需要 mon_host。若要配置 Ceph 群集以进行 DNS 查找,可在 Ceph 配置文件中设置 mon_dns_srv_name 设置。

设置之后,配置 DNS。为 DNS 区域中的 monitor 创建 IPv4(A)或 IPv6(AAAA)记录。

示例

#IPv4
mon1.example.com. A 192.168.0.1
mon2.example.com. A 192.168.0.2
mon3.example.com. A 192.168.0.3

#IPv6
mon1.example.com. AAAA 2001:db8::100
mon2.example.com. AAAA 2001:db8::200
mon3.example.com. AAAA 2001:db8::300

其中:example.com 是 DNS 搜索域。

然后,创建 SRV TCP 记录,名称设为 mon_dns_srv_name 配置设置指向三个 monitor。以下示例使用默认的 ceph-mon 值。

示例

_ceph-mon._tcp.example.com. 60 IN SRV 10 60 6789 mon1.example.com.
_ceph-mon._tcp.example.com. 60 IN SRV 10 60 6789 mon2.example.com.
_ceph-mon._tcp.example.com. 60 IN SRV 10 60 6789 mon3.example.com.

默认情况下,监视器在端口 6789 上运行,它们在示例中的优先级和权重分别设置为 1060

3.9. Ceph 的唯一标识符

每个红帽 Ceph 存储集群都有一个唯一标识符(fsid)。如果指定,它通常会显示在配置文件的 [global] 部分下。部署工具通常会生成 fsid 并将其存储在 monitor map 中,因此该值可能不会显示在配置文件中。fsid 可让您在同一硬件上为多个集群运行守护进程。

注意

如果您使用的部署工具可以为您设置这个值,则不要设置这个值。

3.10. Ceph monitor 数据存储

Ceph 提供 Ceph 监控存储数据的默认路径。

重要

红帽建议在单独的主机上运行 Ceph 监视器和来自 Ceph OSD 的驱动器,以便在生产 Red Hat Ceph Storage 集群中获得最佳性能。

Ceph 监视器会经常调用 fsync() 函数,这可能会干扰 Ceph OSD 工作负载。

Ceph 监视器将其数据存储为键值对。使用数据存储可防止恢复 Ceph 监控器通过 Paxos 运行损坏的版本,而且它使一个原子批处理中的多个修改操作具有诸多优点。

重要

红帽不建议更改默认数据位置。如果您修改了默认位置,请通过在配置文件的 [mon] 部分中进行设置,使其在 Ceph 监控器间保持一致。

重要

存储 monitor 数据库的磁盘需要加密,更多信息请参阅 LUKS 磁盘加密

3.11. Ceph 存储容量

当红帽 Ceph 存储集群达到其最大容量时(通过 mon_osd_full_ratio 参数指定),Ceph 会阻止您写入或读取 Ceph OSD 作为安全措施,以防止数据丢失。因此,让生产红帽 Ceph 存储集群采用满满比率并非好事,因为它会牺牲高可用性。默认的完整比率为 .95,即容量的 95%。对于具有少量 OSD 的测试集群而言,这是非常积极的设置。

提示

在监控集群时,请警告与 nearfull 比率相关的警告。这意味着,如果一个或多个 OSD 出现故障,某些 OSD 的故障可能会导致临时服务中断。考虑添加更多 OSD 来增加存储容量。

测试集群的常见场景是系统管理员从红帽 Ceph 存储集群中删除 Ceph OSD,以观察集群重新平衡。然后,删除另一个 Ceph OSD 等,直到红帽 Ceph 存储集群最终达到完整的比率和锁定。

重要

红帽建议您对测试集群进行一些容量规划。通过规划,您可以测量维护高可用性所需的备用容量。

理想情况下,您想要对一系列 Ceph OSD 故障进行规划,使得集群可以恢复到 活动的 + 清理 状态,而无需立即替换这些 Ceph OSD。您可以在 活跃 + 降级 状态下运行集群,但这不是正常操作条件的理想选择。

下图显示了一个简单的红帽 Ceph 存储集群,其中包含 33 个 Ceph 节点,每个主机有一个 Ceph OSD OSD,每个 Ceph OSD 守护进程读取并写入 3TB 驱动器。因此,此示例红帽 Ceph 存储群集的实际容量最大为 99TB。凭借 mon osd full 比率 0.95,如果红帽 Ceph 存储集群剩余容量为 5 TB,则集群不允许 Ceph 客户端读取和写入数据。因此,红帽 Ceph 存储集群的运行容量为 95 TB,而非 99 TB。

存储容量

在这样的集群中,一个或两个 OSD 出现故障是正常的。不太频繁但合理的情景涉及机架的路由器或电源故障,这将同时关闭多个 OSD,如 OSD 7-12。在这种情景中,您仍然应努力使集群保持正常运行并达到 活跃的 + 干净 状态,即使这意味着以较短的顺序添加几个额外的 OSD。如果您的容量利用率过高,则可能不会丢失数据,但如果集群的容量利用率超过满比率,您仍可在解决故障域中的中断时牺牲数据可用性。因此,红帽建议至少进行一些粗略的容量规划。

为集群识别两个数字:

  • OSD 数量
  • 集群的总容量

若要确定集群中 OSD 的平均平均容量,请将集群的总容量除以集群中 OSD 的数量。考虑将该数量乘以在正常操作期间预计同时失败的 OSD 数量(数量相对较少)。最后,将集群容量与满比率相乘以达到最大操作容量。然后,减少您预计不会达到合理的满比率的 OSD 的数据量。重复这一存在更多 OSD 故障(如 OSD 机架)的 OSD 故障的进程,以达到接近完整比率的合理数量。

3.12. Ceph heartbeat

Ceph 监视器通过要求各个 OSD 报告,以及从 OSD 接收关于其邻近 OSD 状态的报告,了解关于集群的信息。Ceph 为 monitor 和 OSD 之间的交互提供合理的默认设置,但您可以根据需要进行修改。

3.13. Ceph monitor 同步角色

当您使用多个监控器运行生产集群时,每个 monitor 检查都会查看相邻的 monitor 是否具有 cluster map 的最新版本。例如,邻居 monitor 中带有一个或多个 epoch 编号的映射比即时监视器映射中最新的时期高。集群中的一个监控器可能会低于另一个 monitor,达到它必须离开仲裁的点,同步以检索有关集群的最新信息,然后重新加入仲裁。

同步角色

为了进行同步,监控器可以假定以下三个角色之一:

  • Leader :leader 是第一个实现 cluster map 最新版本的 Paxos 版的监控器。
  • provider: 提供者是一个具有 cluster map 最新版本的监控器,但不是第一个实现最新版本的监控器。
  • requester: Requester 是一个在领导机之后使用的监控器,必须同步才能检索有关集群的最新信息,然后才能重新加入仲裁。

这些角色使领导能够将同步职责委派给提供程序,从而防止同步请求给领导机过载并提高性能。在下图中,请求者已了解到它已在其他 monitor 后面。请求者要求领导机同步,领导机则告知请求者与提供程序同步。

监控同步

监控同步

同步总是在新 monitor 加入群集时发生。在运行时操作期间,监控器可在不同时间接收集群映射的更新。这意味着领导机和提供程序角色可以从一个监控器迁移到另一个监控器。例如,如果在同步时发生这种情况,则提供商将落于领导机之后,提供商可以终止与请求者的同步。

同步完成后,Ceph 需要在整个集群中修剪。修剪要求放置组是 活跃的 + clean

3.14. Ceph 时间同步

Ceph 守护进程互相传递关键消息,必须在守护进程达到超时阈值之前予以处理。如果 Ceph 监视器中的时钟未同步,可能会导致一些异常情况。

例如:

  • 守护进程忽略收到的消息,如过时的时间戳。
  • 当消息未能及时收到时,超时会太快或延迟。
提示

在 Ceph 监控主机上安装 NTP,以确保监控集群与同步时钟一起运行。

NTP 可能仍然可以看到时钟漂移,即使差异尚不严重。即使 NTP 保持合理的同步级别,仍可能会触发 Ceph 时钟偏移和时钟偏移警告。在这种情况下,增加您的时钟偏移可能会令人容忍。但是,有很多因素,如工作负载、网络延迟、将 覆盖到默认超时和其他同步选项(可能影响可接受的时钟偏移程度而不影响 Paxos 保障)。

其它资源

3.15. 其它资源

  • 有关具体选项说明和使用,请参见 附录 C 中的所有 红帽 Ceph 存储 monitor 配置选项。

第 4 章 Ceph 身份验证配置

作为存储管理员,验证用户和服务对于红帽 Ceph 存储集群的安全性至关重要。红帽 Ceph 存储包括 Cephx 协议,作为默认协议,用于加密身份验证,以及用于管理存储集群中身份验证的工具。

4.1. 先决条件

  • 安装红帽 Ceph 存储软件.

4.2. cephx 身份验证

cephx 协议默认为启用。加密验证具有一些计算成本,尽管它们通常非常低。如果连接客户端和主机的网络环境被视为安全且您无法负担身份验证计算成本,您可以禁用它。在部署 Ceph 存储集群时,部署工具将创建 client.admin 用户和 密钥环。

重要

红帽建议您使用身份验证。

注意

如果您禁用了身份验证,您将面临中间人攻击的风险,并更改客户端和服务器消息,这可能导致重大安全问题。

启用和禁用 Cephx

启用 Cephx 需要您已为 Ceph monitor 和 OSD 部署密钥。在或关闭 Cephx 身份验证时,您不必重复部署过程。

4.3. 启用 Cephx

启用 cephx 后,Ceph 将在默认搜索路径中查找密钥环,其中包括 /etc/ceph/$cluster.$name.keyring。您可以通过在 Ceph 配置文件的 [global] 部分中添加 keyring 选项来覆盖此位置,但不建议这样做。

执行以下步骤,在禁用身份验证的集群上启用 cephx。如果您或您的部署工具已生成密钥,您可以跳过与生成密钥相关的步骤。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • Ceph 监控节点的根级别访问权限.

流程

  1. 创建 client.admin 密钥,并保存客户端主机的密钥副本:

    [root@mon ~]# ceph auth get-or-create client.admin mon 'allow *' osd 'allow *' -o /etc/ceph/ceph.client.admin.keyring
    警告

    这将擦除任何现有 /etc/ceph/client.admin.keyring 文件的内容。如果部署工具已为您完成该部署工具,则不要执行此步骤。

  2. 为 monitor 集群创建密钥环并生成 monitor secret 密钥:

    [root@mon ~]# ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
  3. 将 monitor 密钥环复制到每个 monitor mon 数据 目录中的 ceph.mon.keyring 文件中。例如,若要将其复制到群集 ceph 中的 mon.a,请使用以下内容:

    [root@mon ~]# cp /tmp/ceph.mon.keyring /var/lib/ceph/mon/ceph-a/keyring
  4. 为每个 OSD 生成一个 secret 密钥,其中 ID 是 OSD 号:

    ceph auth get-or-create osd.ID mon 'allow rwx' osd 'allow *' -o /var/lib/ceph/osd/ceph-ID/keyring
  5. 默认情况下,cephx 身份验证协议已启用。

    注意

    如果之前通过将身份验证选项设置为 none 禁用了 cephx 身份验证协议,则在 Ceph 配置文件(/etc/ceph/ceph.conf)的 [global] 部分下删除以下行将重新启用 cephx 身份验证协议:

    auth_cluster_required = none
    auth_service_required = none
    auth_client_required = none
  6. 启动或重启 Ceph 存储集群。

    重要

    启用 cephx 需要停机,因为集群需要完全重启,或者需要关闭,然后在禁用客户端 I/O 时启动。

    在重启或关闭存储集群前,需要设置这些标记:

    [root@mon ~]# ceph osd set noout
    [root@mon ~]# ceph osd set norecover
    [root@mon ~]# ceph osd set norebalance
    [root@mon ~]# ceph osd set nobackfill
    [root@mon ~]# ceph osd set nodown
    [root@mon ~]# ceph osd set pause

    启用 cephx 且所有 PG 都活跃且干净后,取消设置标志:

    [root@mon ~]# ceph osd unset noout
    [root@mon ~]# ceph osd unset norecover
    [root@mon ~]# ceph osd unset norebalance
    [root@mon ~]# ceph osd unset nobackfill
    [root@mon ~]# ceph osd unset nodown
    [root@mon ~]# ceph osd unset pause

4.4. 禁用 Cephx

下列规程描述了如何禁用 Cephx。如果集群环境相对安全,您可以偏移运行身份验证的计算费用。

重要

红帽建议启用身份验证。

但是,在设置或故障排除期间临时禁用身份验证可能更简单。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • Ceph 监控节点的根级别访问权限.

流程

  1. 通过在 Ceph 配置文件的 [global] 部分中设置以下选项来禁用 cephx 身份验证:

    auth_cluster_required = none
    auth_service_required = none
    auth_client_required = none
  2. 启动或重启 Ceph 存储集群。

4.5. cephx 用户密钥环

在运行 Ceph 时,ceph 管理 命令和 Ceph 客户端需要身份验证密钥来访问 Ceph 存储集群。

ceph 管理命令和客户端提供这些密钥的最常见方式是将 Ceph 密钥环包含在 /etc/ceph/ 目录下。文件名通常是 ceph.client.admin.keyring 或 $cluster.client.admin.keyring。如果在 /etc/ceph/ 目录下包含密钥环,则无需在 Ceph 配置文件中指定 密钥环 条目。

重要

红帽建议将 Red Hat Ceph Storage 集群密钥环文件复制到您要运行管理命令的节点,因为它包含 client.admin 密钥。

要做到这一点,请执行以下命令:

# scp USER@HOSTNAME:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ceph.client.admin.keyring

USER 替换为主机上使用的用户名,并将 client.admin 键和 HOSTNAME 替换为该主机的主机名。

注意

确保 ceph.keyring 文件在客户端计算机上设置了适当的权限。

您可以使用密钥设置(不推荐)或在 Ceph 配置文件中指定 密钥 本身,或使用 keyfile 设置指定密钥文件的路径。

4.6. cephx 守护进程密钥环

管理用户或部署工具可能会生成守护进程密钥环,其方式与生成用户密钥环相同。默认情况下,Ceph 将守护进程密钥环存储在其数据目录中。默认密钥环位置,以及守护进程正常工作所需的能力。

注意

monitor 密钥环包含密钥但不包含任何功能,不属于 Ceph 存储群集 auth 数据库 的一部分。

守护进程数据目录位置默认为表单的目录:

/var/lib/ceph/$type/CLUSTER-ID

示例

/var/lib/ceph/osd/ceph-12

您可以覆盖这些位置,但不建议这样做。

4.7. cephx 消息签名

Ceph 提供精细的控制,以便您可以针对客户端和 Ceph 之间的服务消息启用或禁用签名。您可以针对 Ceph 守护进程之间的消息启用或禁用签名。

重要

红帽建议 Ceph 使用为该初始身份验证设置的 session 键来验证实体之间的所有持续消息。

注意

Ceph 内核模块尚不支持签名。

4.8. 其它资源

  • 有关具体选项说明和使用,请参见 附录 D 中的所有红帽 Ceph 存储 Cephx 配置选项。

第 5 章 池、放置组和 CRUSH 配置

作为存储管理员,您可以选择将红帽 Ceph 存储默认选项用于池、放置组和 CRUSH 算法,或者针对预期的工作负载自定义它们。

5.1. 先决条件

  • 安装红帽 Ceph 存储软件.

5.2. 池放置组和 CRUSH

当您创建池并为池设置 PG 数量时,Ceph 会在您不特别覆盖默认值时使用默认值。

重要

红帽建议覆盖某些默认值。特别是,设置池的副本大小并覆盖默认放置组数。

您可以在运行池命令时设置这些值。您还可以通过在 Ceph 配置文件的 [global] 部分中添加新参数来覆盖默认值。

示例

[global]

# By default, Ceph makes 3 replicas of objects. If you want to set 4
# copies of an object as the default value--a primary copy and three replica
# copies--reset the default values as shown in 'osd pool default size'.
# If you want to allow Ceph to write a lesser number of copies in a degraded
# state, set 'osd pool default min size' to a number less than the
# 'osd pool default size' value.

osd_pool_default_size = 4  # Write an object 4 times.
osd_pool_default_min_size = 1 # Allow writing one copy in a degraded state.

# Ensure you have a realistic number of placement groups. We recommend
# approximately 100 per OSD. E.g., total number of OSDs multiplied by 100
# divided by the number of replicas (i.e., osd pool default size). So for
# 10 OSDs and osd pool default size = 4, we'd recommend approximately
# (100 * 10) / 4 = 250.

osd_pool_default_pg_num = 250
osd_pool_default_pgp_num = 250

5.3. 其它资源

  • 请参阅 附录 E 中的所有红帽 Ceph 存储池、放置组和 CRUSH 配置选项,了解特定的选项说明和使用。

第 6 章 Ceph 对象存储守护进程(OSD)配置

作为存储管理员,您可以将 Ceph 对象存储守护进程(OSD)配置为冗余,并根据预期的工作负载进行优化。

6.1. 先决条件

  • 安装红帽 Ceph 存储软件.

6.2. Ceph OSD 配置

所有 Ceph 集群都具有配置,用于定义:

  • 集群身份
  • 身份验证设置
  • 集群中 Ceph 守护进程成员资格
  • 网络配置
  • 主机名和地址
  • 密钥环的路径
  • OSD 日志文件的路径
  • 其他运行时选项

红帽 Ceph 存储控制台或 Ansible 等部署工具通常会为您创建初始 Ceph 配置文件。但是,如果您不希望使用部署工具来引导集群,您可以自行创建。

为方便起见,每个守护进程都有一系列默认值,即 ceph/src/common/config_opts.h 脚本设置了许多默认值。您可以使用 monitor inform 命令 或直接连接到 Ceph 节点上的守护进程套接字,通过 Ceph 配置文件或在运行时覆盖这些设置。

重要

红帽不建议更改默认路径,因为它使得以后对 Ceph 进行故障排除更加困难。

6.3. 清理 OSD

除了制作多个对象副本外,Ceph 还通过清理 PG 来确保数据的完整性。Ceph 清理类似于对象存储层上的 fsck 命令。

对于每个放置组,Ceph 会生成所有对象的目录,并比较每个主对象及其副本,以确保不会缺少或不匹配任何对象。

轻型清理(daily)检查对象大小和属性。深度清理(每周)读取数据并使用校验和来确保数据的完整性。

清理对于维护数据完整性非常重要,但可以降低性能。调整以下设置,以增加或减少清理操作:

6.4. 回填 OSD

当您将 Ceph OSD 添加到集群或从集群移除时,CRUSH 算法通过将 PG 移入或从 Ceph OSD 移动来恢复平衡,以此重新平衡集群。迁移 PG 及其包含的对象的过程可以显著降低集群操作性能。为了保持操作性能,Ceph 利用"回填"流程执行此迁移,这使得 Ceph 可以将回填操作设置为比请求低的优先级,以读取或写入数据。

6.5. OSD 恢复

当集群启动或 Ceph OSD 意外终止并重新启动时,OSD 在发生写入操作前开始与其他 Ceph OSD 对等。

如果 Ceph OSD 崩溃并恢复在线,它通常与其他含有 PG 中最新版本对象的 Ceph OSD 不同步。发生这种情况时,Ceph OSD 进入恢复模式,并寻求获取最新数据副本并更新其 map。根据 Ceph OSD 停机的时间,OSD 对象和放置组可能显著过时。此外,如果故障域出现故障,例如机架,多个 Ceph OSD 可能同时恢复在线。这使得恢复过程耗费大量时间且耗费大量资源。

为了保持运行性能,Ceph 会执行恢复,限制恢复请求、线程和对象区块大小,使得 Ceph 能够在降级状态下正常运行。

6.6. 其它资源

  • 有关特定选项的说明和使用,请参见 附录 F 中的所有红帽 Ceph 存储 Ceph OSD 配置选项。

第 7 章 Ceph 监视器和 OSD 交互配置

作为存储管理员,您必须正确配置 Ceph monitor 和 OSD 之间的交互,以确保工作环境稳定。

7.1. 先决条件

  • 安装红帽 Ceph 存储软件.

7.2. Ceph 监视器和 OSD 交互

在完成初始 Ceph 配置后,您可以部署并运行 Ceph。当您执行 ceph 运行状况ceph -s 等命令时,Ceph monitor 会报告 Ceph 存储集群的当前状态。Ceph 监控器通过要求各个 Ceph OSD 守护进程的报告,以及从 Ceph OSD 守护进程接收关于其邻近 Ceph OSD 守护进程状态的报告,了解 Ceph 存储集群。如果 Ceph monitor 未收到报告,或者它收到 Ceph 存储集群中更改的报告,Ceph monitor 会更新 Ceph 群集映射的状态。

Ceph 为 Ceph monitor 和 OSD 交互提供合理的默认设置。但是,您可以覆盖默认值。以下小节介绍了 Ceph 监控器和 Ceph OSD 守护进程如何交互来监控 Ceph 存储集群。

7.3. OSD 心跳

每个 Ceph OSD 守护进程每 6 秒检查其他 Ceph OSD 守护进程的心跳。要更改心跳间隔,请在 Ceph 配置文件的 [osd] 部分下添加 osd heartbeat interval 设置,或者在运行时更改其值。

如果邻居 Ceph OSD 守护进程未在 20 秒宽限期内发送 heartbeat 数据包,Ceph OSD 守护进程可能会考虑相邻的 Ceph OSD 守护进程 停机。它将报告回 Ceph 监控器,后者将更新 Ceph 群集映射。若要更改此宽限期,可在 Ceph 配置文件的 [osd] 部分下添加 osd heartbeat 宽限期,或者在运行时设置其值。

检查 Heartbeats

7.4. 将 OSD 报告为 down

默认情况下,来自不同主机 的两个 Ceph OSD 守护进程必须报告给 Ceph 监控器,另一个 Ceph OSD 守护进程在 Ceph 监控确认报告的 Ceph OSD 守护进程已 停机 之前。

不过,所有报告故障的 OSD 都位于带有错误交换机的机架中,导致 OSD 间的连接问题。

为避免"false 警报",Ceph 会考虑将故障报告为类似较慢"子集群"的代理。虽然情况并不总是如此,但它可以帮助管理员将宽限期更正为性能不佳的系统子集。

Ceph 使用 mon_osd_reporter_subtree_level 设置,通过 CRUSH map 中的常见祖先类型将对等点分组到"subcluster"。

默认情况下,仅需要 来自不同子树 的两个报告来报告另一个 Ceph OSD 守护进程 down。管理员可以通过在 Ceph 配置文件的 [mon] 部分添加 mon_osd_ min_down_reporters 和 mon_osd_reporter_subtree_ level 设置,更改将 Ceph OSD 守护进程 向下 报告到 Ceph monitor 所需的报告者数量和 mon_osd _subtree_level 设置。

报告关闭 OSD

7.5. 报告对等故障

如果 Ceph OSD 守护进程无法与 Ceph 配置文件或 cluster map 中定义的任何 Ceph OSD 守护进程对等,它将每 30 秒对最新的 cluster map 副本 ping Ceph monitor。您可以通过在 Ceph 配置文件的 [osd] 部分下添加 osd mon heartbeat interval 设置,或通过在运行时设置值来更改 Ceph 监控心跳间隔。

报告 Peering Failure

7.6. OSD 报告状态

如果 Ceph OSD 守护进程未向 Ceph monitor 报告,Ceph monitor 将在 mon osd 报告超时 后考虑 Ceph OSD 守护进程 停机。Ceph OSD 守护进程在以下情况下向 Ceph monitor 发送报告:故障、PG stat 的变化、upp _thru 中的更改,或者在 5 秒内引导时。您可以通过在 Ceph 配置文件的 [osd] 部分下添加 osd mon report interval min 设置,或者在运行时设置值来更改 Ceph OSD 守护进程的最低报告间隔。

Ceph OSD 守护进程每 120 秒向 Ceph monitor 发送报告,无论是否发生了任何显著更改。您可以通过在 Ceph 配置文件的 [osd] 部分下添加 osd mon report interval max 设置,或通过在运行时设置值来更改 Ceph monitor 报告间隔。

110 Ceph 配置更新 0720 10

7.7. 其它资源

  • 有关特定选项的说明和使用,请参见 附录 G 中的所有红帽 Ceph 存储 Ceph monitor 和 OSD 配置选项。

第 8 章 Ceph 调试和日志记录配置

作为存储管理员,您可以增加调试和记录信息的数量,以帮助诊断红帽 Ceph 存储中的问题。

8.1. 先决条件

  • 安装红帽 Ceph 存储软件.

8.2. Ceph 调试和日志记录

Ceph 配置文件中不需要调试设置,但可以添加来优化日志记录。Ceph 日志记录配置的更改通常在运行时发生,但也可能在 Ceph 配置文件中进行修改。例如,如果启动集群时出现问题,请考虑增加 Ceph 配置文件中的日志设置。解决问题后,删除设置或将其恢复为运行时操作的最佳设置。

默认情况下,查看 /var/log/ceph 下的 Ceph 日志文件。

提示

当 debug 输出减慢集群时,延迟可能会隐藏竞争条件。

日志记录非常耗费资源。如果集群的特定区域出现问题,请为集群的那个区域启用日志记录。例如,如果 OSD 运行良好,但 Ceph 对象网关没有运行,首先为遇到问题的特定网关实例启用调试日志记录。根据需要增加或减少各个子系统的日志记录。

重要

详细日志记录每小时可生成 1GB 的数据。如果 OS 磁盘达到其容量,节点将停止工作。

如果启用了 Ceph 日志记录或日志记录率提高,请确保 OS 磁盘有足够的容量。

当集群运行良好时,请删除不必要的调试设置,以确保集群以最佳方式运行。日志记录调试输出消息相对较慢,操作集群时会浪费资源。

8.3. 其它资源

  • 有关特定选项的说明和使用,请参见 附录 J 中的所有红帽 Ceph 存储 Ceph 调试和日志记录配置选项。

附录 A. 常规配置选项

这些是 Ceph 的一般配置选项。

注意

通常,它们将通过部署工具(如 Ansible)自动设置。

fsid
描述
文件系统 ID。每个群集一个.
类型
UUID
必填
否.
默认
不适用.通常由部署工具生成.
admin_socket
描述
用于对守护进程执行管理命令的套接字,无论 Ceph 监视器是否已建立仲裁。
类型
字符串
必填
默认
/var/run/ceph/$cluster-$name.asok
pid_file
描述
monitor 或 OSD 将在其中写入其 PID 的文件。例如,/var/run/$cluster/$type.$id.pid 将为 ID 为 ceph 集群中运行mon 创建 /var/run/ceph/mon.a.pid。当守护进程安全停止时,会删除 The pid 文件。如果未对进程进行守护进程化(即它使用 -f 或 - d 选项运行),则不会创建 pid 文件
类型
字符串
必填
默认
chdir
描述
在 Ceph 守护进程启动并运行后,目录 Ceph 守护进程将更改为。建议默认 / 目录.
类型
字符串
必填
默认
/
max_open_files
描述
如果设置,当红帽 Ceph 存储集群启动时,Ceph 会在 OS 级别设置 max_open_fds (即,最大文件描述符 # 数)。它有助于防止 Ceph OSD 耗尽文件描述符。
类型
64 位 Integer
必填
默认
0
fatal_signal_handlers
描述
如果设置,我们将为 SEGV、ABRT、BUS、ILL、FPE、XCPU、XFSZ、SYS 信号安装信号处理程序,以生成有用的日志消息。
类型
布尔值
默认
true

附录 B. Ceph 网络配置选项

这些是 Ceph 的常用网络配置选项。

public_network
描述
公共(前端)网络(如 192.168.0.0/24)的 IP 地址和子网掩码。在 [global] 中设置。您可以指定以逗号分隔的子网。
类型
<ip-address>/<netmask> [, <ip-address>/<netmask>]
必填
默认
N/A
public_addr
描述
公共(前端)网络的 IP 地址。为每个守护进程设置。
类型
IP 地址
必填
默认
N/A
cluster_network
描述
集群网络的 IP 地址和子网掩码(如 10.0.0.0/24)。在 [global] 中设置。您可以指定以逗号分隔的子网。
类型
<ip-address>/<netmask> [, <ip-address>/<netmask>]
必填
默认
N/A
cluster_addr
描述
集群网络的 IP 地址。为每个守护进程设置。
类型
地址
必填
默认
N/A
ms_type
描述
网络传输层的消息传递类型。红帽支持使用 posix 语义 的简单async 消息传递类型。
类型
字符串。
必填
否.
默认
async+posix
ms_public_type
描述
用于公共网络的网络传输层的消息传递类型。它的操作方式与 ms_type 相同,但仅适用于公共或前端网络。此设置可使 Ceph 将不同的消息传递类型用于公共或前端以及集群或后端网络。
类型
字符串。
必填
否.
默认
none.
ms_cluster_type
描述
集群网络的网络传输层的 messenger 类型。它的操作与 ms_type 相同,但只适用于集群或后端网络。此设置可使 Ceph 将不同的消息传递类型用于公共或前端以及集群或后端网络。
类型
字符串。
必填
否.
默认
none.

主机选项

您必须在 Ceph 配置文件中至少声明一个 Ceph monitor,并在声明的每个 monitor 下声明一个 mon addr 设置。Ceph 期望 Ceph 配置文件中每一声明的 monitor、元数据服务器和 OSD 下的 设置

重要

不要使用 localhost。使用节点的短名称,而不是完全限定域名(FQDN)。使用检索您节点名称的第三方部署系统时,不要为 host 指定任何值。

mon_addr
描述
一个 <hostname>:<port> 条目列表,客户端可用于连接 Ceph 监控器。如果没有设置,Ceph 会搜索 [mon.*] 部分。
类型
字符串
必填
默认
N/A
host
描述
主机名。将此设置用于特定的守护进程实例(例如: [osd.0])。
类型
字符串
必填
可以,表示守护进程实例。
默认
localhost

TCP 选项

Ceph 默认禁用 TCP 缓冲。

ms_tcp_nodelay
描述
Ceph 启用 ms_tcp_nodelay,以便立即发送每个请求(无缓冲)。禁用 Nagle 的算法会增加网络流量,这样可引入拥塞。如果您遇到大量小数据包,您可以尝试禁用 ms_tcp_nodelay,但请注意禁用它通常会增加延迟。
类型
布尔值
必填
默认
true
ms_tcp_rcvbuf
描述
网络连接接收端套接字缓冲区的大小。默认禁用此选项。
类型
32 位 Integer
必填
默认
0
ms_tcp_read_timeout
描述
如果客户端或守护进程向另一个 Ceph 守护进程发出请求并且没有丢弃未使用的连接,tcp 读取超时会将 连接定义为在指定秒数后保持空闲状态。
类型
未签名 64 位 Integer
必填
默认
900 15 分钟.

绑定选项

bind 选项配置 Ceph OSD 守护进程的默认端口范围。默认范围为 6800:7100。您还可以启用 Ceph 守护进程以绑定到 IPv6 地址。

重要

验证防火墙配置允许您使用配置的端口范围。

ms_bind_port_min
描述
OSD 守护进程要绑定的最小端口号。
类型
32 位 Integer
默认
6800
必填
ms_bind_port_max
描述
OSD 守护进程要绑定的最大端口号。
类型
32 位 Integer
默认
7300
必填
否.
ms_bind_ipv6
描述
使 Ceph 守护进程能够绑定到 IPv6 地址。
类型
布尔值
默认
false
必填

异步消息传递选项

这些 Ceph 消息传递选项配置 AsyncMessenger 的行为。

ms_async_transport_type
描述
AsyncMessenger 使用的传输类型。红帽支持 posix 设置,但目前不支持 dpdkrdma 设置。POSIX 使用标准 TCP/IP 网络,它是默认值。其他传输类型是实验性的 不受支持。
类型
字符串
必填
默认
posix
ms_async_op_threads
描述
每个 AsyncMessenger 实例使用的 worker 线程初始数量。此配置设置 SHOULD 等于副本或纠删代码区块的数量,但如果 CPU 核心数较低或单个服务器上的 OSD 数量较高,则该设置可能会降低。
类型
64 位未签名的 Integer
必填
默认
3
ms_async_max_op_threads
描述
每个 AsyncMessenger 实例使用的 worker 线程的最大数量。如果 OSD 主机的 CPU 数有限,设为较低值;如果 Ceph 利用率不足,则增加。
类型
64 位未签名的 Integer
必填
默认
5
ms_async_set_affinity
描述
设置为 true 以将 AsyncMessenger 工作程序绑定到特定 CPU 内核。
类型
布尔值
必填
默认
true
ms_async_affinity_cores
描述
ms_async_set_affinitytrue 时,这个字符串指定 AsyncMessenger worker 如何绑定到 CPU 内核。例如,0,2 将分别将 worker #1 和 #2 绑定到 CPU cores #0 和 #2。注意: 手动设置关联性时,请确保不将工作程序分配给作为超线程或类似技术影响创建的虚拟 CPU,因为它们比物理 CPU 内核慢。
类型
字符串
必填
默认
(空)
ms_async_send_inline
描述
直接从生成消息的线程发送消息,而不是从 AsyncMessenger 线程排队和发送。这个选项已知会在具有大量 CPU 内核的系统上降低性能,因此默认是禁用的。
类型
布尔值
必填
默认
false

附录 C. Ceph 监控配置选项

以下是 Ceph 监控部署期间可以设置的配置选项。

mon_initial_members
描述
在集群中启动过程中初始监控器的 ID。如果指定,Ceph 需要奇数个 monitor 来组成初始仲裁(例如 3)。
类型
字符串
默认
mon_force_quorum_join
描述
即使之前已从映射中删除了仲裁,也强制 monitor 加入仲裁
类型
布尔值
默认
False
mon_dns_srv_name
描述
用于查询 DNS 是否有 monitor 主机/地址的服务名称。
类型
字符串
默认
ceph-mon
fsid
描述
集群 ID。每个群集一个.
类型
UUID
必填
可以。
默认
不适用.如果未指定,则可以通过部署工具生成。
mon_data
描述
监控器的数据位置。
类型
字符串
默认
/var/lib/ceph/mon/$cluster-$id
mon_data_size_warn
描述
当监控器的数据存储达到这个阈值时,Ceph 会在集群日志中发布 HEALTH_WARN 状态。默认值为 15GB。
类型
整数
默认
15*1024*1024*1024*`
mon_data_avail_warn
描述
当监控器数据存储的可用磁盘空间低于或等于这个百分比时,Ceph 会在集群日志中发出 HEALTH_WARN 状态
类型
整数
默认
30
mon_data_avail_crit
描述
当监控器数据存储的可用磁盘空间低于或等于这个百分比时,Ceph 会在集群日志中发出 HEALTH_ERR 状态。
类型
整数
默认
5
mon_warn_on_cache_pools_without_hit_sets
描述
如果缓存池没有设置 hit _set_type 参数,Ceph 会在集群日志中发布 HEALTH_ WARN 状态
类型
布尔值
默认
True
mon_warn_on_crush_straw_calc_version_zero
描述
如果 CRUSH 的 straw_ calc_version 为零,Ceph 会在集群日志中发布 HEALTH_ WARN 状态。详情请参阅 CRUSH 可调项
类型
布尔值
默认
True
mon_warn_on_legacy_crush_tunables
描述
如果 CRUSH 可调项太旧(比 mon _min_crush_required_version 旧),Ceph 会在集群日志中发出 HEALTH_ WARN 状态
类型
布尔值
默认
True
mon_crush_min_required_version
描述
此设置定义集群所需的最低可调配置文件版本。
类型
字符串
默认
firefly
mon_warn_on_osd_down_out_interval_zero
描述
如果 mon _osd_down_out_interval 设置为零,则 Ceph 在集群日志中发出 HEALTH_ WARN 状态,因为设置了 noout 标志时领导的行为方式类似。管理员通过设置 noout 标志来更加轻松地对集群进行故障排除。Ceph 发出警告,确保管理员知道该设置为零。
类型
布尔值
默认
True
mon_cache_target_full_warn_ratio
描述
Ceph 在 cache_target_full 和 target_max_ object 比率之间发出警告。
类型
浮点值
默认
0.66
mon_health_data_update_interval
描述
仲裁中的 monitor 与其同级服务器共享其健康状态的频率(以秒为单位)。负数将禁用健康更新。
类型
浮点值
默认
60
mon_health_to_clog
描述
此设置可让 Ceph 定期发送健康摘要到集群日志。
类型
布尔值
默认
True
mon_health_to_clog_tick_interval
描述
监控器向集群日志发送健康摘要的频率(以秒为单位)。非正数会禁用它。如果当前的健康概述为空,或与上次时间相同,则 monitor 不会将状态发送到集群日志。
类型
整数
默认
3600
mon_health_to_clog_interval
描述
监控器向集群日志发送健康摘要的频率(以秒为单位)。非正数会禁用它。监控器将始终发送摘要到集群日志。
类型
整数
默认
60
mon_osd_full_ratio
描述
OSD 被视为已 前使用的磁盘空间百分比。
类型
浮点值:
默认
.95
mon_osd_nearfull_ratio
描述
OSD 被视为 nearfull 之前使用的磁盘空间百分比。
类型
浮点值
默认
.85
mon_sync_trim_timeout
描述, 类型
默认
30.0
mon_sync_heartbeat_timeout
描述, 类型
默认
30.0
mon_sync_heartbeat_interval
描述, 类型
默认
5.0
mon_sync_backoff_timeout
描述, 类型
默认
30.0
mon_sync_timeout
描述
monitor 在同步供应商再次放弃并引导前等待下一个更新消息的秒数。
类型
默认
30.0
mon_sync_max_retries
描述, 类型
整数
默认
5
mon_sync_max_payload_size
描述
同步有效负载的最大大小(以字节为单位)。
类型
32 位 Integer
默认
1045676
paxos_max_join_drift
描述
在必须首先同步 monitor 数据存储前,最大 Paxos 迭代。当 monitor 发现其对等点太快时,它将首先与数据存储同步,然后再继续。
类型
整数
默认
10
paxos_stash_full_interval
描述
清理 PaxosService 状态的完整副本的频率(在提交中)。当前此设置仅影响 mdsmonauthmgr PaxosServices。
类型
整数
默认
25
paxos_propose_interval
描述
在中止 map 更新前,收集此时间段的更新。
类型
默认
1.0
paxos_min
描述
要保留的最小 paxos 状态数
类型
整数
默认
500
paxos_min_wait
描述
在一段时间不活跃后收集更新的最小时间。
类型
默认
0.05
paxos_trim_min
描述
修剪前的额外猜测数量
类型
整数
默认
250
paxos_trim_max
描述
一次修剪的最大额外练习数
类型
整数
默认
500
paxos_service_trim_min
描述
触发 trim 的最小版本数量(0 可禁用它)
类型
整数
默认
250
paxos_service_trim_max
描述
单个建议期间要修剪的最大版本数量(0 可禁用此参数)
类型
整数
默认
500
mon_max_log_epochs
描述
在单个建议中修剪的最大日志时期
类型
整数
默认
500
mon_max_pgmap_epochs
描述
在单个建议中修剪的最大 pgmap epoch 数量
类型
整数
默认
500
mon_mds_force_trim_to
描述
强制 monitor 将 mdsmaps 修剪到此点(0 可将其禁用。危险,谨慎使用)
类型
整数
默认
0
mon_osd_force_trim_to
描述
强制 monitor 将 osdmaps 修剪到此点,即使指定的 epoch 上未清理 PG(0 会禁用它。危险,谨慎使用)
类型
整数
默认
0
mon_osd_cache_size
描述
osdmaps 缓存的大小,而不是依赖于底层存储的缓存
类型
整数
默认
10
mon_election_timeout
描述
在选举建议器上,所有 ACK 的最大等待时间(以秒为单位)。
类型
浮点值
默认
5
mon_lease
描述
监控版本上的租期长度(以秒为单位)。
类型
浮点值
默认
5
mon_lease_renew_interval_factor
描述
mon lease * mon 租期续订间隔因素 将是领导续订其他 monitor 租期的时间间隔。该因素应小于 1.0
类型
浮点值
默认
0.6
mon_lease_ack_timeout_factor
描述
领导将等待 mon lease * mon lease ack 超时因子,供供应商确认租用扩展。
类型
浮点值
默认
2.0
mon_accept_timeout_factor
描述
Leader 将等待 mon lease * mon 接受 Requesters 接受 Paxos 更新的超时因素。它也在 Paxos 恢复阶段用于类似目的。
类型
浮点值
默认
2.0
mon_min_osdmap_epochs
描述
始终保持的 OSD map epoch 最小数量。
类型
32 位 Integer
默认
500
mon_max_pgmap_epochs
描述
monitor 应保留的 PG map epoch 的最大数量。
类型
32 位 Integer
默认
500
mon_max_log_epochs
描述
监控器应保留的最多日志时期数.
类型
32 位 Integer
默认
500
clock_offset
描述
系统时钟需要偏差多少。详情请查看 Clock.cc
类型
默认
0
mon_tick_interval
描述
监视器的粘滞间隔(以秒为单位)。
类型
32 位 Integer
默认
5
mon_clock_drift_allowed
描述
监视器之间允许的时钟偏移(以秒为单位)。
类型
浮点值
默认
.050
mon_clock_drift_warn_backoff
描述
针对时钟偏移警告的指数回溯.
类型
浮点值
默认
5
mon_timecheck_interval
描述
领导的时间检查间隔(时钟偏移检查)。
类型
浮点值
默认
300.0
mon_timecheck_skew_interval
描述
当领导出现 skew 时,以秒为单位检查时间间隔(时钟偏移间隔)。
类型
浮点值
默认
30.0
mon_max_osd
描述
集群中允许的 OSD 数量上限。
类型
32 位 Integer
默认
10000
mon_globalid_prealloc
描述
要预先分配集群中客户端和守护进程的全局 ID 数量。
类型
32 位 Integer
默认
100
mon_sync_fs_threshold
描述
编写指定数量的对象时,与文件系统同步。将它设置为 0 以禁用它。
类型
32 位 Integer
默认
5
mon_subscribe_interval
描述
订阅的刷新间隔(以秒为单位)。订阅机制可用于获取集群映射和日志信息。
类型
默认
300
mon_stat_smooth_intervals
描述
Ceph 将使最近 N PG 映射的统计信息平滑。
类型
整数
默认
2
mon_probe_timeout
描述
监控器在 bootstrap 之前等待找到对等点的秒数。
类型
默认
2.0
mon_daemon_bytes
描述
元数据服务器和 OSD 消息的消息内存上限(以字节为单位)。
类型
64 位 Integer Unsigned
默认
400ul << 20
mon_max_log_entries_per_event
描述
每个事件的最大日志条目数。
类型
整数
默认
4096
mon_osd_prime_pg_temp
描述
当 OSD 返回到集群中时,启用或禁用使用上述 OSD 发起 PG map。使用 true 设置时,客户端将继续使用前面的 OSD,直到 OSD 中的新内 OSD 作为该 PG 对等。
类型
布尔值
默认
true
mon_osd_prime_pg_temp_max_time
描述
当一个 OSD 返回到集群中时,监视器应该花费多长时间(以秒为单位)来为 PG map 引导。
类型
浮点值
默认
0.5
mon_osd_prime_pg_temp_max_time_estimate
描述
在并行完成所有 PG 之前,估算每个 PG 所用的最大时间。
类型
浮点值
默认
0.25
mon_osd_allow_primary_affinity
描述
允许在 osdmap 中设置 primary_affinity
类型
布尔值
默认
False
mon_osd_pool_ec_fast_read
描述
是否打开池快速读取。如果在创建时未指定 fast_read,它将用作新创建的纠删池的默认设置。
类型
布尔值
默认
False
mon_mds_skip_sanity
描述
在 FSMap 上跳过安全断言,以防出现我们希望继续操作的错误。如果 FSMap 完整性检查失败,monitor 会终止,但我们可以通过启用此选项来禁用它。
类型
布尔值
默认
False
mon_max_mdsmap_epochs
描述
在单个建议期间要修剪的最大 mdsmap epoch 数量。
类型
整数
默认
500
mon_config_key_max_entry_size
描述
config-key 条目的最大大小(以字节为单位)。
类型
整数
默认
4096
mon_scrub_interval
描述
monitor 清理其存储的频率(以秒为单位),方法是将存储的校验和与所有存储键的计算结果进行比较。
类型
整数
默认
3600*24
mon_scrub_max_keys
描述
每次清理的最大密钥数。
类型
整数
默认
100
mon_compact_on_start
描述
紧凑 ceph-mon start 上用作 Ceph monitor 存储的数据库。如果常规紧凑无法正常工作,手动紧凑有助于缩小 monitor 数据库并提高其性能。
类型
布尔值
默认
False
mon_compact_on_bootstrap
描述
紧凑 bootstrap 上用作 Ceph monitor 存储的数据库。monitor 开始相互探测,以在 bootstrap 后创建仲裁。如果在加入仲裁前超时,它将重新开始并重新引导其自身。
类型
布尔值
默认
False
mon_compact_on_trim
描述
当您修剪其旧状态时,紧凑特定的前缀(包括 paxos)。
类型
布尔值
默认
True
mon_cpu_threads
描述
在 monitor 上执行 CPU 密集型工作的线程数量。
类型
布尔值
默认
True
mon_osd_mapping_pgs_per_chunk
描述
我们计算从 PG 到区块中的 OSD 的 map。这个选项指定每个块的 PG 数量。
类型
整数
默认
4096
mon_osd_max_split_count
描述
每个"非演变"OSD 的 PG 数量上限,可以实现拆分创建.当我们增加池的 the pg_num 时,PG 将在为这个池提供服务的所有 OSD 上分割。我们希望避免 PG 分割上的极端倍数。
类型
整数
默认
300
rados_mon_op_timeout
描述
在从 rados 操作返回错误前等待 monitor 响应的秒数。0 表示有限制,或者没有等待时间。
类型
默认
0

其它资源

附录 D. cephx 配置选项

以下是部署期间可以设置的 Cephx 配置选项:

auth_cluster_required
描述
如果启用,红帽 Ceph 存储集群守护进程 ceph-monceph-osd 必须相互身份验证。有效设置是 cephxnone
类型
字符串
必填
默认
cephx
auth_service_required
描述
如果启用,红帽 Ceph 存储集群守护进程需要 Ceph 客户端与红帽 Ceph 存储集群进行身份验证才能访问 Ceph 服务。有效设置是 cephxnone
类型
字符串
必填
默认
cephx
auth_client_required
描述
如果启用,Ceph 客户端需要红帽 Ceph 存储集群与 Ceph 客户端进行身份验证。有效设置是 cephxnone
类型
字符串
必填
默认
cephx
密钥环
描述
密钥环文件的路径。
类型
字符串
必填
默认
/etc/ceph/$cluster.$name.keyring,/etc/ceph/$cluster.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin
keyfile
描述
密钥文件的路径(即仅含有密钥的文件)。
类型
字符串
必填
默认
key
描述
键(即,密钥本身的文本字符串)。不建议.
类型
字符串
必填
默认
ceph-mon
位置
$mon_data/keyring
功能
周一 'allow *'
ceph-osd
位置
$osd_data/keyring
功能
mon 'allow profile osd' osd 'allow *'
radosgw
位置
$rgw_data/keyring
功能
mon 'allow rwx' osd 'allow rwx'
cephx_require_signatures
描述
如果设为 true,Ceph 需要在 Ceph 客户端和红帽 Ceph 存储集群之间的所有消息流量上以及由红帽 Ceph 存储集群组成的守护进程之间签名。
类型
布尔值
必填
默认
false
cephx_cluster_require_signatures
描述
如果设置为 true,Ceph 需要在由 Red Hat Ceph Storage 集群组成的 Ceph 守护进程之间所有消息流量签名。
类型
布尔值
必填
默认
false
cephx_service_require_signatures
描述
如果设为 true,Ceph 需要 Ceph 客户端和红帽 Ceph 存储集群之间的所有消息流量签名。
类型
布尔值
必填
默认
false
cephx_sign_messages
描述
如果 Ceph 版本支持消息签名,Ceph 将为所有消息签名,使它们不会被欺骗。
类型
布尔值
默认
true
auth_service_ticket_ttl
描述
当红帽 Ceph 存储集群向 Ceph 客户端发送一个身份验证票据时,集群会为这个票据分配一个生存时间。
类型
默认
60*60

其它资源

  • <additional resource 1>
  • <additional resource 2>

附录 E. 池、放置组和 CRUSH 配置选项

管理池、放置组和 CRUSH 算法的 Ceph 选项。

mon_allow_pool_delete
描述
允许 monitor 删除池。在 RHCS 3 及更新的版本中,监视器默认无法删除池,作为保护数据的添加方法。
类型
布尔值
默认
false
mon_max_pool_pg_num
描述
每个池 PG 的最大数量。
类型
整数
默认
65536
mon_pg_create_interval
描述
同一 Ceph OSD 守护进程中创建 PG 之间的秒数。
类型
浮点值
默认
30.0
mon_pg_stuck_threshold
描述
PG 被视为卡住的秒数。
类型
32 位 Integer
默认
300
mon_pg_min_inactive
描述
如果处于非活动状态的 PG 数超过 mon _pg_stuck_threshold,Ceph 会在集群日志中发出 HEALTH_ ERR 状态。默认设置为一个 PG。非正数会禁用此设置。
类型
整数
默认
1
mon_pg_warn_min_per_osd
描述
如果集群中的每个 OSD 的 PG 平均数量小于此设置,Ceph 会在集群日志中发出 HEALTH_WARN 状态。非正数会禁用此设置。
类型
整数
默认
30
mon_pg_warn_max_per_osd
描述
如果集群中的每个 OSD 的 PG 平均数量大于此设置,Ceph 会在集群日志中发出 HEALTH_WARN 状态。非正数会禁用此设置。
类型
整数
默认
300
mon_pg_warn_min_objects
描述
如果集群中的对象总数低于这个数字,则不要发出警告。
类型
整数
默认
1000
mon_pg_warn_min_pool_objects
描述
不要警告对象编号低于这个数字的池。
类型
整数
默认
1000
mon_pg_check_down_all_threshold
描述
按百分比划分的 down OSD 的阈值,Ceph 会检查所有 PG,确保它们不会卡住或过时。
类型
浮点值
默认
0.5
mon_pg_warn_max_object_skew
描述
如果池中的对象平均数量大于 mon,Ceph 会在集群日志中发出 HEALTH_WARN 状态,警告所有池的对象平均数量为 skew。非正数会禁用此设置。
类型
浮点值
默认
10
mon_delta_reset_interval
描述
Ceph 将 PG delta 重置为零之前的不活跃秒数。Ceph 跟踪每个池已用空间的增量,以帮助管理员评估恢复和性能的进度。
类型
整数
默认
10
mon_osd_max_op_age
描述
在发出 HEALTH_WARN 状态前操作完成的最长时间,以秒为单位。
类型
浮点值
默认
32.0
osd_pg_bits
描述
每个 Ceph OSD 守护进程的放置组位.
类型
32 位 Integer
默认
6
osd_pgp_bits
描述
用于放置组(PGP)的每个 Ceph OSD 守护进程的位数。
类型
32 位 Integer
默认
6
osd_crush_chooseleaf_type
描述
用于 CRUSH 规则中的 selectleaf 的 bucket 类型。使用序号而非名称.
类型
32 位 Integer
默认
1.通常,包含一个或多个 Ceph OSD 守护进程的主机。
osd_pool_default_crush_replicated_ruleset
描述
创建复制池时要使用的默认 CRUSH 规则集。
类型
8 位 Integer
默认
0
osd_pool_erasure_code_stripe_unit
描述
为纠删代码池设置对象分条块的默认大小(以字节为单位)。每个大小 S 的对象将存储为 N 条带,每个数据区块接收 分条单元 字节。N * 条状单元 字节的每一条将单独编码/解密。此选项可以通过纠删代码 profile 中的 stripe_unit 设置覆盖。
类型
未签名 32 位 Integer
默认
4096
osd_pool_default_size
描述
设置池中对象的副本数量。默认值为与 ceph osd 池设置 {pool-name} 大小 {size} 相同。
类型
32 位 Integer
默认
3
osd_pool_default_min_size
描述
为池中的对象设置写入的最少副本数,以便确认对客户端的写入操作。如果未达到最小值,Ceph 将不会确认对客户端的写入操作。此设置可确保在 降级 模式下操作时的最少副本数。
类型
32 位 Integer
默认
0,这意味着没有特别的最小值。如果为 0,则最小 大小为 -(大小 / 2 )。
osd_pool_default_pg_num
描述
池的默认 PG 数量。使用 mkpool 的默认值与 pg_num 相同。
类型
32 位 Integer
默认
8
osd_pool_default_pgp_num
描述
用于池放置的默认 PG 数量。默认值为 mkpoolpgp_num 相同。PG 和 PGP 应当相等。
类型
32 位 Integer
默认
8
osd_pool_default_flags
描述
新池的默认标志。
类型
32 位 Integer
默认
0
osd_max_pgls
描述
要列出的 PG 的最大数量。请求大量数量的客户端可能会连接 Ceph OSD 守护进程。
类型
未签名 64 位 Integer
默认
1024
备注
默认为正常。
osd_min_pg_log_entries
描述
修剪日志文件时要维护的最少 PG 日志数量。
类型
32 位 Int 未签名
默认
1000
osd_default_data_pool_replay_window
描述
OSD 等待客户端重播请求的时间(以秒为单位)。
类型
32 位 Integer
默认
45

附录 F. 对象存储守护进程(OSD)配置选项

以下是可在部署期间设置的 Ceph 对象存储守护进程(OSD)配置选项。

osd_uuid
描述
Ceph OSD 通用唯一标识符(UUID)。
类型
UUID
默认
UUID。
备注
osd uuid 应用到单个 Ceph OSD。fsid 适用于整个集群。
osd_data
描述

OSD 数据的路径。在部署 Ceph 时,您必须创建 目录。在此挂载点挂载 OSD 数据的驱动器。

IMPORTANT: Red Hat does not recommend changing the default.
类型
字符串
默认
/var/lib/ceph/osd/$cluster-$id
osd_max_write_size
描述
以 MB 为单位写入的最大值。
类型
32 位 Integer
默认
90
osd_client_message_size_cap
描述
内存中允许的最大客户端数据存储.
类型
64 位 Integer Unsigned
默认
500MB 默认值.500*1024L*1024L
osd_class_dir
描述
RADOS 类插件的类路径。
类型
字符串
默认
$libdir/rados-classes
osd_max_scrubs
描述
Ceph OSD 同时清理操作的最大数量。
类型
32 位 Int
默认
1
osd_scrub_thread_timeout
描述
清理线程超时前的最长时间,以秒为单位。
类型
32 位 Integer
默认
60
osd_scrub_finalize_thread_timeout
描述
清理完成线程前超时前的最长时间,以秒为单位。
类型
32 位 Integer
默认
60*10
osd_scrub_begin_hour
描述
轻型或深度清理的早先开始。它与 osd scrub end hour 参数搭配使用,以定义清理时间窗并允许将清理限制为非高峰时长。此设置取一个整数来指定 24 小时周期的小时,其中 0 代表从 12:01 a.m. 至 1:00 a.m. 的小时,13 代表从下午 1:01 至 2:00 的小时,以此类推。
类型
32 位 Integer
默认
0 (代表 12:01 到 1:00 a.m)
osd_scrub_end_hour
描述
轻型或深度清理的最近一小时可以开始。它与 osd scrub start hour 参数搭配使用,以定义清理时间窗并允许将清理限制为非高峰时间。此设置取一个整数来指定 24 小时周期的小时,其中 0 代表从 12:01 a.m. 至 1:00 a.m. 的小时,13 代表从下午 1:01 至 2:00 的小时,以此类推。结束 小时必须大于 开始 小时。
类型
32 位 Integer
默认
24 分,下午 11:01 至上午 12:00.
osd_scrub_load_threshold
描述
最大负载。当系统负载(由 getloadavg()函数定义) 超过这个数字时,Ceph 将不会清理。默认值为 0.5
类型
浮点值
默认
0.5
osd_scrub_min_interval
描述
当红帽 Ceph 存储集群负载较低时,清理 Ceph OSD 的最小间隔(以秒为单位)。
类型
浮点值
默认
每天一次.60*60*24
osd_scrub_max_interval
描述
无论集群负载如何,清理 Ceph OSD 的最大间隔(以秒为单位)。
类型
浮点值
默认
每周一次.7*60*60*24
osd_scrub_interval_randomize_ratio
描述
取该比率,并随机化 osd scrub min 间隔和 osd scrub 最大间隔 之间的调度清理。
类型
浮点值
默认
0.5.
mon_warn_not_scrubbed
描述
osd_scrub_interval 之后的秒数,用于警告任何未清理的 PG。
类型
整数
默认
0 (无警告)。
osd_scrub_chunk_min
描述
对象存储划分为多个区块,以哈希边界结尾。对于块清理,Ceph 会一次清理一个块对象,针对该块的写入被阻止。osd scrub chunk min 设置表示清理的最少块数。
类型
32 位 Integer
默认
5
osd_scrub_chunk_max
描述
清理的最大块数。
类型
32 位 Integer
默认
25
osd_scrub_sleep
描述
深度清理操作之间睡眠时间。
类型
浮点值
默认
0 (或关闭)。
osd_scrub_during_recovery
描述
允许在恢复期间清理。
类型
bool
默认
false
osd_scrub_invalid_stats
描述
强制进行额外的清理,以修复标记为无效的 stats。
类型
bool
默认
true
osd_scrub_priority
描述
控制清理操作的队列优先级与客户端 I/O.
类型
未签名 32 位 Integer
默认
5
osd_scrub_cost
描述
为队列调度目的,以 MB 为单位进行清理的成本.
类型
未签名 32 位 Integer
默认
50 << 20
osd_deep_scrub_interval
描述
深度清理的时间间隔,完全读取所有数据。osd scrub load threshold 参数不会影响此设置。
类型
浮点值
默认
每周一次.60*60*24*7
osd_deep_scrub_stride
描述
执行深度清理时读取大小.
类型
32 位 Integer
默认
512 KB.524288
mon_warn_not_deep_scrubbed
描述
osd_deep_scrub_interval 之后的秒数,以警告任何未清理的 PG。
类型
整数
默认
0 (无警告)。
osd_deep_scrub_randomize_ratio
描述
清理的速率将随机变为深度清理(即使 osd_deep_scrub_interval 已过去)。
类型
浮点值
默认
0.15 或 15%.
osd_deep_scrub_update_digest_min_age
描述
清理更新整个对象摘要前,必须有多少秒才能更新旧对象。
类型
整数
默认
120 小时(2 小时)。
osd_op_num_shards
描述
客户端操作的分片数量。
类型
32 位 Integer
默认
0
osd_op_num_threads_per_shard
描述
客户端操作的每个分片的线程数量。
类型
32 位 Integer
默认
0
osd_op_num_shards_hdd
描述
HDD 操作的分片数量。
类型
32 位 Integer
默认
5
osd_op_num_threads_per_shard_hdd
描述
HDD 操作每个分片的线程数量。
类型
32 位 Integer
默认
1
osd_op_num_shards_ssd
描述
SSD 操作的分片数量。
类型
32 位 Integer
默认
8
osd_op_num_threads_per_shard_ssd
描述
SSD 操作的每个分片的线程数量。
类型
32 位 Integer
默认
2
osd_client_op_priority
描述
为客户端操作设置的优先级。它相对于 osd restore op 优先级
类型
32 位 Integer
默认
63
有效范围
1-63
osd_recovery_op_priority
描述
为恢复操作设置的优先级。它相对于 osd 客户端 op 优先级
类型
32 位 Integer
默认
3
有效范围
1-63
osd_op_thread_timeout
描述
Ceph OSD 操作线程超时(以秒为单位)。
类型
32 位 Integer
默认
30
osd_op_complaint_time
描述
在指定秒数过后,操作就成为值得的投诉。
类型
浮点值
默认
30
osd_disk_threads
描述
磁盘线程数量,用于执行后台磁盘密集型 OSD 操作,如清理和快照修剪。
类型
32 位 Integer
默认
1
osd_disk_thread_ioprio_class
描述

为磁盘线程设置 ioprio_set(2) I/O 调度 。可接受的值有:

  • idle
  • be
  • RT + 空闲 类意味着磁盘线程的优先级将低于 OSD 中的任何其他线程。这可用于在处理客户端操作忙碌的 OSD 上减慢清理速度。+ 是 为默认值,其优先级与 OSD 中的所有其他线程相同。+ rt 类表示磁盘线程优先于 OSD 中的所有其他线程。这在非常需要清理时很有用,并且必须以牺牲客户端操作的方式进行清理。
类型
字符串
默认
一个空字符串
osd_disk_thread_ioprio_priority
描述
它设置磁盘线程的 ioprio_set(2) I/O 调度 优先级,范围从 0(最高)到 7(最低)。如果给定主机上的所有 OSD 都处于类 闲置状态,并且因为控制器拥塞而争用 I/O,它可以用于将一个 OSD 的磁盘线程优先级降低到 7,这样优先级为 0 的另一个 OSD 可能会更快地清理。
类型
如果不使用,则为 0 到 7 或 -1 范围内的整数。
默认
-1
重要

只有两者都设为非默认值时,才会使用 osd disk thread ioprio 类和 osd disk thread ioprio 优先级 选项。此外,它仅适用于 Linux 内核 CFQ 调度程序。

osd_op_history_size
描述
要跟踪的已完成操作的最大数量。
类型
32 位未签名的整数
默认
20
osd_op_history_duration
描述
要跟踪的最旧的完成操作。
类型
32 位未签名的整数
默认
600
osd_op_log_threshold
描述
同时要显示的操作日志数量。
类型
32 位 Integer
默认
5
osd_op_timeout
描述
运行 OSD 操作超时的时间(以秒为单位)。
类型
整数
默认
0
重要

不要设置 osd op timeout 选项,除非您的客户端能够处理后果。例如,在虚拟机中运行的客户端上设置此参数可能会导致数据损坏,因为虚拟机将此超时解释为硬件故障。

osd_max_backfills
描述
允许进出单个 OSD 的最大回填操作数。
类型
64 位未签名的 Integer
默认
1
osd_backfill_scan_min
描述
每次回填扫描的最小对象数量。
类型
32 位 Integer
默认
64
osd_backfill_scan_max
描述
每次回填扫描的最大对象数量。
类型
32 位 Integer
默认
512
osd_backfill_full_ratio
描述
当 Ceph OSD 的 full 比率高于此值时,拒绝接受回填请求。
类型
浮点值
默认
0.85
osd_backfill_retry_interval
描述
在重试回填请求前等待的秒数。
类型
默认
10.0
osd_map_dedup
描述
启用删除 OSD map 中的重复项。
类型
布尔值
默认
true
osd_map_cache_size
描述
OSD map 缓存的大小,以 MB 为单位。
类型
32 位 Integer
默认
50
osd_map_cache_bl_size
描述
OSD 守护进程中内存中 OSD map 缓存的大小。
类型
32 位 Integer
默认
50
osd_map_cache_bl_inc_size
描述
OSD 守护进程中内存中 OSD map 缓存的大小递增。
类型
32 位 Integer
默认
100
osd_map_message_max
描述
每个 MOSDMap 消息允许的最大映射条目。
类型
32 位 Integer
默认
40
osd_snap_trim_thread_timeout
描述
snap Trim 线程超时前的最长时间(以秒为单位)。
类型
32 位 Integer
默认
60*60*1
osd_pg_max_concurrent_snap_trims
描述
并行 snap 的最大并行修剪/PG 数量.这将控制每个 PG 一次要修剪的对象数量。
类型
32 位 Integer
默认
2
osd_snap_trim_sleep
描述
在 PG 问题的每个 Trim 操作之间插入一个睡眠。
类型
32 位 Integer
默认
0
osd_max_trimming_pgs
描述
修剪 PG 的最大数量
类型
32 位 Integer
默认
2
osd_backlog_thread_timeout
描述
待处理线程超时前的最长时间(以秒为单位)。
类型
32 位 Integer
默认
60*60*1
osd_default_notify_timeout
描述
OSD 默认通知超时(以秒为单位)。
类型
32 位 Integer 未签名
默认
30
osd_check_for_log_corruption
描述
检查日志文件是否存在损坏。计算费用可能非常昂贵。
类型
布尔值
默认
false
osd_remove_thread_timeout
描述
删除 OSD 线程超时前的最长时间,以秒为单位。
类型
32 位 Integer
默认
60*60
osd_command_thread_timeout
描述
命令线程超时前的最长时间,以秒为单位。
类型
32 位 Integer
默认
10*60
osd_command_max_records
描述
限制返回丢失的对象数量。
类型
32 位 Integer
默认
256
osd_auto_upgrade_tmap
描述
在旧对象 上使用 t map 进行 omap
类型
布尔值
默认
true
osd_tmapput_sets_users_tmap
描述
仅使用 tmap 进行调试。
类型
布尔值
默认
false
osd_preserve_trimmed_log
描述
保留修剪日志文件,但使用更多磁盘空间。
类型
布尔值
默认
false
osd_recovery_delay_start
描述
在 peering 完成后,Ceph 会延迟指定秒数,然后再开始恢复对象。
类型
浮点值
默认
0
osd_recovery_max_active
描述
每个 OSD 一次的活动恢复请求数。更多请求将加速恢复,但请求会增加群集的负载。
类型
32 位 Integer
默认
3
osd_recovery_max_chunk
描述
要推送的恢复数据块的最大大小。
类型
64 位 Integer Unsigned
默认
8 << 20
osd_recovery_threads
描述
用于恢复数据的线程数。
类型
32 位 Integer
默认
1
osd_recovery_thread_timeout
描述
恢复线程超时前的最长时间(以秒为单位)。
类型
32 位 Integer
默认
30
osd_recover_clone_overlap
描述
在恢复期间保留克隆重叠.应始终设为 true
类型
布尔值
默认
true
rados_osd_op_timeout
描述
RADOS 在从 RADOS 操作返回错误前等待 OSD 响应的秒数。值 0 表示没有限制。
类型
默认
0

附录 G. Ceph monitor 和 OSD 配置选项

在修改 heartbeat 设置时,将它们包含在 Ceph 配置文件的 [global] 部分中。

mon_osd_min_up_ratio
描述
Ceph OSD 守护进程 Ceph 将 Ceph OSD 守护进程标记为 down 之前的最低比率
类型
默认
.3
mon_osd_min_in_ratio
描述
Ceph OSD 守护进程的最小比率是 Ceph 将 Ceph OSD 守护进程标记为 out
类型
默认
.3
mon_osd_laggy_halflife
描述
滞后估算的 秒数 将下降。
类型
整数
默认
60*60
mon_osd_laggy_weight
描述
慢速 估算 中新样本的权重下降。
类型
默认
0.3
mon_osd_laggy_max_interval
描述
滞后估算中 滞后_interval 的最大值(以秒为单位)。监控器使用自适应方法评估特定 OSD 的滞后 _interval。此值将用于计算该 OSD 的宽限期。
类型
整数
默认
300
mon_osd_adjust_heartbeat_grace
描述
如果设为 true,Ceph 将根据滞后估算 进行 缩放。
类型
布尔值
默认
true
mon_osd_adjust_down_out_interval
描述
如果设为 true,Ceph 将根据滞后估算 进行 扩展。
类型
布尔值
默认
true
mon_osd_auto_mark_in
描述
Ceph 将任何引导 Ceph OSD 守护进程标记为 Ceph 存储群集中。
类型
布尔值
默认
false
mon_osd_auto_mark_auto_out_in
描述
Ceph 将引导 Ceph OSD 守护进程自动标记为 群集中 的 Ceph 存储群集标记为。
类型
布尔值
默认
true
mon_osd_auto_mark_new_in
描述
Ceph 将引导新 Ceph OSD 守护进程标记为 Ceph 存储群集中一样。
类型
布尔值
默认
true
mon_osd_down_out_interval
描述
Ceph 在标记 Ceph OSD 守护进程前等待的秒 ,如果未响应,则 退出
类型
32 位 Integer
默认
600
mon_osd_downout_subtree_limit
描述
Ceph 自动标记的最大 CRUSH 单元类型
类型
字符串
默认
rack
mon_osd_reporter_subtree_level
描述
此设置定义报告 OSD 的父 CRUSH 单元类型。OSD 在发现不响应的对等点时向 monitor 发送失败报告。monitor 可以将报告的 OSD 标记为 down,然后在宽限期后 退出
类型
字符串
默认
host
mon_osd_report_timeout
描述
宽限期(以秒为单位),然后声明 Ceph OSD 守护进程未响应
类型
32 位 Integer
默认
900
mon_osd_min_down_reporters
描述
报告 Ceph OSD 守护进程所需的最少 Ceph OSD 守护进程数量。
类型
32 位 Integer
默认
2
osd_heartbeat_address
描述
用于心跳的 Ceph OSD 守护进程网络地址。
类型
地址
默认
主机地址。
osd_heartbeat_interval
描述
Ceph OSD 守护进程的对等点 ping 的频率(以秒为单位)。
类型
32 位 Integer
默认
6
osd_heartbeat_grace
描述
Ceph OSD 守护进程未显示 Ceph 存储群集认为它 关闭 时已经过一段时间。
类型
32 位 Integer
默认
20
osd_mon_heartbeat_interval
描述
如果 Ceph OSD 守护进程没有 Ceph OSD 守护进程对等点,则 Ceph OSD 守护进程的 ping 频率。
类型
32 位 Integer
默认
30
osd_mon_report_interval_max
描述
Ceph OSD 守护进程可以等待的最大时间(以秒为单位),然后才会报告给 Ceph monitor。
类型
32 位 Integer
默认
120
osd_mon_report_interval_min
描述
Ceph OSD 守护进程在报告到 Ceph monitor 之前可能从启动或其他可报告事件等待的最少秒数。
类型
32 位 Integer
默认
5
有效范围
应小于 osd mon 报告间隔 max
osd_mon_ack_timeout
描述
等待 Ceph 监控器确认统计信息请求的秒数。
类型
32 位 Integer
默认
30

附录 H. Ceph 调试和日志记录配置选项

Ceph 配置文件中不需要记录和调试设置,但您可以根据需要覆盖默认设置。

无论频道是什么,选项都接受一个项目,该项目假定为所有守护进程的默认值。例如:指定 "info" 解释为 "default=info"。但是,选项也可以采用键/值对。例如,"default=daemon audit=local0"解释为"默认为 all all to 'daemon',使用 'local0' 覆盖 'audit'。

log_file
描述
集群日志文件的位置。
类型
字符串
必填
默认
/var/log/ceph/$cluster-$name.log
mon_cluster_log_file
描述
monitor 集群日志文件的位置。
类型
字符串
必填
默认
/var/log/ceph/$cluster.log
log_max_new
描述
新日志文件的最大数量。
类型
整数
必填
默认
1000
log_max_recent
描述
日志文件中包含的最近事件的最大数量。
类型
整数
必填
默认
10000
log_flush_on_exit
描述
确定 Ceph 在退出后是否清空日志文件。
类型
布尔值
必填
默认
true
mon_cluster_log_file_level
描述
监控集群的文件日志记录级别。有效设置包括"debug"、"info"、"sec"、"warn" 和 "error"。
类型
字符串
默认
"info"
log_to_stderr
描述
确定日志消息是否在 stderr 中。
类型
布尔值
必填
默认
true
err_to_stderr
描述
确定 错误消息是否显示在 stderr 中。
类型
布尔值
必填
默认
true
log_to_syslog
描述
确定日志记录消息是否出现在 syslog 中。
类型
布尔值
必填
默认
false
err_to_syslog
描述
确定 错误消息是否显示在 syslog 中。
类型
布尔值
必填
默认
false
clog_to_syslog
描述
确定 clog 消息是否将发送到 syslog
类型
布尔值
必填
默认
false
mon_cluster_log_to_syslog
描述
确定集群日志是否输出到 syslog
类型
布尔值
必填
默认
false
mon_cluster_log_to_syslog_level
描述
监控集群的 syslog 日志级别。有效设置包括"debug"、"info"、"sec"、"warn" 和 "error"。
类型
字符串
默认
"info"
mon_cluster_log_to_syslog_facility
描述
生成 syslog 输出的功能。这通常针对 Ceph 守护进程设置为"后台程序"。
类型
字符串
默认
"daemon"
clog_to_monitors
描述
确定 clog 消息是否将发送到 monitor。
类型
布尔值
必填
默认
true
mon_cluster_log_to_graylog
描述
确定集群是否会将日志消息输出到灰色log。
类型
字符串
默认
"false"
mon_cluster_log_to_graylog_host
描述
灰色日志主机的 IP 地址。如果灰色log 主机与 monitor 主机不同,请使用适当的 IP 地址覆盖此设置。
类型
字符串
默认
"127.0.0.1"
mon_cluster_log_to_graylog_port
描述
Graylog 日志将发送到此端口。确保端口已打开以接收数据。
类型
字符串
默认
"12201"
osd_preserve_trimmed_log
描述
修剪后保留修剪日志。
类型
布尔值
必填
默认
false
osd_tmapput_sets_uses_tmap
描述
使用 tmap.仅用于调试。
类型
布尔值
必填
默认
false
osd_min_pg_log_entries
描述
放置组的最小日志条目数量。
类型
32 位未签名的整数
必填
默认
1000
osd_op_log_threshold
描述
一次通过后会显示多少 op 日志消息.
类型
整数
必填
默认
5

附录 I. BlueStore 配置选项

以下是可在部署期间配置的 Ceph BlueStore 配置选项:

注意

此列表不完整。

rocksdb_cache_size
描述
RocksDB 缓存的大小(以 MB 为单位)。
类型
32 位 Integer
默认
512