Исправляем проблему прав доступа разделов журнала Ceph
Устраняем проблему прав доступа при создании нескольких разделов под журнал на SSD.
При использовании не всего диска SSD для журнала, а его разделов, появляются проблемы с правами доступа при его создании.
1 | OSD::mkfs: ObjectStore::mkfs failed with error -13 |
Если немного поискать, то можно наткнуться на BUG #13833, в котором представлено несколько костыльных решений, начиная от изменения прав (временное решение), заканчивая сменой UUID, что мы и будем делать. А также добавлю некоторое от себя исходя из практики.
Очень важно, чтобы таблица разделов диска была GUID
. В противном случае после каждой перезагрузки права будут “слетать” на root:disk
.
Итак. Сперва добавим пользователя ceph
в существующую группу disk
, в противном случае демоны не активируются и буду висеть с ошибкой.
1 | sudo usermod -a -G disk ceph |
После установки Ceph и затирания дисков (zap) создадим необходимое количество разделов на SSD, допустим:
1 | Disk /dev/sdd: 240.1 GB, 240057409536 bytes, 468862128 sectors |
Теперь необходимо получить значение Partition GUID code
данных разделов, для этого воспользуемся sgdisk
где ключ --info=1
это номер раздела:
1 | [ceph@KVM-01 ~]$ sudo sgdisk --info=1 /dev/sdd |
Полученное значение Partition GUID code
необходимо изменить для блока журналов в udev rules:
Обратите внимание, что sgdisk выводит GUID прописными буквами, в 95-ceph-osd.rules необходимо использовать строчные. Это очень важно!
Переходим в директорию /lib/udev/rules.d/
и редактируем файл 95-ceph-osd.rules
, в котором изменяем значение ID_PART_ENTRY_TYPE
на полученное ранее:
1 | # JOURNAL_UUID |
Сохраняемся и запускаем триггер для каждого из разделов:
1 | ceph-disk trigger /dev/sdd1 |
После проделанных действий для разделов журнала будут назначены соответствующие права и привилегии, и после перезагрузки все сохранится и примаунтится.
Теперь можем создавать OSD с указанием журнала на SSD.
Если у нас MBR и очень хочется “костылей”, то добавляем в /etc/rc.local
команду ceph-disk trigger /dev/sdd1
.
В этом случае будут выдаваться верные права на раздел и OSD будут запускаться.