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
... это именно то, что я написал здесь.