====== Исправляем проблему прав доступа разделов журнала 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 Если немного поискать, то можно наткнуться на [[http://tracker.ceph.com/issues/13833BUG #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** будут запускаться.