Назад | Перейти на главную страницу

В: Невозможно создать «живой» снимок работы 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: отказано в разрешении

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

Будем очень признательны за любые указатели на получение резервной копии в реальном времени.

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

В KVM: (выполняется: / usr / libexec / qemu-kvm ...)

Гипервизор:

Я столкнулся с той же проблемой. Это проблема 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 localhost python: SELinux предотвращает / usr / bin / qemu-ga доступ к поиску в каталоге /var/lib/docker.#012#012***** Плагин catchall (уверенность 100) предлагает ************************* # 012 # 012 Если вы считаете, что qemu-ga должен иметь доступ для поиска в каталоге docker по умолчанию. # 012Затем вы должны сообщить об этом как об ошибке. # 012Вы можете сгенерировать модуль локальной политики, чтобы разрешить этот доступ. # 012Do # 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

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