Как отсоединить том на сервере

Вопрос или проблема

Извините за мой плохой английский!

  • Я хочу отделить том от сервера.
  • В настоящее время на моем сервере только один том, и это оригинальный том.
  • Я прочитал документацию OpenStack API Block Storage API V3 (CURRENT).

Я добавил полные параметры соответствия: том – в использовании, project_id и volume_id, но постоянно получаю ошибку “Error: Unable to detach volume: Volume”.

Я не знаю, в чем условия. Но когда я работаю с панелью управления, я получаю ошибку “Cannot detach a root device volume”. Вот мои действия:
информация об экземпляре

мои действия

шаг 2:
и ошибка

**Мое желание:

  • У меня есть 3 снимка и я хочу вернуть данные ко второму снимку. Но я не могу вернуть, потому что условие тома должно быть доступным. Поэтому я должен отделить оригинальный том от экземпляра или создать новый том из этого снимка. Затем присоединить к оригинальному экземпляру и нужно удалить старый том.**

Отделение корневого тома невозможно, даже если вы выключите экземпляр. Это сделано по замыслу. Если для возврата к снимку (как именно создается снимок?) требуется доступный том, вы можете установить состояние тома как доступное, не отделяя его фактически:

control:~# openstack volume set --state available --detached <VOLUME>

Обратите внимание, что это меняет только запись в базе данных, фактически том не отделяется. Но это может достичь того, что вы хотите, однако не забудьте установить состояние обратно в “attached” и “in-use” после завершения. Это может потребовать прав администратора, что может стать препятствием. Я рекомендую сначала протестировать это на тестовом экземпляре.

Ответ или решение

Чтобы ответить на ваш вопрос о том, как отделить том от сервера в OpenStack, важно сначала понять теорию, связанную с управлением томами и особенностями работы с ними в OpenStack.

Теория

В OpenStack, система управления томами осуществляется через сервис Cinder, который позволяет создавать, удалять, прикреплять и откреплять блочные устройства (volumes) к экземплярам (instances). Когда вы создаете экземпляр, ему присваивается корневой том, с которого экземпляр загружается. Этот том часто создается вместе с экземпляром из образа, который выбирает пользователь, и начинает функционировать как корневой том устройства.

Ключевые понятия:

  • Корневой том: Основной том, с которого сервер загружается. Этот том не может быть откреплен, пока экземпляр активен, чтобы предотвратить потерю данных и неработоспособность системы.
  • Снимки (snapshots): Они позволяют сохранять текущее состояние тома в любой момент времени. Это полезно для отказоустойчивости и отката системы к предыдущим состояниям.
  • Состояние тома: Каждому тому присваивается состояние, которое указывает на его доступность и прикрепленное состояние (например, in-use или available).

Практический пример

Ваш вопрос касается открепления корневого тома для отката данных к состоянию второго снимка. Итак, сначала давайте посмотрим, что происходит:

  1. Ошибка открепления корневого тома: Как вы заметили, OpenStack не позволяет открепить корневой том, что подтверждается сообщением "Cannot detach a root device volume". Это заложено в архитектуру системы для защиты данных и эксплуатационной целостности экземпляра.

  2. Использование снимков: У вас есть три снимка, и вы хотите откатить данные к состоянию второго снимка. Для этого важно, чтобы том был в состоянии "available". Однако корневой том не может быть просто откреплен и оставлен в таком состоянии.

Применение

  1. Косвенное решение с изменением состояния тома: Хотя прямое открепление корневого тома невозможно, вы можете попробовать изменить состояние тома на "available" с помощью команды:

    openstack volume set --state available --detached <VOLUME>

    Будьте внимательны: эта операция изменяет только состояние в базе данных и не открепляет том физически, но этого может оказаться достаточно для выполнения действий со снимками.

  2. Создание нового тома из снимка: Так как вы не можете напрямую откатить корневой том, создайте новый том из нужного снимка, затем прикрепите этот том к экземпляру. Процедура в общем следующая:

    • Создайте новый том из снимка:
      openstack volume create --snapshot <SNAPSHOT_ID> --size <SIZE> <NEW_VOLUME_NAME>
    • Остановите ваш экземпляр:
      openstack server stop <INSTANCE_ID>
    • Удалите существующий корневой том:
      openstack server volume delete <INSTANCE_ID> <VOLUME_ID>
    • Прикрепите новый том как корневой:
      openstack server volume attach --device /dev/vda <INSTANCE_ID> <NEW_VOLUME_ID>
    • Запустите ваш экземпляр:
      openstack server start <INSTANCE_ID>
  3. Обеспечение доступности и безопасности: Все изменения, особенно касаемо состояния тома в базе данных, следует выполнять с учетом требований конфигурации и безопасности. Кроме того, чтобы избежать внесения необратимых изменений, сначала протестируйте процесс на тестовом экземпляре.

Завершение

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

Если у вас есть права администратора, это неизменно упростит некоторые из вышеуказанных операций, предоставив вам больший контроль над процессом. Всегда помните о необходимости тестирования на некритичных системах, чтобы избежать потенциальных проблем на производственных серверах.

Оцените материал
Добавить комментарий

Капча загружается...