Цеф. какой osd выбран для фактического возврата данных из него (логика ceph)

Я использую кластер nginx->radosgw->ceph, где каждый фрагмент размещенных данных лежит на 3 OSD одновременно (каждый OSD является отдельным OSD-сервером). Весь кластер содержит 9 OSD-серверов. Ceph v10 (если это имеет значение)

Скажем, моя часть данных представляет собой небольшой файл размером 5 КБ. Кластер в нормальном состоянии.

ВОПРОС: Когда я ПОЛУЧАЮ (запрашиваю) мой фрагмент данных из моего кластера через nginx-> radosgw, какое OSD выбрано для получения актуальной информации с дисков SSD?

  1. Это ОДИН "основной" OSD, который возвращает целые 5 КБ данных?

  2. Это ВСЕ 3 OSD, которые содержат этот фрагмент, который возвращает целые 5 КБ данных из каждых 3 OSD одновременно?

  3. Это ЛЮБОЕ, но одно из 3 OSD, которое содержит этот кусок 5 КБ данных, которые выбраны для возврата фактических данных, и данные могут быть возвращены из любого из 3 OSD, но только из ОДНОГО выбранного OSD вернет целые 5 КБ данных?

  4. Это ЛЮБОЕ из 3 OSD, которое содержит этот фрагмент данных 5 КБ, который возвращает, скажем, osd1 возвращает 1 КБ + osd2 возвращает 3 КБ + osd8 возвращает 1 КБ = 5 КБ в целом?

В чем логика?

Спасибо за ваше терпение с вариантами чтения выше. Заранее спасибо за ответы.

1 ответ

Решение

ВОПРОС: Когда я ПОЛУЧАЮ (запрашиваю) мой фрагмент данных из моего кластера через nginx->radosgw, какое OSD выбрано для получения актуальной информации с дисков SSD?

Клиент всегда направляет запросы на чтение и запись в основное экранное меню. Для остальной части работы, основной OSD отвечает.

Таким образом, в случае реплицируемого пула основное экранное меню будет отвечать на запрос напрямую, полагаясь только на свое локальное хранилище. Весь объект будет считан из основного OSD, другие OSD не будут задействованы.

В случае кодированных пулов стирания клиент также будет запрашивать данные из основного OSD, когда основное OSD получило все порции данных от других задействованных OSD, основное OSD будет обслуживать объект в целом клиенту. В случае отсутствия фрагментов основное OSD также будет запрашивать фрагменты четности для декодирования данных.

Другие вопросы по тегам