Al intentar instalar una máquina virtual Devuan GNU+Linux sobre un host FreeBSD con VirtualBox, me encontré en reiteradas oportunidades con un fallo de entrada/salida que provocaba la corrupción del sistema de archivos.



Este es un fallo reportado en reiteradas oportunidades, el cual ocurre sobre hosts Linux/*BSD y se presenta cuando se hace uso intensivo de entrada/salida sobre discos SATA. En mi caso al momento de instalar un guest Devuan.

Este error corrompe el sistema de archivos en uso, el cual es montado en modo de sólo lectura. Al revisar el log del sistema (en Devuan /var/log/syslog) se observan los siguientes mensajes de error:

ata1.00: exception Emask 0x0 SAct 0x1000 SErr 0x0 action 0x6 frozen
ata1.00: failed command: WRITE FPDMA QUEUED

En el momento de producirse el fallo, el kernel del guest (Linux, en este caso) remonta el sistema de archivos en modo de sólo lectura:

Es posible resolver fácilmente este problema habilitando la caché de entrada/salida del host VirtualBox ("Host I/O Cache") en el controlador SATA de la máquina virtual.

En la configuración de la máquina virtual VirtualBox, acceder a la pestaña "Storage" (almacenamiento) y seleccionar el controlador SATA para configurar sus atributos:

Luego habilitar (tilde) la casilla "Use Host I/O Cache", tal como se observa en la imagen.

Esta configuración hace que el host VirtualBox abra la imagen del disco de la máquina virtual como un archivo normal, lo que resulta en que sea cacheado por el sistema operativo del host como cualquier otro archivo. Esto mejora la velocidad de las escrituras en disco de la máquina virtual, pues éstas se hacen en memoria (buffers) del host y son reportadas como completadas rápidamente en el guest (de forma asincrónica). Por supuesto esto tiene algunas desventajas: mayor uso de memoria en el host para buffers de disco de las máquinas virtuales; menor resistencia ante fallos (por retrasar escrituras completadas en el guest); problema de doble buffering para I/O (pues ambos sistemas operativos guest y host están utilizando buffers para los accesos a disco). Es por ello que viene deshabilitada por defecto. Sin embargo, al no utilizar la cache de I/O del host, el menor rendimiento en las escrituras provoca este error en máquinas virtuales Linux.

Referencias

VirtualBox Storage - Host I/O caching


Tal vez pueda interesarte


Compartí este artículo