Windows me había ocupado 70 GB de espacio en disco sin avisar. No había ningún archivo visible en el Explorador ni nada que limpiar con el Liberador de espacio, pero la unidad C: estaba llena. Si desarrollas con WSL2 o guardas grandes volúmenes de datos allí, probablemente te encuentres en la misma situación sin saberlo.
El culpable es un único archivo: ext4.vhdx, el disco virtual que contiene toda tu distribución de Linux. Medí el problema en mi propio equipo antes de corregirlo. Ubuntu utilizaba 38 GB de datos reales, mientras que el archivo ocupaba 110 GB en Windows. Te explico cómo comprobar tu caso y recuperar el espacio en cinco minutos.
En este artículo
Por qué se llena la unidad C: aunque no hayas instalado nada
WSL2 almacena todo tu entorno Linux en un único disco virtual VHDX, aprovisionado de forma predeterminada hasta 1 TB según la documentación de Microsoft sobre el espacio de disco de WSL. Este archivo utiliza una expansión dinámica. Crece con cada escritura —una actualización de apt, un npm install o una descarga— y Windows nunca reduce su tamaño automáticamente.
El problema está en la separación entre los dos mundos. Cuando borras archivos en Ubuntu, el espacio vuelve a estar disponible dentro de la máquina virtual. Linux lo ve libre y puede reutilizarlo. Windows, sin embargo, sigue viendo un archivo ext4.vhdx con su mayor tamaño histórico. El espacio existe en ambos lados, pero solo puedes utilizarlo desde uno de ellos.
Por eso el Liberador de espacio de Windows, WinDirStat y TreeSize no muestran nada extraño. Ven un archivo de sistema grande y legítimo, no la diferencia entre su contenido real y el espacio que ocupa en el disco.
El problema afecta a cualquier uso de WSL2, no solo a Docker
Cualquier escritura de gran tamaño puede provocar este comportamiento. Copia 150 GB de fotos en tu carpeta personal de Linux para ordenarlas, bórralas al terminar y el archivo vhdx conservará esos 150 GB en la unidad C:. Un conjunto de datos para entrenamiento, una exportación de vídeo o una copia de seguridad descomprimida producen exactamente el mismo efecto. El contenido no importa: solo cuenta el volumen escrito.
Docker es el caso más habitual entre los desarrolladores, porque las imágenes, los volúmenes y las cachés de compilación se acumulan rápidamente. El comando docker system prune puede liberar decenas de gigabytes, pero solo dentro de la máquina virtual. El espacio limpiado seguirá atrapado en el disco virtual hasta que lo compactes. Ten en cuenta que Docker Desktop utiliza su propio vhdx, docker-desktop-data, separado del archivo de tu distribución Ubuntu. Ambos pueden crecer.
Comprueba cuánto espacio puedes recuperar
La comprobación tarda dos minutos y consiste en comparar dos cifras. La primera es el espacio que realmente utiliza tu distribución; la segunda, el tamaño del archivo vhdx que ve Windows. La diferencia entre ambas representa el espacio que puedes recuperar.
Primera cifra. Abre el terminal de WSL y mide el uso real de la distribución.
df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sdd 1007G 38G 918G 4% /
La columna Used te da la primera cifra: en este ejemplo, 38 GB. No te fijes en la columna Size, que muestra aproximadamente 1 TB. Es el tamaño máximo aprovisionado por WSL, no la capacidad de tu disco físico.
La ubicación del archivo vhdx depende de cómo se instaló WSL, así que lo más fiable es pedirle a Windows que lo busque. Abre PowerShell y pega este comando. Recorre tu perfil de usuario y muestra cada disco virtual de las distribuciones, con su ruta completa y su tamaño en GB.
Get-ChildItem $env:LOCALAPPDATA -Recurse -Filter ext4.vhdx -ErrorAction SilentlyContinue | Select-Object FullName, @{n="GB";e={[math]::Round($_.Length/1GB,1)}}
FullName GB
-------- --
C:\Users\adrien\AppData\Local\wsl\{c16045d3-...}\ext4.vhdx 110
Obtendrás una línea por cada distribución instalada, además de otra para Docker Desktop si corresponde. Copia bien esta ruta: la utilizarás en diskpart en el paso siguiente. El comando busca deliberadamente los archivos ext4.vhdx, que son los importantes. Los archivos swap.vhdx que encuentres en otra ubicación son archivos de intercambio temporales y se vacían cuando WSL se detiene.
En mi equipo, la comparación mostró 38 GB utilizados realmente frente a un archivo de 110 GB. Más de 70 GB para recuperar sin borrar nada. Una precisión importante: un disco lleno no significa que esté fallando. Los síntomas de un disco defectuoso son diferentes: ralentizaciones, ruidos extraños y sectores ilegibles.
El procedimiento diskpart para compactar el disco en 5 minutos
La compactación obliga a Windows a volver a escribir el archivo vhdx con su tamaño real. La operación es segura para tus datos: el disco se monta en modo de solo lectura durante todo el proceso. Empieza apagando WSL por completo desde un terminal.
wsl --shutdown
Cierra también Docker Desktop, incluido su icono del área de notificación. Es el error clásico: si Docker permanece abierto, puede reiniciar WSL en segundo plano y diskpart rechazará el montaje del disco. Después, abre una ventana del símbolo del sistema como administrador e inicia la utilidad de administración de discos.
diskpart
Por último, ejecuta estos cuatro comandos y adapta la ruta a tu propio archivo, el que localizaste en el paso anterior.
select vdisk file="C:\Users\<tú>\AppData\Local\wsl\<id>\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
La compactación muestra el progreso en porcentaje y después devuelve el control. En mi equipo, el archivo pasó de 110 GB a algo menos de 40 GB y el Explorador reflejó el cambio inmediatamente. Vuelve a iniciar WSL con normalidad: tus datos no se han movido.
No dejes que el algoritmo decida por ti
Añade Assistouest a tus fuentes preferidas en Google para encontrar nuestras guías más rápido cuando busques una solución informática.
¿Merecen la pena Optimize-VHD y el modo sparse?
Existen otros dos métodos y los encontrarás en debates en inglés. El primero, el cmdlet de PowerShell Optimize-VHD, ofrece un resultado equivalente a diskpart, pero requiere Hyper-V, es decir, Windows Pro o Enterprise, como explica la guía de Stephen Rees-Carter para reducir discos virtuales de WSL2. No está disponible en Windows Home.
El segundo es el modo sparse, introducido con WSL 2.0 en septiembre de 2023 y activable con wsl --manage <distro> --set-sparse true. En teoría, devuelve el espacio automáticamente cada vez que borras archivos. En la práctica, algunos usuarios indican en Microsoft Q&A que los discos sparse dejan de reducirse y después no se pueden compactar manualmente. He preferido no confiar mis 70 GB a una función tan irregular y sigo utilizando diskpart, disponible en todas partes y predecible.
| Método | Requisitos | Fiabilidad |
|---|---|---|
| diskpart, compact vdisk | Ninguno; está incluido en todas las ediciones de Windows | Excelente; el método de referencia |
| Optimize-VHD | Windows Pro o Enterprise con Hyper-V | Buena; resultado equivalente a diskpart |
| Modo sparse de WSL | WSL 2.0 como mínimo | Impredecible; se han comunicado errores de espacio que no se devuelve |
Tu plan de acción, resumido
El archivo ext4.vhdx de WSL2 nunca se reduce por sí solo, y la diferencia entre su contenido y el tamaño que ocupa en el disco puede alcanzar decenas de gigabytes. Cuatro comandos de diskpart solucionan el problema en cinco minutos, sin riesgo para tus datos gracias al montaje en modo de solo lectura. Repite la operación periódicamente si trabajas con grandes volúmenes.
Si tu disco se llena por una causa ajena a WSL o prefieres dejar la operación en manos de un profesional, nuestro servicio de asistencia informática a distancia puede diagnosticar este tipo de saturación en una sola sesión.
Se ha producido un error. Inténtalo de nuevo en unos instantes.