Ceph 的硬件要求在很大程度上取决于 IO 工作负载。在着手进行详细规划时,应考虑以下硬件要求和建议。
一般情况下,本节所述的建议是按进程提出的。如果同一台计算机上有多个进程,则需要提高 CPU、RAM、磁盘和网络要求。
至少需要 4 个 OSD 节点,每个节点包含 8 个 OSD 磁盘。
对于不使用 BlueStore 的 OSD 而言,在每个 OSD 存储节点上,至少需要为每 TB 的原始 OSD 容量提供 1 GB RAM。建议为每 TB 原始 OSD 容量提供 1.5 GB RAM。在恢复期间,为每 TB 原始 OSD 容量提供 2 GB RAM 可能会达到最佳效果。
对于使用 BlueStore 的 OSD 而言,首先要计算出针对不使用 BlueStore 的 OSD 建议的 RAM 大小,然后计算 2 GB 加上每个 OSD 进程建议的 RAM 的 BlueStore 快速缓存大小,并在这两个结果中选择 RAM 值较大的那一个。请注意,对于 HDD,默认的 BlueStore 快速缓存为 1 GB;而对于 SSD 设备,默认则为 3 GB。总之,请从下面两个值中选择较大的那个:
[1GB * OSD count * OSD size]
或者
[(2 + BS cache) * OSD count]
对于每个 OSD 守护进程进程,至少需要为每个 OSD 提供 1.5 GHz 的逻辑 CPU 内核。建议为每个 OSD 守护进程进程提供 2 GHz 内核。请注意,Ceph 为每个存储磁盘运行一个 OSD 守护进程进程;请不要计入专门用作 OSD 日记、WAL 日记、omap 元数据或此三者任意组合形式的保留磁盘空间。
10 Gb 以太网(与多个交换机绑定的两个网络接口)。
采用 JBOD 配置的 OSD 磁盘。
OSD 磁盘应该专门由 SUSE Enterprise Storage 使用。
操作系统专用的磁盘/SSD,最好采用 RAID 1 配置。
如果此 OSD 主机将要托管用于快速缓存分层的一部分快速缓存池,请至少额外分配 4 GB RAM。
出于磁盘性能原因,OSD 节点应是未虚拟化的裸机。
需要在 OSD 上运行以下两种类型的磁盘空间:磁盘日记(针对 FileStore)或 WAL/DB 设备(针对 BlueStore)的空间以及存储数据的主空间。日记/WAL/DB 的最小(默认)值为 6 GB。数据的最小空间为 5 GB,因为系统会自动为小于 5 GB 的分区指定权重 0。
因此,尽管 OSD 的最小磁盘空间为 11 GB,但不建议使用小于 20 GB 的磁盘,即使在测试中也是如此。
下面是针对 WAL/DB 设备大小调整的几条规则。使用 DeepSea 部署 OSD 和 BlueStore 时,它会自动应用建议的规则,并向管理员告知实情。
每 TB 的 OSD 容量为 10GB 的 DB 设备(OSD 的 1/100)。
WAL 设备介于 500MB 到 2GB 之间。WAL 大小取决于数据流量和工作负载,而不是取决于 OSD 大小。如果您知道 OSD 实际上能在吞吐量极高时处理小型写入和覆盖,则 WAL 最好较大而不是较小。1GB WAL 设备是一个较好的折衷方案,可满足大多数部署要求。
如果您打算将 WAL 和 DB 设备置于同一磁盘,建议您为这两个设备使用一个分区,而不是为每个设备使用单独的分区。这样,Ceph 便可以使用 DB 设备来执行 WAL 操作。这对于磁盘空间的管理也会更有效,因为 Ceph 只会在需要时才会为 WAL 使用 DB 分区。另一个好处是 WAL 分区填满的可能性很小,当该分区未完全占用时,转而用于 DB 操作不会浪费空间。
要与 WAL 共享 DB 设备,请不要指定 WAL 设备,而是仅指定 DB 设备:
bluestore_block_db_path = "/path/to/db/device" bluestore_block_db_size = 10737418240 bluestore_block_wal_path = "" bluestore_block_wal_size = 0
您也可以将 WAL 置于其自己的独立设备上。在这种情况下,建议针对 WAL 操作使用最快的设备。
您可以在一台服务器上使用所允许的任意数量的磁盘。规划每台服务器的磁盘数量时,需要考虑以下几点:
网络带宽:在一台服务器中使用的磁盘越多,执行磁盘写入操作时必须通过网卡传输的数据就越多。
内存:为获得最佳性能,请每安装 1 TB 磁盘空间至少保留 2 GB RAM。
容错:整台服务器发生故障时,该服务器包含的磁盘越多,则集群暂时丢失的 OSD 就越多。此外,为了确保复制规则的运行,需要将有故障服务器中的所有数据复制到集群中的其他节点。
至少需要三个 Ceph Monitor 节点。监视器数量应始终为奇数 (1+2n)。
4 GB RAM。
有四个逻辑内核的处理器。
强烈建议对监视器使用 SSD 或其他速度足够快的存储类型,特别是针对每个监视器节点上的 /var/lib/ceph
路径,因为仲裁可能不稳定且磁盘延迟较高。建议提供两个采用 RAID 1 配置的磁盘来实现冗余。建议对监视器进程使用独立的磁盘,或者至少是独立的磁盘分区,以防止日志文件缓增等问题导致监视器的可用磁盘空间不足。
每个节点只能有一个监视器进程。
仅当有足够的硬件资源可用时,才支持混用 OSD、监视器或对象网关节点。这意味着,对于所有服务需要提高相应要求。
与多个交换机绑定的两个网络接口。
对象网关节点应有 6 到 8 个 CPU 内核和 32 GB RAM(建议 64 GB)。如果将其他进程共置在同一台计算机上,则需要提高资源的要求。
元数据服务器节点的适当大小取决于特定用例。一般而言,元数据服务器需要处理的打开文件越多,所需要的 CPU 和 RAM 就越多。以下是最低要求:
每个元数据服务器守护进程需要 3G RAM。
绑定网络接口。
2.5 GHz CPU,至少有两个内核。
至少需要 4 GB RAM 和四核 CPU。这包括在 Salt Master 上运行 openATTIC 的要求。对于包含数百个节点的大型集群,建议提供 6 GB RAM。
iSCSI 节点应有 6 到 8 个 CPU 内核和 16 GB RAM。
要运行 Ceph 的网络环境最好是至少包含两个网络接口的绑定组合,该组合使用 VLAN 逻辑分割为公共部分和可信的内部部分。如果可能,建议采用 802.3ad 绑定模式,以提供最高的带宽和恢复能力。
公共 VLAN 用于向客户提供服务,而内部部分则用于提供经身份验证的 Ceph 网络通讯。建议采用此模式的主要原因在于,尽管 Ceph 可提供身份验证并在创建机密密钥后防范攻击,但用于配置这些密钥的讯息可能会公开传输,因而容易受到攻击。
如果存储节点是通过 DHCP 配置的,则默认超时可能会不够长,无法保证在各个 Ceph 守护进程启动前正确配置网络。如果发生此问题,Ceph MON 和 OSD 将不会正常启动(运行 systemctl status ceph\*
会导致“无法绑定”错误)。为避免此问题发生,建议在存储集群的每个节点上,将 DHCP 客户端超时增加到至少 30 秒。为此,可在每个节点上更改以下设置:
在 /etc/sysconfig/network/dhcp
中,设置
DHCLIENT_WAIT_AT_BOOT="30"
在 /etc/sysconfig/network/config
中,设置
WAIT_FOR_INTERFACES="60"
如果您在部署 Ceph 期间未指定集群网络,则系统假设使用的是单个公共网络环境。尽管 Ceph 可在公共网络中正常运行,但如果您设置了另一个专用集群网络,Ceph 的性能和安全性将会得到提升。要支持两个网络,每个 Ceph 节点上至少需有两个网卡。
需要对每个 Ceph 节点应用以下更改。对小型集群执行此操作的速度相对较快,但如果集群包含数百甚至数千个节点,则此过程可能十分耗时。
在每个集群节点上停止 Ceph 相关的服务。
在 /etc/ceph/ceph.conf
中添加一行以定义集群网络,例如:
cluster network = 10.0.0.0/24
如果需要指定具体的静态 IP 地址或覆盖 cluster network
设置,可以使用可选的 cluster addr
实现此目的。
检查专用集群网络是否在 OS 级别按预期工作。
在每个集群节点上启动 Ceph 相关的服务。
sudo systemctl start ceph.target
如果监视器节点位于多个子网中,例如,位于不同的机房并由不同的交换机提供服务,则您需要相应地调整 ceph.conf
文件。例如,如果节点的 IP 地址为 192.168.123.12、1.2.3.4 和 242.12.33.12,请将以下几行添加到 global 段落:
[global] [...] mon host = 192.168.123.12, 1.2.3.4, 242.12.33.12 mon initial members = MON1, MON2, MON3 [...]
此外,如果您需要指定每个监视器的公用地址或网络,则需要为每个监视器添加 [mon.X]
段落:
[mon.MON1] public network = 192.168.123.0/24 [mon.MON2] public network = 1.2.3.0/24 [mon.MON3] public network = 242.12.33.12/0
一般情况下,Ceph 不支持在配置文件、存储池名称、用户名等内容中使用非 ASCII 字符。配置 Ceph 集群时,建议在所有 Ceph 对象/配置名称中仅使用简单的字母数字字符(A-Z、a-z、0-9)和最少量的标点符号(“.”、“-”、“_”)。
四个对象存储节点
10 Gb 以太网(与多个交换机绑定的两个网络)
每个存储集群有 32 个 OSD
OSD 日记可以驻留在 OSD 磁盘上
每个对象存储节点有专用的 OS 磁盘
在每个对象存储节点上,为每 TB 的原始 OSD 容量提供 1 GB RAM
为每个对象存储节点上的每个 OSD 提供 1.5 GHz
Ceph Monitor、网关和元数据服务器可以驻留在对象存储节点上
三个 Ceph Monitor 节点(需要使用 SSD 作为专用 OS 驱动器)
Ceph Monitor、对象网关和元数据服务器节点需要冗余部署
iSCSI 网关、对象网关和元数据服务器需要额外的 4 GB RAM 和四个内核
具有 4 GB RAM、四个内核和 1 TB 容量的独立管理节点
七个对象存储节点
单个节点不超过总容量的 15% 左右
10 Gb 以太网(与多个交换机绑定的四个物理网络)
每个存储集群有 56 个以上的 OSD
每个 OSD 存储节点包含 RAID 1 OS 磁盘
根据 6:1 的 SSD 日记与 OSD 的比率为日记提供 SSD
在每个对象存储节点上,为每 TB 的原始 OSD 容量提供 1.5 GB RAM
为每个对象存储节点上的每个 OSD 提供 2 GHz
专用的物理基础架构节点
三个 Ceph Monitor 节点:4 GB RAM,四核处理器,RAID 1 SSD 磁盘
一个 SES 管理节点:4 GB RAM,四核处理器,RAID 1 SSD 磁盘
网关或元数据服务器节点的冗余物理部署:
对象网关节点:32 GB RAM,八核处理器,RAID 1 SSD 磁盘
iSCSI 网关节点:16 GB RAM,四核处理器,RAID 1 SSD 磁盘
元数据服务器节点(一个主动/一个热待机):32 GB RAM,八核处理器,RAID 1 SSD 磁盘