Ceph: добавление OSD

Добавление OSD в Ceph является обычной операцией. При этом добавление/замена OSD не сказывается на работоспособности кластера.
Допустим, диск уже находится в ячейке сервера и ждёт дальнейших указаний. В первую очередь необходимо создать cciss-устройство. В серверах HP это делает утилита hpssacli.
Необходимые команды:

hpssacli controller all show config detail
# показать unassigned-устройство, т.е. новый диск

hpssacli ctrl slot=0 create type=ld drives=1I:1:1 raid=0
# создание cciss-устройства, где drives - массив значений Port:Box:Bay

Далее можно опять вызвать детализированный просмотр hpssacli и увидеть что диск перешёл в состояние logical drive.
Так же можно посмотреть на вывод команды списка OSD текущей ноды:

ceph-disk list

Если smart проверка диска не доступна, необходимо перезагрузить сервис smartd:

service smartd restart

Если, для добавления cciss-устройства использовать утилиту от Proxmox, то необходимо доавить такой fix в файл Ceph.pl:208 (строка может быть немного смещена) по адресу /usr/share/perl5/PVE/API2:

208   $devname =~ s|/dev/||;
209 + $devname =~ s|cciss/|cciss!|;

Далее, в зависимости от способа хранения журнала создаётся OSD:
1. Если журнал хранится на отдельном SSD.

# убедиться, что на SSD есть свободное место
fdisk -l /dev/cciss/c0d0
# где c0d0 - SSD с журналом

# проверить, есть ли на SSD неиспользуемые разделы
ceph-disk list
# если вывод данной команды не показывает, кому принадлежит какой журнал, 
# то это можно увидеть в ссылке journal по адресу /var/lib/ceph/osd/ceph

# создаём OSD
pveceph createosd /dev/cciss/c0d1 -journal_dev /dev/cciss/c0d0
# где c0d1 - будущий OSD, а c0d0 - SSD c журналами
# если был в наличие пустой журнал от старого диска, можно указать его, т.е. c0d0p1

2. Если журнал хранится на самом диске.

pveceph createosd /dev/cciss/c0d1

Теперь Ceph запустит репликацию и через несколько часов новый диск наполнится данными.

в рубрике: