Как выбрать числа K и M для кодирования стирания?
Как работает код стирания:
Параметры кодирования стирания Ceph K и M связаны с эффективностью используемой емкости и избыточностью в случае аппаратного сбоя. K - это количество частей данных, а M - это количество частей кода. Когда клиент записывает объект данных в кластер хранения Ceph, объект данных будет разделен на K равных по размеру частей данных. Ceph использует данные фрагменты для кодирования M фрагментов кодирования, которые будут использоваться для расчета потерянных данных фрагментов при сбое оборудования.
Части данных и части кода будут распределены и храниться в указанной области отказов K+M. Максимальное количество частей данных, которые могут быть потеряны, составляет M областей отказов. Доступные области отказов зависят от того, как серверы хранения распределены в физической инфраструктуре. Для кластера Ceph небольшого масштаба отказ может произойти на диске или хостах серверов. Область отказа кластеров большего масштаба может быть в стойках серверов, серверной комнате или дата-центре и т.д.
Объект данных восстанавливается из частей данных, когда клиент хочет прочитать данные.
Производительность хранения
По сравнению с алгоритмом репликации данных Ceph, кодирование с удалением обычно имеет лучшую эффективность использования пространства. Поскольку кодирование с удалением использует больше операций ввода-вывода диска для завершения ввода-вывода данных, оно менее подходит для рабочих нагрузок, требующих высокой производительности IOPS. Чем больше число K+M, тем больше ресурсов IOPS диска потребляет операция ввода-вывода.
При использовании больших K и меньших M общее количество переданных байтов данных в сети кластера Ceph будет меньше. Это может увеличить производительность ввода-вывода для объектов данных большого размера.
Эффективность использования пространства
Эффективность используемого пространства пула кодов стирания равна K/(K+M). Например, эффективность пространства пула кодов стирания K=4, M=2 составляет 4/6 = 66,7%. Это вдвое эффективнее, чем пула реплик 3, которые обеспечивают более высокую производительность IOPS при том же уровне аппаратной избыточности.
Разумное K больше, чем M из-за эффективности используемого пространства. Более крупный код стирания (K-M) обеспечивает лучшую эффективность использования пространства.
Количество серверов-хостов
Количество K+M также определяет количество хостов или более крупные области отказа, необходимые в кластере.
- Типичный пул кодов стирания требует минимум K+M серверов-хостов для полной распределенности всех EC-частей.
- Расширенная конфигурация кодов стирания позволяет хранить несколько EC-частей на одну область отказа. Эта конфигурация снижает необходимое количество серверов для распределения EC-частей.
Сводка влияния кодов стирания K и M:
- M определяет избыточное количество областей отказа.
- Большее K + M приводит к снижению производительности IOPS для небольших объектов, но улучшает пропускную способность для больших объектов.
- Эффективность использования пространства хранения = K/(K+M)
- Минимальное количество необходимых серверов.