Q: Невозможно создать "живой" снимок запущенного KVM с помощью virsh

Я был любезно направлен сюда, Serverfault от Stackoverflow, чтобы задать мой вопрос.

Я запускаю следующую команду на гипервизоре RHEL7, чтобы создать оперативную резервную копию (образ диска) работающего kvm, на котором запущена служба докера производства в kvm. Мне нужен живой снимок.

Многие документы, которые я прочитал, приводят меня к этой команде, чтобы получить живой снимок работающего KVM:

# virsh snapshot-create-as \
    --domain undercloud-vm undercloud-vm-snapshot \
    --diskspec vda,file=/backup/images/undercloud-vm.qcow2 \
    --quiesce \
    --disk-only \
    --atomic    

ошибка: внутренняя ошибка: невозможно выполнить команду агента QEMU 'guest-fsfreeze-freeze': не удалось открыть /var/lib/docker/overlay2: разрешение отклонено

Не желая связываться с разрешениями каталога KVM / var / lib / docker / overlay2, я решил задать этот вопрос здесь. И если кто-то сталкивался с этой проблемой, пытаясь сделать живой снимок KVM, внутри которого работает докер. Главное здесь - это то, что KVM является рабочим, и его нельзя просто приостановить или заморозить для создания моментального снимка, он должен продолжать работать и обрабатывать данные.

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

ИНФОРМАЦИЯ............

В KVM: (работает: /usr/libexec/qemu-kvm ...)

  • ОС: Red Hat Enterprise Linux Server версии 7.5 (Maipo)
  • Канал: org.qemu.guest_agent.0 был добавлен как виртуальный H / W
  • YUM: yum установить qemu-guest-agent
  • S / W: Docker версии 1.13.1, сборка 6e3bb8e/1.13.1

гипервизор:

  • HW: PowerEdge FC630, 36 процессоров Dell FX2s, 128 ГБ ОЗУ
  • ОС: Red Hat Enterprise Linux Server версии 7.6 (Maipo)
  • SW: qemu-img-rhev = 10: 2.10.0-21.el7_5.4
  • qemu-kvm- (common-) rhev = 10: 2.10.0-21.el7_5.4

0 ответов

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

# ausearch -c qemu-ga --raw | audit2allow


#============= virt_qemu_ga_t ==============

allow virt_qemu_ga_t container_var_lib_t:dir { ioctl open read search };

allow virt_qemu_ga_t proc_net_t:file read;

Вы можете сгенерировать соответствующий локальный модуль безопасности, который позволяет qemu-ga работать правильно следующим образом:

# ausearch -c qemu-ga --raw | audit2allow -M local
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i local.pp
# semodule -i local.pp

С этим изменением мы можем использовать --quiesce опция при создании снимков.


Обновление: после проверки это решение фактически появляется в сообщении об ошибке, включенном в отчет об ошибке:

16 января 10:59:49 локальный питон: SELinux запрещает /usr/bin/qemu-ga доступ к поиску в каталоге /var/lib/docker.#012#012***** Плагин catchall (100. доверие) предлагает ************************** #012#012 Если вы считаете, что qemu-ga должен быть разрешен доступ для поиска в каталоге docker по умолчанию.#012 Затем вы должны сообщить об этом как об ошибке.#012Вы можете сгенерировать модуль локальной политики, чтобы разрешить этот доступ.#012До #012 разрешите этот доступ, выполнив:#012# ausearch -c 'qemu-ga' --raw | audit2allow -M my-qemuga#012# semodule -i my-qemuga.pp#012

Если вы посмотрите на конец ошибки там, он говорит L

You can generate a local policy module to allow this access.
allow this access for now by executing:
# ausearch -c 'qemu-ga' --raw | audit2allow -M my-qemuga
# semodule -i my-qemuga.pp

... это именно то, что я написал здесь.

Другие вопросы по тегам