Исправляем проблему прав доступа разделов журнала 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 будут запускаться.