Вопрос или проблема
Слишком ли медленный Ceph и как его оптимизировать?
Настройка состоит из 3 кластеров Proxmox для вычислений и 3 кластерных узлов хранения Ceph,
ceph01 8*150GB SSD (1 используется для ОС, 7 для хранения)
ceph02 8*150GB SSD (1 используется для ОС, 7 для хранения)
ceph03 8*250GB SSD (1 используется для ОС, 7 для хранения)
Когда я создаю ВМ на узле Proxmox, используя хранилище Ceph, я получаю нижеуказанную скорость (пропускная способность сети не является узким местом)
Запись в ВМ, где HDD в Ceph
[root@localhost ~]# dd if=/dev/zero of=./here bs=1M count=1024 oflag=direct
1024+0 записей введено
1024+0 записей выведено
1073741824 байт (1.1 ГБ) скопировано, 46.7814 с, 23.0 МБ/с
[root@localhost ~]# dd if=/dev/zero of=./here bs=1G count=1 oflag=direct
1+0 записей введено
1+0 записей выведено
1073741824 байт (1.1 ГБ) скопировано, 15.5484 с, 69.1 МБ/с
Запись в ВМ, где HDD в Proxmox
для сравнения, ниже приведено на ВМ в Proxmox, SSD тот же модель,
[root@localhost ~]# dd if=/dev/zero of=./here bs=1M count=1024 oflag=direct
1024+0 записей введено
1024+0 записей выведено
1073741824 байт (1.1 ГБ) скопировано, 10.301 с, 104 МБ/с
[root@localhost ~]# dd if=/dev/zero of=./here bs=1G count=1 oflag=direct
1+0 записей введено
1+0 записей выведено
1073741824 байт (1.1 ГБ) скопировано, 7.22211 с, 149 МБ/с
У меня есть следующий пул Ceph
size/min = 3/2
pg_num = 2048
ruleset = 0
Запускаю 3 монитора на одних и тех же хостах, Журналы хранятся на каждом собственном OSD
Запущен последний Proxmox с Ceph Hammer
Есть ли у вас предложения, на что нам следует обратить внимание для улучшения? Это пул Ceph? Это Журналы? Имеет ли значение, если Журнал находится на том же диске, что и ОС (/dev/sda) или OSD (/dev/sdX)?
Вы можете увеличить пропускную способность диска (МБ/с), установив MTU на 9000 и изменив планировщик I/O на noop.
Я также запускаю кластер с CEPH Hammer. Если вы запускаете OSD в формате Filestore, вам нужно использовать NVMe для журнала, даже если вы используете SSD в качестве OSD.
Вы также можете попробовать PureFlash (https://github.com/cocalele/PureFlash). Он использует новую архитектуру под названием BlockDirectly, которая имеет очень небольшие потери производительности.
Кроме того, его легко развернуть с контейнером, пожалуйста, обратитесь к https://github.com/cocalele/PureFlash/wiki/%E5%9F%BA%E4%BA%8E%E5%AE%B9%E5%99%A8%E7%9A%84%E6%B5%8B%E8%AF%95%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2
Ответ или решение
Ответ на вопрос: «Слишком ли медленный Ceph и как его оптимизировать?»
Ваши наблюдения о производительности Ceph на кластере Proxmox, а также сравнительные тесты с локальными дисками, действительно указывают на то, что производительность Ceph в вашем случае ниже ожидаемой. Давайте рассмотрим несколько направлений для оптимизации.
1. Настройка пула Ceph
- Размер и количество PG (Placement Groups): У вас настроено большое количество PG (2048), что может быть избыточным при текущем количестве OSD. Рекомендуется пересмотреть настройку PG, основываясь на количестве OSD. Обычно, рекомендуется использовать 100-200 PG на OSD для оптимальной производительности. Это зависит от общего размера пула, но при 21 OSD (3 узла, по 7 OSD) вы можете снизить PG до 128 или 256.
2. Журнал OSD
- Размещение журнала: Использование SSD под журнал OSD является хорошей практикой, но желательно выделить отдельные NVMe диски для журнала (если это возможно). Это может значительно улучшить производительность, так как журнал активно участвует в процессе записи данных. Хранение журнала на одном и том же диске, где размещены OSD, может приводить к конкуренции за ресурсы.
3. MTU и I/O Scheduler
- Увеличьте MTU: Настройка MTU на 9000 (Jumbo Frames) может значительно улучшить производительность сети, особенно если у вас гигабитная или 10-гигабитная сеть.
- Изменение I/O Scheduler: Переход на планировщик I/O
noop
может также помочь в повышении производительности, так как он меньше нагружает процессор.
4. Обновление версии Ceph
- Обновление Ceph: Вы используете Ceph Hammer, который довольно устарел. Обновление до более новой версии, такой как Ceph BlueStore, обеспечит вам значительное улучшение производительности. BlueStore использует более эффективные механизмы хранения и улучшает управление метаданными.
5. Мониторинг и диагностика
- Используйте инструменты мониторинга: Применение таких инструментов, как Ceph Dashboard или Ceph Metrics, поможет вам выявить узкие места в производительности. Отслеживайте использование CPU, памяти и дисков. Это также может помочь идентифицировать медленные диски или проблемы с сетью.
6. Обдумайте использование альтернатив
- PureFlash: Рассмотрите использование блока, такого как PureFlash. Эта система предлагает новую архитектуру, которая минимизирует потери производительности, и может быть легко внедрена через контейнеры.
Заключение
Оптимизация Ceph требует комплексного подхода: пересмотрите настройки пулов, используйте правильное оборудование для журналов, настройте сеть и обновите систему до более новых и производительных версий. Следуйте этим рекомендациям, и вы увидите существенный прирост производительности вашего Ceph-кластера.