什么';提高CEPH群集IOPS的最佳实践是什么?

什么';提高CEPH群集IOPS的最佳实践是什么?,ceph,Ceph,我目前正在为KVM平台构建一个CEPH集群,它现在的性能结果是灾难性的。这个数字太可怕了。我对物理分布式系统不太熟悉,是否有提高总体性能(即延迟、带宽和IOPS)的一般建议 硬件配置目前不是最佳配置,但我仍然希望释放我目前所拥有的全部潜力: 1x 10Gbe华为交换机 3台机架式服务器,带硬件配置: Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz x2, totally 48 logical cores, 128GB DDR3 RAM Intel 1.8

我目前正在为KVM平台构建一个CEPH集群,它现在的性能结果是灾难性的。这个数字太可怕了。我对物理分布式系统不太熟悉,是否有提高总体性能(即延迟、带宽和IOPS)的一般建议

硬件配置目前不是最佳配置,但我仍然希望释放我目前所拥有的全部潜力:

1x 10Gbe华为交换机

3台机架式服务器,带硬件配置:

Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz x2, totally 48 logical cores, 

128GB DDR3 RAM

Intel 1.84T NVMe SSD x6 as data drive, with 1 OSD per disk (totally 6 OSDs per server)
我当前的
/etc/ceph/ceph.conf

[global]
fsid = f2d6d3a7-0e61-4768-b3f5-b19dd2d8b657
mon initial members = ceph-node1, ceph-node2, ceph-node3
mon allow pool delete = true
mon host = 192.168.16.1, 192.168.16.2, 192.168.16.3
public network = 192.168.16.0/24
cluster network = 192.168.16.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd pool default size = 3
osd pool default min size = 1
osd pool default pg num = 600
osd pool default pgp num = 600
osd memory target = 4294967296
max open files = 131072

[mon]
mon clock drift allowed = 1
mon osd min down reporters = 13
mon osd down out interval = 600

[OSD]
osd journal size = 20000
osd max write size = 512
osd client message size cap = 2147483648
osd deep scrub stride = 131072
osd op threads = 16
osd disk threads = 4
osd map cache size = 1024
osd map cache bl size = 128
osd recovery op priority = 2
osd recovery max active = 10
osd max backfills = 4
osd min pg log entries = 30000
osd max pg log entries = 100000
osd mon heartbeat interval = 40
ms dispatch throttle bytes = 1048576000
objecter inflight ops = 819200
osd op log threshold = 50
osd crush chooseleaf type = 0
journal max write bytes = 1073714824
journal max write entries = 10000
journal queue max ops = 50000
journal queue max bytes = 10485760000

[Client]
rbd cache = True
rbd cache size = 335544320
rbd cache max dirty = 134217728
rbd cache max dirty age = 30
rbd cache writethrough until flush = False
rbd cache max dirty object = 2
rbd cache target dirty = 235544320

IO基准测试由
fio
完成,配置如下:
fio-ioengine=libaio-bs=4k-direct=1-thread-rw=randread-size=100G-filename=/data/testfile-name=“CEPH Test”-iodepth=8-runtime=30

基准结果截图:

基准测试是在sperate机器上完成的,配置为仅通过安装MDS通过10Gbe交换机连接集群。除了没有Intel NVMe SSD驱动器外,基准机器与组成群集的其他3台机器相同


非常感谢您的帮助,

我想您3是指3台服务器刀片服务器,而不是3个机架

你对业绩的粗略估计是多少? 您的磁盘硬件(ceph之外)在4K和2MB时的性能状况如何? 此池中有多少磁盘,复制系数/策略和对象大小是多少

在客户端,您正在执行小读取:4K 在服务器端,根据预读设置和对象大小,这4K中的每一个都可能在后台捕获更多的数据


您是否检查过您的一个磁盘是否真的处于极限状态,并且没有网络/cpu限制?

我假设您3是指3个服务器刀片,而不是3个机架

你对业绩的粗略估计是多少? 您的磁盘硬件(ceph之外)在4K和2MB时的性能状况如何? 此池中有多少磁盘,复制系数/策略和对象大小是多少

在客户端,您正在执行小读取:4K 在服务器端,根据预读设置和对象大小,这4K中的每一个都可能在后台捕获更多的数据


您是否检查过您的一个磁盘是否真的处于极限状态,并且没有网络/cpu限制?

首先,我必须注意,Ceph不是首字母缩略词,它是头足类的缩写,因为触手

这就是说,在
ceph.conf
中有许多设置让我惊讶,比如缓存的OSDMap的极端数量。线程设置可能很复杂,并且在不同版本之间的适用性也不同。如果您正在构建600个PG的池,但这不是很好,那么您通常需要2的功率,并以每个OSD的比率为目标,以驱动器类型和其他池为因素。将mon时钟偏移设置为整秒(与默认的50ms相比)是彻头彻尾的警报,使用
Chrony
甚至传统的
ntpd
进行亚毫秒同步并不困难

三个节点可能会限制客户端可以支持的并行度/重叠度,特别是因为每个服务器只有6个驱动器。只有18个OSD

你也有文件存储设置,你不是真的在使用文件存储吧?还是比鹦鹉螺更老的Ceph释放物

最后,作为对所提出问题的更多实际答案,您可以做的一件简单的事情是将每个NVMe驱动器拆分为两个OSD——为池设置适当的
pgp_num
pg_num


ceph volume lvm batch–每个设备的OSD 2

首先,我必须注意,ceph不是首字母缩写,它是头足类动物的缩写,因为触手

这就是说,在
ceph.conf
中有许多设置让我惊讶,比如缓存的OSDMap的极端数量。线程设置可能很复杂,并且在不同版本之间的适用性也不同。如果您正在构建600个PG的池,但这不是很好,那么您通常需要2的功率,并以每个OSD的比率为目标,以驱动器类型和其他池为因素。将mon时钟偏移设置为整秒(与默认的50ms相比)是彻头彻尾的警报,使用
Chrony
甚至传统的
ntpd
进行亚毫秒同步并不困难

三个节点可能会限制客户端可以支持的并行度/重叠度,特别是因为每个服务器只有6个驱动器。只有18个OSD

你也有文件存储设置,你不是真的在使用文件存储吧?还是比鹦鹉螺更老的Ceph释放物

最后,作为对所提出问题的更多实际答案,您可以做的一件简单的事情是将每个NVMe驱动器拆分为两个OSD——为池设置适当的
pgp_num
pg_num


ceph volume lvm batch–每个设备的OSD 2

这不是openstack问题。Openstack(最多)只涉及性能问题的任何潜在原因。这不是Openstack问题。Openstack(最多)只涉及性能问题的任何潜在原因。