Virtio es un marco de virtualización de E/S para Linux que proporciona una interfaz estandarizada para máquinas virtuales (VM) para acceder a dispositivos simplificados como dispositivos de bloques y adaptadores de red. Los dispositivos Virtio se implementan utilizando una combinación de virtqueues, que son estructuras de datos para intercambiar datos entre el host y el invitado, y bits de características, que se utilizan para negociar las capacidades de cada dispositivo.
Los dispositivos Virtio ofrecen varios beneficios sobre los dispositivos emulados, como un rendimiento mejorado, una menor sobrecarga de CPU y una menor latencia. Mediante el uso de dispositivos virtio, puede lograr niveles casi metálicos de rendimiento de E/S y eficiencia en sus máquinas virtuales. Los dispositivos Virtio también son extensibles y compatibles con varios hipervisores, como KVM, Xen y VMware.
En este artículo, aprenderá más sobre los dispositivos y controladores virtio, cómo descargarlos e instalarlos para huéspedes de Windows, cómo usarlos para dispositivos existentes y cómo solucionar problemas comunes.
Los dispositivos y controladores Virtio son los componentes principales del framework virtio. Trabajan juntos para permitir la comunicación paravirtualizada entre el anfitrión y el huésped.
Un dispositivo virtio es un dispositivo que expone una interfaz virtio para que el software gestione e intercambie información. Puede ser expuesto al entorno invitado usando PCI, Memory Mapping I/O o S/390 Channel I/O. Su tarea principal es convertir la señal del formato que tienen fuera del entorno virtual (como electricidad o luz de un NIC) al formato que necesitan para intercambiarse a través del plano de datos virtio y viceversa.
Actualmente, virtio soporta los siguientes tipos de dispositivos:
Un controlador virtio es un controlador que implementa la interfaz virtio para un tipo de dispositivo específico en el sistema operativo invitado. Permite al sistema operativo invitado comunicarse con el dispositivo virtio utilizando virtqueues y bits de características. Un controlador virtio consta de dos partes: un controlador frontend en el sistema operativo invitado y un controlador backend en el sistema operativo host.
Windows no tiene soporte nativo para dispositivos virtio incluidos. Sin embargo, hay controladores de código abierto disponibles que Red Hat compila y firma para Windows. Estos controladores se llaman virtio-win y funcionan con Windows 7, 8, 8.1, 10 y Server 2008, 2012, 2016 y 2019. Admiten los siguientes tipos de dispositivos:
Para usar dispositivos virtio en sus máquinas virtuales con Windows, necesita descargar e instalar los controladores virtio-win. Hay dos maneras de hacer esto: descargando el archivo ISO desde Fedora o usando el repositorio en línea.
Después de descargar el archivo ISO, debe montarlo en una unidad virtual de CD-ROM/DVD en su VM de Windows. Puede usar cualquier software de virtualización compatible con el montaje ISO, como VirtualBox, VMware o Hyper-V. Alternativamente, puede usar una herramienta de terceros como WinCDEmu o Daemon Tools para montar el archivo ISO en Windows.
Una vez que haya montado el archivo ISO, puede instalar los controladores virtio usando el asistente o manualmente. El asistente es una interfaz gráfica de usuario que lo guía a través del proceso de instalación. Se encuentra en el directorio raíz del archivo ISO y se llama virtio-win-gt-x64.msi para Windows de 64 bits o virtio-win-gt-x86.msi para Windows de 32 bits. Para usar el asistente, simplemente haga doble clic en él y siga las instrucciones.
Si prefiere instalar los controladores manualmente, debe localizar los archivos de controladores para su tipo de dispositivo específico y la versión de Windows. Los archivos del controlador se organizan en subdirectorios del archivo ISO según el tipo de dispositivo y la versión de Windows. Por ejemplo, si desea instalar el controlador viostor para Windows 10 de 64 bits, debe ir al subdirectorio viostor w10 amd64 y encontrar el archivo viostor.inf. Para instalar el controlador manualmente, debe hacer clic derecho en el archivo . inf y seleccionar Install.
Si ya tiene una VM de Windows con dispositivos emulados y desea cambiarlos a dispositivos virtio, debe editar el archivo de configuración libvirt de su VM y cambiar algunos atributos. También debe eliminar la etiqueta de dirección de sus dispositivos para evitar conflictos.
Para cambiar sus dispositivos emulados a dispositivos virtio, necesita cambiar los atributos de bus y destino de sus dispositivos en el archivo de configuración. El atributo bus especifica qué tipo de bus usa el dispositivo, como ide, scsi o virtio. El atributo de destino especifica el nombre del dispositivo que utiliza, como hda, sda o vda.
Por ejemplo, si tiene un dispositivo de disco emulado con estos atributos:
Necesitas cambiarlos a estos atributos:
De manera similar, si tiene un dispositivo de red emulado con estos atributos:
Necesitas cambiarlos a estos atributos:
La etiqueta de dirección especifica la dirección física del dispositivo en el bus. Sin embargo, puede causar conflictos cuando cambia a dispositivos virtio, ya que los dispositivos virtio pueden tener direcciones diferentes a los dispositivos emulados. Para evitar esto, debe eliminar la etiqueta de dirección de sus dispositivos en el archivo de configuración. Por ejemplo, si tiene esta etiqueta de dirección:
Necesitas borrarlo del archivo de configuración.
A veces, puede encontrar algunos problemas con los controladores virtio, como los controladores que faltan, los controladores obsoletos o los controladores incompatibles. Aquí hay algunos consejos sobre cómo solucionar estos problemas.
Una de las causas comunes de problemas con los controladores virtio es tener una versión de controlador incorrecta o incompatible para su dispositivo o versión de Windows. Para comprobar la versión del controlador y la compatibilidad, puede utilizar los siguientes pasos:
Si necesita actualizar o reinstalar sus controladores virtio, puede usar el administrador de dispositivos en Windows para hacerlo. Puede usar los siguientes pasos:
Si todavía tiene problemas con los controladores virtio después de probar los métodos anteriores, es posible que deba ponerse en contacto con los canales de soporte o foros para obtener ayuda. Puede encontrar los siguientes recursos en línea para obtener asistencia de la comunidad virtio o de expertos:
Virtio es un marco potente y versátil para la virtualización de E/S que permite una comunicación eficiente y de alto rendimiento entre el anfitrión y el huésped. Mediante el uso de dispositivos y controladores virtio, puede mejorar el rendimiento de E/S y la latencia de sus máquinas virtuales de Windows, así como reducir la sobrecarga de la CPU y la huella de memoria. Los dispositivos y controladores Virtio también son compatibles con varios hipervisores y sistemas operativos, lo que los convierte en una solución flexible y portátil para la virtualización.
En este artículo, ha aprendido qué son los dispositivos y controladores virtio, cómo descargarlos e instalarlos para huéspedes de Windows, cómo usarlos para dispositivos existentes y cómo solucionar problemas comunes. También ha aprendido sobre algunos recursos útiles en línea donde puede obtener más información y ayuda sobre dispositivos virtio y controladores.
Esperamos que este artículo te haya ayudado a entender mejor virtio y que disfrutes usándolo en tus proyectos de virtualización. Si tiene algún comentario o sugerencia, no dude en contactarnos o dejar un comentario a continuación.
Aquí hay algunas preguntas frecuentes sobre dispositivos virtio y controladores:
Multiqueue es una característica que permite utilizar múltiples colas para un solo dispositivo virtio-net, mejorando el rendimiento de la red mediante la distribución de la carga entre múltiples CPU. Para habilitar la multicola para virtio-net, debe hacer dos cosas: establecer el número de colas en el archivo de configuración de su VM usando el atributo vectors, y establecer el número de colas en el SO invitado usando el parámetro smp_affinity. Por ejemplo, si desea utilizar 4 colas para su dispositivo virtio-net, debe agregar esta línea en su archivo de configuración:
Y luego ejecute este comando en su sistema operativo invitado:
echo f > /sys/class/net/eth0/queues/rx-0/smp_affinity echo f0 > /sys/class/net/eth0/queues/rx- 1/smp_affinity echo f00 > /sys/class/net/eth0/queues/rx-2/sm_affinity echo f000 > /sys/class/net/eth0/queues/rx-3/affinity/f000Virtio-gpu es un controlador de dispositivo GPU que admite dispositivos virtio. Le permite usar gráficos acelerados por hardware en sus máquinas virtuales con Windows, como DirectX u OpenGL. Para habilitar virtio-gpu para Windows, debe hacer tres cosas: agregar un dispositivo virtio-gpu en el archivo de configuración de su VM usando el elemento video, instalar el controlador virtio-gpu en su sistema operativo invitado usando el archivo viogpudo.inf, y habilite la función de aceleración 3D en su software de virtualización. Por ejemplo, si usa VirtualBox, debe marcar la casilla que dice Habilitar aceleración 3D en la configuración Mostrar de su VM.
Virtio-crypto es un controlador de dispositivo criptográfico que admite dispositivos virtio. Le permite usar operaciones criptográficas aceleradas por hardware en sus máquinas virtuales de Windows, como cifrado, descifrado, hashing, etc. Para habilitar virtio-crypto para Windows, debe hacer dos cosas: agregar un dispositivo virtio-crypto en el archivo de configuración de su VM usando el elemento crypto, e instalar el controlador virtio-crypto en su sistema operativo invitado usando el archivo viocrypt.inf. Por ejemplo, si desea usar un dispositivo virtio-crypto con algoritmo AES-256-GCM, debe agregar esta línea en su archivo de configuración: