Dos arquitecturas, dos modelos de almacenamiento
WSL1 no tiene kernel Linux en absoluto: traduce las llamadas al sistema de Linux a las de Windows en tiempo real, y sus archivos viven en una carpeta normal — históricamente %LOCALAPPDATA%\Packages\<Distro>\LocalState\rootfs —, plenamente visible para las herramientas de Windows. Eso lo hace ligero en disco y rápido cuando los scripts tocan archivos en /mnt/c, pero la traducción es incompleta: Docker, systemd y cualquier cosa que necesite syscalls exóticas no funciona. WSL2 ejecuta un kernel Linux real en una VM utilitaria ligera, lo que arregla la compatibilidad, pero todo el sistema de archivos de la distro pasa a vivir dentro de un ext4.vhdx — una imagen de disco virtual que Windows monta pero no interpreta.
El vhdx se guarda bajo %LOCALAPPDATA%\Packages para las distros instaladas desde la Store y bajo %LOCALAPPDATA%\wsl para las instalaciones recientes, y tiene una propiedad traicionera: crece bajo demanda y nunca se encoge solo. Borrar archivos dentro de la distro libera espacio en el disco virtual, pero el archivo .vhdx conserva su marca de agua máxima hasta que lo compactas a mano. Comprobar el tamaño del archivo en el Explorador justo después de una gran limpieza dentro de la distro es la decepción clásica: la cifra no se ha movido.
Dónde esconde cada uno sus gigabytes
Ninguna de las dos versiones recoge tras de sí, y el espacio se fuga en sorprendentemente pocos sitios:
- El ext4.vhdx de WSL2 — cada distro tiene el suyo; un entorno cargado de Docker lo pasa de 30 GB sin despeinarse
- El disco de datos propio de Docker Desktop (docker_data.vhdx), que sigue la misma regla de solo crecer
- La carpeta rootfs de WSL1 — modesta en comparación, pero las distros viejas abandonadas conservan la instalación completa
- Cachés de paquetes y compilaciones dentro de la distro — cachés de apt, node_modules, carpetas target/ y build/ que inflan el vhdx para siempre
- Copias de wsl --export e imágenes de distro descargadas que duermen en Descargas
Recuperar espacio sin romper la distro
Limpia primero por dentro: apt autoremove y apt clean, docker system prune en Docker Desktop, purgas de caché de npm y pip — todo lo que vacíe el disco virtual antes de encoger su contenedor. Después ejecuta wsl --shutdown, porque una distro en marcha bloquea su vhdx, y compacta la imagen: Optimize-VHD con la opción -Mode Full si tienes el instrumental de Hyper-V, o diskpart con select vdisk file="<ruta>", attach vdisk, compact vdisk, detach vdisk en cualquier Windows. Las versiones recientes de WSL ofrecen wsl --manage <Distro> --set-sparse true, que deja al vhdx liberar espacio automáticamente — a la larga, el ajuste honestamente mejor.
Dos últimas salidas merecen su nombre. wsl --export empaqueta la distro en un .tar que puedes importar en otra unidad con wsl --import: la vía limpia para mudar una instalación WSL2 fuera de un C: lleno. Y wsl --unregister <Distro> borra la distro y su vhdx por completo — ese comando no tiene deshacer, así que trátalo como la bomba que es. Ya puestos, pon techo al apetito de la VM con un archivo .wslconfig que limite memoria y procesadores; una WSL2 desocupada si no retiene gigabytes de RAM para nada.
Preguntas y respuestas
¿Cómo reduzco el archivo ext4.vhdx de WSL2?
Limpia dentro de la distro, ejecuta wsl --shutdown y compacta el vhdx con diskpart (select vdisk file, attach vdisk, compact vdisk, detach vdisk) o Optimize-VHD. En WSL reciente, wsl --manage <Distro> --set-sparse true activa la liberación automática.
¿Qué me conviene, WSL1 o WSL2?
WSL2 es el estándar y la única opción para Docker, systemd y todo lo que exija un kernel real. WSL1 sigue ganando para trabajo ligero de consola que toque sobre todo archivos en unidades de Windows: sin VM, sin vhdx y sin hambre de memoria.
Consulta qué incluye antes de comprar.
La prueba única de 30 minutos incluye las funciones básicas. Las funciones marcadas PRO permanecen bloqueadas hasta activar una licencia de pago.
Sigue leyendo
Escríbenos: [email protected]