VK Private Cloud logo
Помощь
Обновлена 10 сентября 2026 г. в 14:07

Использование флагов при обслуживании кластера

Добавление новых дисков или узлов

  1. Перед началом работ:

    1. Установите флаг noout:

      $ ceph osd set noout
    2. Установите флаг norebalance:

      $ ceph osd set norebalance
    3. Установите флаг norecover:

      $ ceph osd set norecover
  2. Добавьте новые OSD.

  3. После добавления всех OSD:

    1. Снимите флаг norecover:

      $ ceph osd unset norecover
    2. Снимите флаг norebalance:

      $ ceph osd unset norebalance
    3. Снимите флаг noout:

      $ ceph osd unset noout
  4. Контролируйте начало ребалансировки:

    $ ceph -s

    Отслеживать процесс ребалансировки или восстановления в реальном времени можно с помощью команды:

    $ ceph progress

Обновление ПО на узлах

  1. Установите защитные флаги:

    1. Установите флаг noout:

      $ ceph osd set noout
    2. Установите флаг norebalance:

      $ ceph osd set norebalance
    3. Установите флаг nodeep-scrub:

      $ ceph osd set nodeep-scrub
    4. Установите флаг noscrub:

      $ ceph osd set noscrub
  2. Для всех OSD обновляемого узла задайте вес 0:

    1. Узнайте, какие OSD находятся на целевом узле. Для этого выведите структуру OSD:

      $ ceph osd tree
    2. Для всех OSD целевого узла задайте вес 0:

      $ ceph osd crush reweight osd.<OSD_ID> 0

      Пример, если узел, на котором нужно обновить ПО, содержит osd.10, osd.11 и osd.12:

      $ ceph osd crush reweight osd.10 0$ ceph osd crush reweight osd.11 0$ ceph osd crush reweight osd.12 0
  3. Дождитесь завершения миграции данных с этих OSD. Периодически проверяйте статус до тех пор, пока активные операции не завершатся:

    $ watch ceph -s
  4. Остановите все OSD на обновляемом узле:

    # systemctl stop ceph-osd@<OSD_ID>

    Пример, если узел, на котором нужно обновить ПО, содержит osd.10, osd.11 и osd.12:

    # systemctl stop ceph-osd@10# systemctl stop ceph-osd@11# systemctl stop ceph-osd@12
  5. Выполните обновление ПО на узле.

  6. По завершении обновления верните исходные веса OSD:

    $ ceph osd crush reweight osd.<OSD_ID> <ИСХОДНЫЙ_ВЕС>

    Пример, если исходные значения весов для osd.10, osd.11 и osd.12 были равны 1.0:

    $ ceph osd crush reweight osd.10 1.0$ ceph osd crush reweight osd.11 1.0$ ceph osd crush reweight osd.12 1.0
  7. Запустите OSD:

    # systemctl start ceph-osd@<OSD_ID>

    Пример:

    # systemctl start ceph-osd@osd.10# systemctl start ceph-osd@osd.11# systemctl start ceph-osd@osd.12
  8. Перейдите к следующему узлу и повторите шаги 2-7.

  9. После обновления всех узлов:

    1. Снимите флаг noscrub:

      $ ceph osd unset noscrub
    2. Снимите флаг nodeep-scrub:

      $ ceph osd unset nodeep-scrub
    3. Снимите флаг norebalance:

      $ ceph osd unset norebalance
    4. Снимите флаг noout:

      $ ceph osd unset noout

Замена failed диска

  1. Установите флаг:

    $ ceph osd set noout
  2. Пометьте OSD как out:

    $ ceph osd out osd.<OSD_ID>
  3. Удалите OSD из кластера:

    $ ceph osd purge osd.<OSD_ID> --yes-i-really-mean-it
  4. Замените физический диск в сервере.

  5. Добавьте новый OSD:

    $ ceph orch daemon add osd <УЗЕЛ>:<ДИСК>

    Здесь:

    • <УЗЕЛ> — имя узла.
    • <ДИСК> — путь к диску.
  6. Снимите флаги:

    $ ceph osd unset noout

Работы с сетью

  1. Установите защитные флаги:

    1. Установите флаг noout:

      $ ceph osd set noout
    2. Установите флаг nodown:

      $ ceph osd set nodown
    3. Установите флаг pause:

      $ ceph osd set pause
    4. Установите флаг noscrub:

      $ ceph osd set noscrub
    5. Установите флаг nodeep-scrub:

      $ ceph osd set nodeep-scrub
  2. Выполните сетевые работы.

  3. После восстановления сети:

    1. Снимите флаг nodeep-scrub:

      $ ceph osd unset nodeep-scrub
    2. Снимите флаг noscrub:

      $ ceph osd unset noscrub
    3. Снимите флаг pause:

      $ ceph osd unset pause
    4. Снимите флаг nodown:

      $ ceph osd unset nodown
    5. Снимите флаг noout:

      $ ceph osd unset noout
Была ли статья полезна?