Исправляем проблему прав доступа разделов журнала Ceph

Исправляем проблему прав доступа разделов журнала Ceph

Устраняем проблему прав доступа при создании нескольких разделов под журнал на SSD.

При использовании не всего диска SSD для журнала, а его разделов, появляются проблемы с правами доступа при его создании.

OSD::mkfs: ObjectStore::mkfs failed with error -13
** ERROR: error creating empty object store in /var/lib/ceph/tmp/mnt.RXIG74: (13) Permission denied

Если немного поискать, то можно наткнуться на BUG #13833, в котором представлено несколько костыльных решений, начиная от изменения прав (временное решение), заканчивая сменой UUID, что мы и будем делать. А также добавлю некоторое от себя исходя из практики.

Очень важно, чтобы таблица разделов диска была GUID. В противном случае после каждой перезагрузки права будут “слетать” на root:disk.

Итак. Сперва добавим пользователя ceph в существующую группу disk, в противном случае демоны не активируются и буду висеть с ошибкой.

sudo usermod -a -G disk ceph

После установки Ceph и затирания дисков (zap) создадим необходимое количество разделов на SSD, допустим:

Disk /dev/sdd: 240.1 GB, 240057409536 bytes, 468862128 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: gpt

# Start End Size Type Name
1 2048 167774207 80G Linux filesyste
2 167774208 335546367 80G Linux filesyste

Теперь необходимо получить значение Partition GUID code данных разделов, для этого воспользуемся sgdisk где ключ --info=1 это номер раздела:

[ceph@KVM-01 ~]$ sudo sgdisk --info=1 /dev/sdd
Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem)
Partition unique GUID: EEBA05DA-248C-4C19-8DAF-FD60BE514FEC
First sector: 2048 (at 1024.0 KiB)
Last sector: 167774207 (at 80.0 GiB)
Partition size: 167772160 sectors (80.0 GiB)
Attribute flags: 0000000000000000
Partition name: ''

Полученное значение Partition GUID code необходимо изменить для блока журналов в udev rules:
Обратите внимание, что sgdisk выводит GUID прописными буквами, в 95-ceph-osd.rules необходимо использовать строчные. Это очень важно!

Переходим в директорию /lib/udev/rules.d/ и редактируем файл 95-ceph-osd.rules, в котором изменяем значение ID_PART_ENTRY_TYPE на полученное ранее:

# JOURNAL_UUID
ACTION=="add", SUBSYSTEM=="block", \
ENV{DEVTYPE}=="partition", \
ENV{ID_PART_ENTRY_TYPE}=="0fc63daf-8483-4772-8e79-3d69d8477de4", \
OWNER:="ceph", GROUP:="ceph", MODE:="660", \
RUN+="/usr/sbin/ceph-disk --log-stdout -v trigger /dev/$name"
ACTION=="change", SUBSYSTEM=="block", \
ENV{ID_PART_ENTRY_TYPE}=="0fc63daf-8483-4772-8e79-3d69d8477de4", \
OWNER="ceph", GROUP="ceph", MODE="660"

Сохраняемся и запускаем триггер для каждого из разделов:

ceph-disk trigger /dev/sdd1
ceph-disk trigger /dev/sdd2

После проделанных действий для разделов журнала будут назначены соответствующие права и привилегии, и после перезагрузки все сохранится и примаунтится.

Теперь можем создавать OSD с указанием журнала на SSD.

Если у нас MBR и очень хочется “костылей”, то добавляем в /etc/rc.local команду ceph-disk trigger /dev/sdd1.
В этом случае будут выдаваться верные права на раздел и OSD будут запускаться.

Комментарии

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×