Для обеспечения отказоустойчивости кластера рекомендуется использовать не менее трёх узлов и 12 OSD, равномерно распределённых между узлами.
Если диск использовался ранее (например, для ZFS или в качестве OSD), перед повторным использованием необходимо удалить все следы предыдущей конфигурации. Для удаления таблицы разделов, загрузочного сектора и других остатков OSD можно использовать команду:
# ceph-volume lvm zap /dev/[X] --destroy
Эта команда безвозвратно удаляет все данные на диске.
Создание OSD в веб-интерфейсе:
Перейдите на вкладку → → .
Нажмите кнопку Создать: OSD.
В открывшемся окне выберите локальный диск, который будет включен в Сeph-кластер. При необходимости можно указать отдельные диски для метаданных (Диск базы данных) и журналирования (Диск WAL):
Создание 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. Если параметры не заданы, используются следующие значения (в указанном порядке):
В DB хранятся внутренние метаданные BlueStore, а WAL представляет собой внутренний журнал предварительной записи BlueStore. Для достижения наилучшей производительности рекомендуется размещать DB и WAL на высокопроизводительных накопителях.
Если возникли проблемы с OSD или его диском, сначала рекомендуется попытаться
устранить неисправности, чтобы определить, действительно ли требуется удаление или
замена OSD.
Перед удалением OSD необходимо убедиться, что в кластере достаточно свободного пространства для перебалансировки данных:
В веб-интерфейсе → , если удаляемый 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 в веб-интерфейсе:
Выберите узел PVE и перейдите на панель → .
Выберите OSD, который нужно удалить, и нажмите кнопку Out:
После смены статуса с in на out нажмите кнопку Остановка:
После смены статуса с up на down выберите в раскрывающемся списке → :
Нажмите кнопку Удалить:
Удаление OSD в консоли:
Пометьте OSD как out:
# ceph osd out <ID>
Эта команда указывает Ceph не включать OSD в распределение данных.
Дождитесь завершения перебалансировки данных, чтобы кластер всегда сохранял необходимое количество реплик. После завершения перебалансировки OSD станет пустым и будет содержать 0 PG.
Для проверки возможности безопасной остановки OSD можно использовать команду:
# ceph osd ok-to-stop <ID>
На узле с удаляемым OSD остановите службу OSD:
# systemctl stop ceph-osd@<ID>.service
До этого момента данные не теряются.
Для окончательного удаления 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
…