База знаний VMmanager
Ваше мнение имеет значение!
Примите участие в опросе и помогите нам сделать продукты и сервисы ISPsystem еще лучше!
Пройти опрос

Как избежать повреждения дисков ВМ в Ceph v.16 (Pacific) и выше?

Описание

Инструкции из этой статьи актуальны, если в платформе версии 2024.10.2 или ниже: 

  • вы подключили к кластеру хранилище Ceph v.16 (Pacific) или выше;
  • вы подключили к кластеру хранилище Ceph v.15 (Octopus) или ниже и планируете обновить его до Ceph v.16 (Pacific) или выше.

При использовании одной из таких конфигураций существует риск повреждения дисков виртуальных машин (ВМ) после перезагрузки узла кластера VMmanager. Это связано с переименованием параметра Ceph blacklist в blocklist, начиная с версии 16 (Pacific). Статья содержит инструкции, как избежать повреждения дисков ВМ.

Диагностика

  1. Подключитесь к узлу кластера Ceph с ролью MDS по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Проверьте используемую версию Ceph: 
    ceph version
  3. Проверьте, используется ли в конфигурации Ceph параметр blocklist
    ceph auth get <ceph_user>
    Пояснения к команде

    Пример ответа
    [ceph_user]
        key = secret==
        caps mds = "allow rw"
        caps mon = "allow command \"osd blacklist\", allow r"
        caps osd = " allow rwx pool=libvirt-pool-1,allow class-read object_prefix rbd_children,allow rw pool=cephfs.test_vol.data"
    Если в ответе отсутствует текст osd blocklist, то существует риск повреждения ВМ.

Решение

  1. Подключитесь к узлу кластера Ceph с ролью MDS по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Если вы планируете обновить Ceph, выполните инструкции из официальной документации Ceph.
  3. Выполните команду: 
    ceph auth caps <ceph_user> mon 'allow r, allow command "osd blocklist"' osd 'allow class-read object_prefix rbd_children, allow rwx pool=<ceph_pool>'
    Пояснения к команде
    Пример ответа
    [ceph_user]
        key = secret==
        caps mds = "allow rw"
        caps mon = "allow command \"osd blocklist\", allow r"
        caps osd = " allow rwx pool=libvirt-pool-1,allow class-read object_prefix rbd_children,allow rw pool=cephfs.test_vol.data"
    Если ответ содержит текст osd blocklist, то проблема устранена.