在规划 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
来源: http://www.bubuko.com/infodetail-2491656.html