Product SiteDocumentation Site

26.6.5. Ceph OSD

Рекомендуется использовать один OSD на каждый физический диск.

26.6.5.1. Создание OSD

Для обеспечения отказоустойчивости кластера рекомендуется использовать не менее трёх узлов и 12 OSD, равномерно распределённых между узлами.
Если диск использовался ранее (например, для ZFS или в качестве OSD), перед повторным использованием необходимо удалить все следы предыдущей конфигурации. Для удаления таблицы разделов, загрузочного сектора и других остатков OSD можно использовать команду:
# ceph-volume lvm zap /dev/[X] --destroy

Предупреждение

Эта команда безвозвратно удаляет все данные на диске.
Создание OSD в веб-интерфейсе:
  1. Перейдите на вкладку УзелCephOSD.
  2. Нажмите кнопку Создать: OSD.
  3. В открывшемся окне выберите локальный диск, который будет включен в Сeph-кластер. При необходимости можно указать отдельные диски для метаданных (Диск базы данных) и журналирования (Диск WAL):
    Создание OSD
Создание OSD в командной строке:
# pveceph osd create /dev/[X]
Указать отдельные устройства для метаданных (DB) и журналирования (WAL) для OSD можно с помощью параметров -db_dev и -wal_dev:
# pveceph osd create /dev/[X] -db_dev /dev/[Y] -wal_dev /dev/[Z]
Если устройство для WAL не указано, журнал размещается вместе с DB.
Размеры DB и WAL можно задать вручную с помощью параметров -db_size и -wal_size. Если параметры не заданы, используются следующие значения (в указанном порядке):
  • bluestore_block_{db,wal}_size из конфигурации Ceph:
    • база данных, раздел [osd];
    • база данных, раздел [global];
    • файл конфигурации, раздел [osd];
    • файл конфигурации, раздел [global];
  • автоматическое определение размеров (по умолчанию: 10 % для DB и 1 % для WAL от размера OSD).

Примечание

В DB хранятся внутренние метаданные BlueStore, а WAL представляет собой внутренний журнал предварительной записи BlueStore. Для достижения наилучшей производительности рекомендуется размещать DB и WAL на высокопроизводительных накопителях.

26.6.5.2. Удаление OSD

Если возникли проблемы с OSD или его диском, сначала рекомендуется попытаться устранить неисправности, чтобы определить, действительно ли требуется удаление или замена OSD.
Перед удалением OSD необходимо убедиться, что в кластере достаточно свободного пространства для перебалансировки данных:
  • В веб-интерфейсе CephOSD, если удаляемый OSD всё ещё активен и находится в состоянии AVAIL (ненулевое значение), убедитесь, что показатель Использовано (%) для всех OSD значительно ниже значения nearfull_ratio, (по умолчанию — 85 %).
    Показатель Использовано (%)
  • Аналогичную информации можно получить, выполнив команду:
    # ceph osd df tree
    
    Пример вывода:
    ID  CLASS  WEIGHT   REWEIGHT  AVAIL    %USE  VAR   PGS  STATUS  TYPE NAME
    -1         0.40585         -  415 GiB  0.07  1.00    -          root default
    -7         0.11279         -  115 GiB  0.06  0.91    -              host pve01
     3    ssd  0.11279   1.00000  115 GiB  0.06  0.91   65      up          osd.3
    -3         0.19537         -  200 GiB  0.07  1.03    -              host pve02
     0    ssd  0.09769   1.00000  100 GiB  0.08  1.11   31      up          osd.0
     2    ssd  0.09769   1.00000  100 GiB  0.06  0.94   34      up          osd.2
    -5         0.09769         -  100 GiB  0.07  1.05    -              host pve03
     1    ssd  0.09769   1.00000  100 GiB  0.07  1.05   65      up          osd.1
                           TOTAL  415 GiB  0.07
    MIN/MAX VAR: 0.91/1.11  STDDEV: 0.01
    

Примечание

Это позволяет снизить риск переполнения OSD в процессе перебалансировки, что в противном случае может привести к блокировке операций ввода-вывода в пулах Ceph.
Процедура удаления OSD в веб-интерфейсе:
  1. Выберите узел PVE и перейдите на панель CephOSD.
  2. Выберите OSD, который нужно удалить, и нажмите кнопку Out:
    Выбор OSD, который нужно удалить
  3. После смены статуса с in на out нажмите кнопку Остановка:
    Остановка OSD
  4. После смены статуса с up на down выберите в раскрывающемся списке ДополнительноУничтожить:
    Уничтожить OSD
  5. Нажмите кнопку Удалить:
    Удаление OSD
Удаление OSD в консоли:
  1. Пометьте OSD как out:
    # ceph osd out <ID>
    
    Эта команда указывает Ceph не включать OSD в распределение данных.
  2. Дождитесь завершения перебалансировки данных, чтобы кластер всегда сохранял необходимое количество реплик. После завершения перебалансировки OSD станет пустым и будет содержать 0 PG.
    Для проверки возможности безопасной остановки OSD можно использовать команду:
    # ceph osd ok-to-stop <ID>
    
  3. На узле с удаляемым OSD остановите службу OSD:
    # systemctl stop ceph-osd@<ID>.service
    
    До этого момента данные не теряются.
  4. Для окончательного удаления OSD выполните команду (на узле с удаляемым OSD):
    # pveceph osd destroy <ID> [--cleanup]
    
    Параметр --cleanup уничтожает таблицу разделов на диске.

    Предупреждение

    Эта команда безвозвратно уничтожает все данные на диске, используемом данным OSD.
Пример удаления osd.2:
# ceph osd out 2
marked out osd.2.

# ceph osd ok-to-stop 2
{"ok_to_stop":true,"osds":[2],"num_ok_pgs":0,"num_not_ok_pgs":0}

# systemctl stop ceph-osd@2.service

# pveceph osd destroy 2 --cleanup
destroy OSD osd.2
Remove osd.2 from the CRUSH map
Remove the osd.2 authentication key.
Remove OSD osd.2
…