Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta guía se explica cómo administrar el espacio en disco usado por las distribuciones de Linux instaladas mediante WSL 2, entre las que se incluyen:
- Cómo comprobar la cantidad de espacio en disco disponible en el VHD
- Cómo expandir el tamaño del VHD
- Cómo reparar el VHD si ocurre un error
- Cómo localizar el archivo .vhdx y la ruta de acceso de disco para las distribuciones de Linux instaladas
El Subsistema de Windows para Linux (WSL 2) usa una plataforma de virtualización para instalar distribuciones de Linux junto con el sistema operativo Windows host, creando un disco duro virtual (VHD) para almacenar archivos para cada una de las distribuciones de Linux que instale. Estos discos duros virtuales usan el tipo de sistema de archivos ext4 y se representan en el disco duro de Windows como un archivo ext4.vhdx .
WSL 2 cambia automáticamente el tamaño de estos archivos VHD para satisfacer las necesidades de almacenamiento. De forma predeterminada, cada archivo VHD usado por WSL 2 se asigna inicialmente una cantidad máxima de 1 TB de espacio en disco (antes de la versión 0.58.0 de WSL , este valor predeterminado se estableció en un máximo de 512 GB y 256 GB máximo antes de eso).
Si el espacio de almacenamiento requerido por los archivos de Linux supera este tamaño máximo, verá errores que indican que se ha quedado sin espacio en disco. Para corregir este error, siga las instrucciones que se indican a continuación sobre Cómo expandir el tamaño del disco duro virtual de WSL 2.
Comprobación del espacio en disco disponible
Compruebe la cantidad de espacio en disco disponible en el disco duro virtual para una distribución de Linux instalada con WSL 2 mediante el comando Linux Df
.
Para comprobar el espacio en disco disponible, abra una línea de comandos de PowerShell y escriba este comando (reemplazando por <distribution-name>
el nombre de distribución real):
wsl.exe --system -d <distribution-name> df -h /mnt/wslg/distro
Si este comando no funciona para usted, actualice a la versión de Store de WSL mediante el wsl --update
comando o pruebe wsl df -h /
.
La salida incluirá:
- Sistema de archivos: identificador del sistema de archivos VHD
- Tamaño: tamaño total del disco (la cantidad máxima de espacio asignado al VHD)
- Usado: cantidad de espacio que se usa actualmente en el disco duro virtual
- Disponibilidad: cantidad de espacio que queda en el disco duro virtual (tamaño asignado menos cantidad usada)
- Uso de%: porcentaje de espacio en disco restante (tamaño usado o asignado)
- Montado en: ruta del directorio donde se monta el disco
Si ve que está cerca de alcanzar la cantidad disponible de espacio en disco asignado al disco duro virtual o ya ha recibido un error debido a que no queda espacio en disco, consulte la sección siguiente para ver los pasos sobre cómo expandir la cantidad máxima de espacio en disco asignado al disco duro virtual asociado a la distribución de Linux. La cantidad de espacio en disco asignado al VHD por WSL siempre mostrará la cantidad máxima predeterminada (1 TB en la versión más reciente de WSL), incluso si la cantidad de espacio en disco en el dispositivo Windows real es menor que esa. WSL monta un disco duro virtual que se expandirá a medida que lo use, por lo que la distribución de Linux ve que puede crecer hasta el tamaño máximo asignado de 1 TB.
Cómo expandir el tamaño del disco duro virtual de WSL 2
Para expandir el tamaño del disco duro virtual para una distribución de Linux más allá de la cantidad máxima predeterminada de espacio en disco asignado de 1 TB, puede usar el wsl --manage
comando o seguir los pasos manuales que se indican a continuación. (El valor predeterminado máximo de versiones anteriores de WSL puede establecerse en 512 GB o 256 GB).
Expandir el tamaño del VHD mediante wsl --manage
El wsl --manage
comando solo está disponible para las versiones 2.5 y posteriores de WSL.
Para cambiar el tamaño del espacio asignado en el disco virtual:
Finalizar todas las instancias de WSL mediante el comando
wsl.exe --shutdown
Ejecute
wsl --manage <distribution name> --resize <memory string>
. Las cadenas de memoria admitidas tienen el formato<Memory Value>B/M/MB/G/GB/T/TB
. Los valores decimales no se admiten actualmente (por ejemplo,2.5TB
).
La salida debe tener una apariencia similar a la siguiente:
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
resize2fs 1.46.5 (30-Dec-2021)
The operation completed successfully.
La unidad virtual (ext4.vhdx) para esta distribución de Linux se ha ampliado satisfactoriamente al nuevo tamaño.
Expansión manual
Para expandir el tamaño del VHD para una distribución de Linux mediante los pasos manuales:
Finalice todas las instancias de WSL mediante el comando :
wsl.exe --shutdown
Copie la ruta de acceso del directorio al archivo ext4.vhdx asociado a la distribución de Linux instalada en la máquina. Para obtener ayuda, consulte Cómo localizar el archivo vhdx y la ruta de acceso del disco para la distribución de Linux.
Abra la línea de comandos de Windows con privilegios de administrador y, a continuación, abra el intérprete de comandos diskpart escribiendo:
diskpart
Ahora verá una indicación
DISKPART>
. Escriba el comando siguiente, reemplazando<pathToVHD>
por la ruta de acceso del directorio al archivo asociado a laext4.vhdx
distribución de Linux (copiada en el paso 2).Select vdisk file="<pathToVHD>"
Muestra los detalles asociados a este disco virtual, incluido el tamaño virtual, que representa el tamaño máximo al que se ha asignado el VHD.
detail vdisk
Tendrá que convertir el tamaño virtual en megabytes. Por ejemplo, si Tamaño virtual: 512 GB, es igual a 512000 MB. El nuevo valor que escriba debe ser mayor que este valor original. Para duplicar el tamaño virtual de 512 GB a 1024 GB, escribiría el valor en MB como: 1024000. Tenga cuidado de no especificar un valor superior al que realmente desea, ya que el proceso de reducción de un tamaño de disco virtual es mucho más complicado.
Escriba el valor del nuevo tamaño máximo que desea asignar a esta distribución de Linux mediante el símbolo del sistema de comando
DISKPART>
de Windows.expand vdisk maximum=<sizeInMegaBytes>
Salga del símbolo del
DISKPART>
.exit
Inicie esta distribución de Linux. (Asegúrese de que se ejecuta en WSL 2. Puede confirmarlo mediante el comando :
wsl.exe -l -v
. WSL 1 no se admite).Haga que WSL tenga en cuenta que puede expandir el tamaño del sistema de archivos para esta distribución ejecutando estos comandos desde la línea de comandos de distribución de WSL. Puede ver este mensaje en respuesta al primer comando mount: "/dev: none ya montado en /dev". Este mensaje se puede omitir de forma segura.
sudo mount -t devtmpfs none /dev mount | grep ext4
Copie el nombre de esta entrada, que tendrá el siguiente aspecto:
/dev/sdX
(con la X que representa cualquier otro carácter). En el ejemplo siguiente, el valor de X es b:
sudo resize2fs /dev/sdb <sizeInMegabytes>M
Con el ejemplo anterior, cambiamos el tamaño del disco duro virtual a 2048000, por lo que el comando sería: sudo resize2fs /dev/sdb 2048000M
.
Nota:
Es posible que tenga que instalar resize2fs. Si es así, puede usar este comando para instalarlo: sudo apt install resize2fs
.
La salida tendrá una apariencia parecida a la siguiente:
resize2fs 1.44.1 (24-Mar-2021)
Filesystem at /dev/sdb is mounted on /; on-line resizing required
old_desc_blocks = 32, new_desc_blocks = 38
The filesystem on /dev/sdb is now 78643200 (4k) blocks long.
La unidad virtual (ext4.vhdx) para esta distribución de Linux se ha ampliado satisfactoriamente al nuevo tamaño.
Importante
Se recomienda no modificar, mover ni acceder a los archivos relacionados con WSL ubicados dentro de la AppData
carpeta mediante herramientas o editores de Windows. Si lo hace, la distribución de Linux podría dañarse. Si desea acceder a los archivos de Linux desde Windows, es posible a través de la ruta de acceso \\wsl$\<distribution-name>\
. Abra la distribución de WSL y escriba explorer.exe .
para ver esa carpeta. Para más información, consulte la entrada de blog: Acceso a archivos de Linux desde Windows.
Cómo reparar un error de montaje de un disco duro virtual (VHD)
Si se produce un error relacionado con el "montaje del disco de distribución", esto podría deberse a un apagado repentino o una interrupción del suministro eléctrico y puede dar lugar a que el disco duro virtual de distribución de Linux se cambie a solo lectura para evitar la pérdida de datos. Puede reparar y restaurar la distribución mediante el e2fsck
comando de Linux siguiendo los pasos que se indican a continuación.
Use el comando lsblk para identificar el nombre del dispositivo de bloque.
Cuando WSL 2 instala una distribución de Linux, está montando la distribución como disco duro virtual (VHD) con su propio sistema de archivos. Linux se refiere a estas unidades de disco duro como "dispositivos de bloque" y puede ver información sobre ellas mediante el comando lsblk
.
Para buscar los nombres de los dispositivos de bloque que está usando actualmente WSL 2, abra la distribución y escriba el comando : lsblk
. (O abra PowerShell y escriba el comando : wsl.exe lsblk
. ) La salida tendrá un aspecto similar al siguiente:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 363.1M 1 disk
sdb 8:16 0 8G 0 disk [SWAP]
sdc 8:32 0 1.5T 0 disk
sdd 8:48 0 1T 0 disk /mnt/wslg/distro
La información sobre el dispositivo de bloqueo incluye:
-
NAME: el nombre asignado al dispositivo será sd[a-z], haciendo referencia al disco SCSI con una designación de letra para cada disco que se va a usar.
sda
es siempre la distribución del sistema. - MAJ:MIN: representa los números usados por el kernel de Linux para identificar internamente los dispositivos con el primer número que representa el tipo de dispositivo (8 se usa para discos pequeños de interfaz de sistema de equipo/SCSI).
- RM: Háganos saber si el dispositivo es extraíble (1) o no (0).
- TAMAÑO: tamaño total del volumen.
- RO: Háganos saber si el dispositivo es de solo lectura (1) o no (0).
- TIPO: hace referencia al tipo de dispositivo (disco en este caso).
- MOUNTPOINTS: hace referencia al directorio actual del sistema de archivos donde se encuentra el dispositivo de bloque (SWAP es para memoria inactiva preconfigurada, por lo que no hay ningún punto de montaje).
Error de respaldo de solo lectura
Si WSL encuentra un "error de montaje" al intentar abrir una distribución de Linux, la distribución se puede establecer como de solo lectura como modo de respaldo. Si esto sucede, la distribución puede mostrar el siguiente error durante el inicio:
An error occurred mounting the distribution disk, it was mounted read-only as a fallback.
Cuando se inicia una distribución como de solo lectura, los intentos de escritura en el sistema de archivos producirán un error similar al siguiente:
$ touch file
touch: cannot touch 'file': Read-only file system
Para reparar un error de montaje de disco en WSL y restaurarlo de nuevo a un estado utilizable o grabable, puede usar el wsl.exe --mount
comando para volver a montar el disco con los pasos siguientes:
Cierra todas las distribuciones de WSL abriendo PowerShell como administrador (en una ventana de comandos con privilegios de administrador) y escribiendo el comando:
wsl.exe --shutdown
Escriba el comando mount y reemplace por
<path-to-ext4.vhdx>
la ruta de acceso al archivo .vhdx de la distribución. Para obtener ayuda para localizar este archivo, consulte Cómo localizar el archivo VHD y la ruta de acceso del disco para la distribución de Linux.wsl.exe --mount <path-to-ext4.vhdx> --vhd --bare
Use el
wsl.exe lsblk
comando de PowerShell para identificar el nombre del dispositivo de bloque para la distribución (sd[a-z]) y, a continuación, escriba el siguiente comando para reparar el disco (reemplazando<device>
por el nombre de dispositivo de bloque correcto, como "sdc"). Ele2fsck
comando comprueba los sistemas de archivos ext4 (el tipo usado por las distribuciones instaladas con WSL) para ver si hay errores y los repara en consecuencia.wsl.exe sudo e2fsck -f /dev/<device>
Nota:
Si solo tiene instalada una única distribución de Linux, es posible que encuentre un error "ext file in use" y tendrá que instalar una distribución adicional para ejecutar wsl.exe lsblk
. Puede desinstalar la distribución una vez completada la reparación. Además, es posible que tenga que cerrar Docker Desktop en Windows para evitar el error Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_SHARING_VIOLATION
al ejecutar el comando wsl.exe sudo e2fsck -f /dev/sdc
.
Una vez completada la reparación, desmonte el disco en PowerShell escribiendo:
wsl.exe --unmount
Advertencia
Puede usar el comando : sudo mount -o remount,rw /
para devolver una distribución de solo lectura a un estado utilizable o grabable, pero todos los cambios estarán en memoria, por lo que se perderán cuando se reinicie la distribución. Se recomienda usar los pasos enumerados anteriormente para montar y reparar el disco en su lugar.
Cómo localizar el archivo .vhdx y la ruta de acceso del disco para la distribución de Linux
Para buscar el archivo .vhdx y la ruta de acceso del directorio para una distribución de Linux, abra PowerShell y use el siguiente script, reemplazando <distribution-name>
por el nombre de distribución real:
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"
El resultado mostrará una ruta similar a %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx
. Por ejemplo:
C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
Esta es la ruta de acceso al ext4.vhdx
archivo asociado a la distribución de Linux que ha enumerado.
Windows Subsystem for Linux