For the complete documentation index, see llms.txt. This page is also available as Markdown.

Compatibilidad del controlador VirtIO-Win con cargas de trabajo de MS SQL Server

Problema conocido de compatibilidad del controlador virtio-win que afecta a las VMs de Windows que ejecutan MS SQL Server bajo alta E/S, incluida la versión recomendada, los pasos de verificación y un procedimiento limpio de degradación.

Resumen

Puntos clave

  • virtio-win v0.1.285 y v0.1.292 contienen una condición de carrera en el vioscsi y viostor controladores de almacenamiento que se manifiestan en máquinas virtuales de MS SQL Server muy cargadas

  • v0.1.271 es la última versión antes del commit afectado y es la versión recomendada para invitados de Windows que ejecutan cargas de trabajo de bases de datos

  • Los síntomas son más pronunciados en Windows Server 2025 invitados bajo E/S paralela sostenida

  • La corrección upstream llegó en enero de 2026; las versiones posteriores de virtio-win que la incluyan también deberían ser seguras — verifique la compilación antes de implementarla ampliamente

  • Haga una instantánea de la VM y detenga los servicios de SQL Server antes de cambiar los controladores de almacenamiento

Las máquinas virtuales de Windows que ejecutan MS SQL Server en VergeOS pueden generar una secuencia de entradas de registro de SQL Server de "reintento de lectura" — y, en algunos casos, un servicio de SQL Server bloqueado después de unos días de carga sostenida — cuando el invitado está usando virtio-win v0.1.285 o v0.1.292. La causa raíz es una asignación no atómica de ID de SRB en los vioscsi/viostor miniports de Storport que permite que se emitan ID duplicados cuando Windows distribuye la E/S entre varios CPU en paralelo (registrado upstream como incidencia #1453 de virtio-win).

El comportamiento es más reproducible en Windows Server 2025 porque su implementación de Storport paraleliza StartIo de forma más agresiva que las versiones anteriores de Windows Server. Los invitados de Windows más antiguos están expuestos al mismo error, pero lo desencadenan con menos frecuencia.

Degradar los controladores virtio-win del invitado a v0.1.271 es una solución estable. Una corrección para la condición de carrera subyacente se fusionó upstream y se incluyó en compilaciones más nuevas de virtio-win, por lo que las versiones posteriores que la incluyan también deberían ser seguras — confirme con el soporte de VergeOS qué compilaciones de su entorno son conocidas como válidas antes de actualizar en medio de un incidente.

Síntomas

Si sospecha de este problema en una VM de Windows en VergeOS, busque lo siguiente en el Aplicación registro de eventos y registro de errores de SQL Server:

  • Mensajes de reintento de lectura en los que los valores esperado y real son idénticos, por ejemplo:

    Una lectura del archivo '*.mdf' en el desplazamiento 0x... se completó correctamente tras fallar 1 vez con el error: suma de comprobación incorrecta (esperada: 0xad4c6778; real: 0xad4c6778)

    Una lectura del archivo '*.mdf' en el desplazamiento 0x... se completó correctamente tras fallar 1 vez con el error: pageid incorrecto (esperado 1:29669944; real 1:29669944)

  • No se encontró SRB para el ID entradas del vioscsi origen

  • Servicios de SQL Server bloqueándose después de varios días de carga intensa sostenida

Estos mensajes pueden parecer corrupción, pero por lo general no lo son

SQL Server informa del reintento resultado, que tiene éxito en el segundo intento. DBCC CHECKDB normalmente vuelve limpio: las páginas de la base de datos en disco están intactas. El controlador está entregando el búfer incorrecto en la primera lectura debido al ID de SRB duplicado, y la segunda lectura devuelve los datos correctos. Los reintentos persistentes siguen indicando un problema real y deben resolverse incluso cuando no se detecta corrupción.

Requisitos previos

  • Una VM de Windows que ejecuta MS SQL Server (o una carga de trabajo de base de datos igualmente intensiva en E/S) en VergeOS

  • Acceso administrativo al invitado de Windows

  • Una instantánea de la VM tomada antes de cambiar cualquier controlador

  • El ISO de virtio-win v0.1.271 cargado en su entorno VergeOS bajo Archivos. Las ISOs archivadas están disponibles en el archivo stable-virtio en Fedora People

Identificación de la versión instalada del controlador VirtIO

Antes de cambiar nada, confirme qué compilación de virtio-win está ejecutando actualmente el invitado.

  1. Abra el Administrador de dispositivos

    • Haga clic con el botón derecho en el menú Inicio y seleccione Administrador de dispositivos.

  2. Localice el controlador de almacenamiento VirtIO

    • Expanda Controladoras de almacenamiento.

    • Haga clic con el botón derecho en controlador Red Hat VirtIO SCSI (para vioscsi) o controlador pass-through de Red Hat VirtIO SCSI / Dispositivo de disco Red Hat VirtIO SCSI (para viostor) y elija Propiedades.

  3. Compruebe la versión y la fecha del controlador

    • Cambie a la pestaña Controlador tab.

    • Anote los campos Versión del controlador y Fecha del controlador .

  4. Cruce la referencia con la ISO de origen

    • La marca de versión del controlador sigue un formato 100.<minor>.<build>.<revision> en el que el componente de revisión final se construye a partir de la versión ISO de virtio-win. Por ejemplo, un vioscsi controlador de virtio-win 0.1.285 normalmente termina en .28500; 0.1.271 normalmente termina en .27100.

    • Si no está seguro de qué ISO generó el controlador instalado, monte la ISO candidata dentro del invitado y compare su vioscsi.inf / viostor.inf DriverVer línea con el valor que se muestra en el Administrador de dispositivos.

Versiones recomendadas

Versión
Estado

v0.1.271

Solución alternativa recomendada. Última versión antes del commit afectado; confirmada como estable bajo una carga intensa de SQL.

v0.1.285

Evitar. Contiene la vioscsi/viostor condición de carrera del ID de SRB; produce errores de reintento de lectura en VMs de SQL muy ocupadas.

v0.1.292

Evitar. Mismo defecto que v0.1.285.

Compilaciones después de la corrección upstream (a partir de enero de 2026)

En principio debería ser seguro. Confirme la compilación específica con el soporte de VergeOS antes de implementarla.

Las descargas estables de ISO de virtio-win están disponibles en el repositorio stable-virtio de Fedora People, y las versiones anteriores en el directorio archive-virtio.

Degradar a virtio-win v0.1.271

  1. Detener los servicios de MS SQL Server en el invitado

    • Desde un PowerShell elevado o la consola Servicios, detenga el servicio SQL Server (MSSQLSERVER) y cualquier servicio dependiente (SQL Agent, texto completo, Reporting Services, etc.) para quietar la E/S antes de cambiar el controlador de almacenamiento.

  2. Monte la ISO virtio-win v0.1.271

    • En VergeOS, edite la VM y adjunte virtio-win-0.1.271.iso como dispositivo CD/DVD.

    • Confirme que la ISO es visible dentro de Windows (normalmente la siguiente letra de unidad disponible).

  3. Desinstale las herramientas de invitado actuales de virtio-win

    • Abre Configuración → Aplicaciones y características (o Programas y características en el Panel de control) dentro del invitado.

    • Localice Virtio-win-guest-tools y elija Desinstalar. Siga las indicaciones y reinicie si se solicita.

    • Si la desinstalación falla o se revierte con el error 0x80070643 (un problema conocido al quitar virtio-win-guest-tools), use el solucionador de problemas de instalación y desinstalación de programas de Microsoft para limpiar el registro antes de continuar.

  4. Reinicie la VM

    • Reinicie Windows para que se liberen los archivos de controlador en uso. La VM debería seguir arrancando: Windows conserva los binarios del controlador de almacenamiento hasta que se instala el nuevo paquete.

  5. Instale virtio-win-guest-tools desde la ISO v0.1.271

    • Desde la ISO v0.1.271 montada, ejecute virtio-win-guest-tools.exe (o virtio-win-gt-x64.msi) como administrador.

    • Complete el instalador con la selección predeterminada de componentes. Esto reinstala vioscsi, viostor, NetKVM y el agente invitado en la compilación v0.1.271.

  6. Reinicie la VM de nuevo

    • Reinicie Windows para que las pilas de almacenamiento y red se recarguen con los controladores degradados.

  7. Verifique la nueva versión del controlador

    • Vuelva a Administrador de dispositivos → Controladoras de almacenamiento, abra las Propiedades → Controlador pestaña, y confirme que Versión del controlador ahora refleja la compilación v0.1.271 (normalmente terminando en .27100).

    • Repita para cualquier otro controlador VirtIO y para el Adaptador Ethernet Red Hat VirtIO en Adaptadores de red.

  8. Inicie los servicios de MS SQL Server

    • Inicie el servicio SQL Server y cualquier dependiente, y confirme que las bases de datos se ponen en línea correctamente.

  9. Supervisar bajo carga

    • Reanude las cargas de trabajo normales y vigile el registro de errores de SQL Server y el registro de Aplicación de Windows en busca de los mensajes de reintento de lectura descritos arriba. El criterio de éxito es una operación sostenida sin reintentos.

Resolución de problemas

Recursos adicionales

Comentarios

¿Necesitas ayuda?

Si está viendo mensajes de reintento de lectura o inestabilidad en una VM de MS SQL de Windows y no está seguro de qué versión de virtio-win está instalada —o a cuál debe actualizar—, póngase en contacto con el equipo de soporte de VergeOS antes de realizar cambios de controlador en producción.

Última actualización

¿Te fue útil?