Problema
En entornos de virtualización basados en QEMU/Proxmox, los backups de máquinas Windows suelen depender de la integración de Volume Shadow Copy Service (VSS). Cuando el agente de QEMU solicita un fs‑freeze para crear una instantánea consistente, Windows a veces responde con “Access denied to IVssWriterCallback”. El síntoma típico es que la tarea de backup se aborta, los logs de Proxmox Backup Server (PBS) muestran errores de VSS y, en el propio Windows, el comando vssadmin list writers indica que los escritores están en estado Failed.
Este comportamiento no es exclusivo de una versión concreta de Windows; se ha observado en Server 2016, Server 2019 y en versiones Core sin interfaz gráfica. El problema se vuelve crítico cuando la única alternativa conocida es abrir dcomcnfg y modificar manualmente los permisos DCOM para el usuario del agente, una operación tediosa y propensa a errores, sobre todo en despliegues automatizados.
Causa
El origen del error está en la interacción entre el QEMU Guest Agent (QGA) y el sub‑sistema COM de Windows. Cuando QGA intenta iniciar una sesión COM para llamar a IVssWriterCallback, la llamada se ejecuta bajo la cuenta del proceso qemu-ga.exe. En versiones anteriores de virtio-win (anteriores a 0.1.302) el agente no inicializa correctamente la seguridad COM, lo que lleva a que el servidor DCOM rechace la petición por falta de autorización.
Factores que agravan la situación:
- Drivers VirtIO desactualizados – los paquetes
virtio-winincluyen el QGA y los controladores de disco. Si el paquete está en una versión antigua, la inicialización COM es incompleta. - Política de seguridad DCOM personalizada – entornos que aplican GPO restrictivas pueden bloquear la creación de objetos COM para cuentas de servicio.
- Instalaciones “Server Core” – la ausencia de UI impide usar
dcomcnfgde forma cómoda, lo que lleva a buscar soluciones de línea de comandos poco documentadas. - Versiones de QEMU sin parche de inicialización – el código de QGA que llama a
CoInitializeSecurityse movió al proceso principal en parches recientes; versiones previas pueden quedar atrapadas en hilos secundarios sin los permisos adecuados.
En la práctica, la combinación de un driver antiguo y una política DCOM restrictiva produce el mensaje Access denied que interrumpe el freeze.
Solución
La forma más fiable de eliminar la necesidad de tocar DCOM es actualizar el paquete virtio-win a la versión 0.1.302 o superior y asegurarse de que el QGA se ejecuta con la última lógica de inicialización COM. El proceso se divide en tres pasos:
-
Descargar e instalar la última ISO de virtio‑win
- Obtén la ISO oficial desde el repositorio de Fedora (o el mirror de tu distribución).
- Monta la ISO en la VM y copia los controladores de disco y el ejecutable
qemu-ga.exea la carpetaC:\Windows\System32\. - Reemplaza los archivos existentes y reinicia la máquina.
-
Actualizar el agente QEMU en el host Proxmox
- En el nodo Proxmox, verifica la versión de QEMU con
pveversion -v. - Si la versión es anterior a la que incluye el parche de
CoInitializeSecurity, actualiza el paquetepve-qemu-kvmmedianteapt-get update && apt-get install pve-qemu-kvm. - Reinicia el servicio
pvedaemono el nodo completo para cargar la nueva versión.
- En el nodo Proxmox, verifica la versión de QEMU con
-
Validar la configuración del agente
- Asegúrate de que el servicio
QEMU Guest Agentestá configurado para iniciarse automáticamente:sc query qemu-ga sc config qemu-ga start= auto net start qemu-ga - Verifica que el agente responde a comandos de estado con
qm guest cmd <VMID> ping.
- Asegúrate de que el servicio
Con estos pasos, el agente ya inicializa COM con los permisos correctos y el llamado a IVssWriterCallback se completa sin errores. En la mayoría de los entornos, esto elimina por completo la necesidad de modificar DCOM manualmente.
Alternativa temporal
Si, por alguna razón, no puedes actualizar virtio-win inmediatamente, puedes aplicar un ajuste puntual en DCOM:
dcomcnfg
# Navega a Component Services → Computers → My Computer → DCOM Config
# Busca "QEMU Guest Agent" (o el CLSID correspondiente) y abre Propiedades
# En la pestaña Seguridad, agrega el usuario del servicio (por ejemplo, Local Service) con permisos de “Local Launch” y “Local Activation”.
Este método funciona, pero es frágil: cualquier cambio de política o actualización del agente puede revertir los permisos.
Cuándo aplicar esta solución
Aplicable cuando:
- Los logs de PBS indican fallos de VSS o
fs‑freezey el mensaje de error mencionaIVssWriterCallbacko Access denied. - La VM ejecuta Windows Server (cualquier edición) bajo QEMU/Proxmox y el QGA está instalado.
- No deseas gestionar permisos DCOM manualmente, especialmente en despliegues Core o en clusters automatizados.
No aplicable si:
- La VM no utiliza QGA (por ejemplo, se confía en snapshots externos sin VSS).
- El backup se realiza con herramientas que no requieren VSS (copias a nivel de bloque sin freeze).
- La infraestructura de host está bloqueada en versiones muy antiguas de Proxmox que no pueden actualizar QEMU.
Código
# 1. Descargar la última ISO de virtio-win
wget -O /tmp/virtio-win.iso https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win-0.1.302.iso
# 2. Montar la ISO en la VM (ejemplo con qemu-img y virt-manager)
virsh attach-disk <VMID> /tmp/virtio-win.iso vdb --type cdrom --mode readonly
# 3. Dentro de Windows, copiar los drivers y QGA
# (puedes usar PowerShell remoting o copiar manualmente)
# 4. Reiniciar la VM
virsh reboot <VMID>
# 5. En el host Proxmox, actualizar QEMU
apt-get update && apt-get install -y pve-qemu-kvm
# 6. Reiniciar servicios de Proxmox
systemctl restart pvedaemon pveproxy
Verificación
-
Comprobar el estado de los escritores VSS
vssadmin list writersTodos deben aparecer como Stable y sin errores.
-
Ejecutar un backup de prueba desde PBS
- Inicia una tarea de backup manual y observa que el paso VSS snapshot finaliza sin mensajes de error.
- En los logs de PBS (
/var/log/pbs/pbs.log) busca la cadenaVSS snapshot completed.
-
Revisar el log del agente QGA
journalctl -u qemu-ga -fNo debe haber entradas que indiquen
CoInitializeSecurityoAccess denied. -
Validar que el servicio QGA está activo
sc query qemu-gaEl estado debe ser
RUNNING.
Si los cuatro puntos son positivos, la solución está confirmada.
Notas adicionales
- En entornos con alta rotación de VMs, automatiza la descarga y el despliegue de la ISO de
virtio-winmediante scripts de provisioning (Ansible, Packer). - Mantén una política de actualización regular de los paquetes de Proxmox; los parches de QEMU suelen incluir mejoras de seguridad y de integración COM.
- Cuando trabajes con Windows Server Core, usa PowerShell Remoting (
Enter-PSSession) para copiar los archivos de la ISO y registrar el servicio QGA, evitando la necesidad de una consola gráfica. - Si después de la actualización sigues viendo fallos de VSS, revisa los eventos de Windows en
Event Viewer → Applications and Services Logs → Microsoft → Windows → VSS. Los códigos de error pueden indicar problemas de espacio en disco o de permisos de archivo que no están relacionados con DCOM.