이 가이드에서는 다음을 포함하여 WSL 2를 사용하여 설치된 Linux 배포판에서 사용하는 디스크 공간을 관리하는 방법을 설명합니다.
- VHD 사용 가능한 디스크 공간의 양을 확인하는 방법
- VHD 크기를 확장하는 방법
- 오류가 발생하는 경우 VHD를 복구하는 방법
- 설치된 Linux 배포판에 대한 .vhdx 파일 및 디스크 경로를 찾는 방법
WSL 2(Linux용 Windows 하위 시스템)는 가상화 플랫폼을 사용하여 호스트 Windows 운영 체제와 함께 Linux 배포판을 설치하고, 설치하는 각 Linux 배포판에 대한 파일을 저장하는 VHD(가상 하드 디스크)를 만듭니다. 이러한 VHD는 ext4 파일 시스템 형식 사용하며 Windows 하드 드라이브에 ext4.vhdx 파일로 표시됩니다.
WSL 2는 스토리지 요구 사항에 맞게 이러한 VHD 파일의 크기를 자동으로 조정합니다. 기본적으로 WSL 2에서 사용하는 각 VHD 파일은 처음에 1TB의 최대 디스크 공간이 할당됩니다(WSL 릴리스 0.58.0 이전이 기본값은 512GB 최대 및 256GB 최대값으로 설정된 이전).
Linux 파일에 필요한 스토리지 공간이 이 최대 크기를 초과하면 디스크 공간이 부족했다는 오류가 표시됩니다. 이 오류를 해결하려면 WSL 2 가상 하드 디스크크기를 확장하는 방법에 대한 아래 지침을 따르세요.
사용 가능한 디스크 공간을 확인하는 방법
Linux Df
명령을 사용하여 WSL 2와 함께 설치된 Linux 배포에 대해 VHD에서 사용할 수 있는 디스크 공간의 양을 확인합니다.
사용 가능한 디스크 공간을 확인하려면 PowerShell 명령줄을 열고 이 명령을 입력합니다(<distribution-name>
실제 배포 이름으로 바꿈).
wsl.exe --system -d <distribution-name> df -h /mnt/wslg/distro
이 명령이 작동하지 않는 경우 wsl --update
명령을 사용하여 WSL의 스토어 버전으로 업그레이드하거나 wsl df -h /
을 시도해 보세요.
출력에는 다음이 포함됩니다.
- 파일 시스템: VHD 파일 시스템의 식별자
- 크기: 디스크의 총 크기(VHD에 할당된 최대 공간 양)
- 사용된: VHD에서 현재 사용 중인 공간 크기
- 사용 가능한: VHD에 남아 있는 공간의 양(할당된 크기에서 사용된 양을 뺀 값)
- %사용: 남은 디스크 공간의 비율(사용/할당된 크기)
- 에 마운트된: 디스크가 마운트된 디렉터리 경로
VHD에 할당된 사용 가능한 디스크 공간 양에 근접하거나 디스크 공간이 남아 있지 않아 이미 오류가 발생한 경우 Linux 배포와 연결된 VHD에 할당된 최대 디스크 공간을 확장하는 방법에 대한 단계는 다음 섹션을 참조하세요. WSL에서 VHD에 할당된 디스크 공간의 양은 실제 Windows 디바이스의 디스크 공간 크기가 그보다 작더라도 항상 기본 최대 크기(WSL의 최신 버전에서는 1TB)를 표시합니다. WSL은 사용자가 사용할 때마다 크기가 확장되는 VHD를 탑재하므로, Linux 배포판은 최대 할당 용량인 1TB까지 커질 수 있음을 알 수 있습니다.
WSL 2 가상 하드 디스크의 크기를 확장하는 방법
Linux 배포의 VHD 크기를 기본 1TB 최대 할당 디스크 공간 이상으로 확장하려면 wsl --manage
명령을 사용하거나 아래 수동 단계를 수행하면 됩니다. (이전 WSL 릴리스의 최대 기본값은 512GB 또는 256GB로 설정될 수 있습니다).
wsl --manage
사용하여 VHD 크기 확장
wsl --manage
명령은 WSL 릴리스 2.5 이상에서만 사용할 수 있습니다.
가상 디스크에서 할당된 공간의 크기를 조정하려면 다음을 수행합니다.
명령
wsl.exe --shutdown
사용하여 모든 WSL 인스턴스 종료wsl --manage <distribution name> --resize <memory string>
실행합니다. 지원되는 메모리 문자열은<Memory Value>B/M/MB/G/GB/T/TB
형식입니다. 10진수 값은 현재 지원되지 않습니다(예:2.5TB
).
출력은 다음과 유사합니다.
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.
이제 이 Linux 배포에 대한 가상 드라이브(ext4.vhdx)가 새 크기로 확장되었습니다.
수동 확장
수동 단계를 사용하여 Linux 배포에 대한 VHD 크기를 확장하려면 다음을 수행합니다.
다음 명령을 사용하여 모든 WSL 인스턴스를 종료합니다.
wsl.exe --shutdown
컴퓨터에 설치된 Linux 배포판과 연결된 ext4.vhdx 파일에 디렉터리 경로를 복사합니다. 도움말은 Linux 배포판에 대한 vhdx 파일 및 디스크 경로 찾는 방법을 참조하세요.
관리자 권한으로 Windows 명령 프롬프트를 열고 다음을 입력하여 diskpart 명령 인터프리터를 엽니다.
diskpart
이제
DISKPART>
프롬프트가 표시됩니다. 다음 명령을 입력하여<pathToVHD>
Linux 배포와 연결된ext4.vhdx
파일의 디렉터리 경로로 바꿉니다(2단계에서 복사됨).Select vdisk file="<pathToVHD>"
VHD가 할당된 현재 최대 크기를 나타내는 가상 크기포함하여 이 가상 디스크와 연결된 세부 정보를 표시합니다.
detail vdisk
가상 크기 메가바이트로 변환해야 합니다. 예를 들어 가상 크기: 512GB경우 512000MB같습니다. 입력한 새 값은 이 원래 값보다 커야 합니다. 가상 크기를 512GB에서 1024GB로 두 배로 늘리려면 MB로 값을 입력합니다. 1024000. 가상 디스크 크기를 줄이는 프로세스가 훨씬 더 복잡하기 때문에 실제로 원하는 것보다 높은 값을 입력하지 않도록 주의하세요.
Windows 명령 프롬프트
DISKPART>
프롬프트를 사용하여 이 Linux 배포에 할당하려는 새 최대 크기에 대한 값을 입력합니다.expand vdisk maximum=<sizeInMegaBytes>
DISKPART>
프롬프트를 종료합니다.exit
이 Linux 배포를 시작합니다. (WSL 2에서 실행 중인지 확인합니다.
wsl.exe -l -v
명령을 사용하여 확인할 수 있습니다. WSL 1은 지원되지 않습니다).WSL 배포 명령줄에서 이러한 명령을 실행하여 이 배포의 파일 시스템 크기를 확장할 수 있음을 WSL에 알려 줍니다. 첫 번째 탑재 명령에 대한 응답으로 이 메시지가 표시될 수 있습니다. "/dev: /dev에 이미 탑재된 항목이 없습니다." 이 메시지는 무시해도 됩니다.
sudo mount -t devtmpfs none /dev mount | grep ext4
이 항목의 이름을 복사합니다.
/dev/sdX
(다른 문자를 나타내는 X 포함). 다음 예제에서 X 값은 b는입니다.
sudo resize2fs /dev/sdb <sizeInMegabytes>M
위의 예제를 사용하여 vhd 크기를 2048000변경했으므로 명령은 sudo resize2fs /dev/sdb 2048000M
.
메모
resize2fs설치해야 할 수 있습니다. 그렇다면 이 명령을 사용하여 설치할 수 있습니다. sudo apt install resize2fs
.
출력은 다음과 유사합니다.
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.
이제 이 Linux 배포에 대한 가상 드라이브(ext4.vhdx)가 새 크기로 확장되었습니다.
중요하다
Windows 도구 또는 편집기를 사용하여 AppData
폴더 내에 있는 WSL 관련 파일을 수정, 이동 또는 액세스하지 않는 것이 좋습니다. 이렇게 하면 Linux 배포가 손상될 수 있습니다. Windows에서 Linux 파일에 액세스하려는 경우 경로 \\wsl$\<distribution-name>\
통해 가능합니다. WSL 배포를 열고 explorer.exe .
입력하여 해당 폴더를 봅니다. 더 배우려면 블로그 게시물을 참조하세요: Windows에서 Linux 파일 액세스하기.
VHD 탑재 오류를 복구하는 방법
"배포 디스크 탑재"와 관련된 오류가 발생하는 경우, 갑작스러운 종료 또는 정전 등의 이유로, 데이터 손실을 방지하기 위해 Linux 배포 VHD가 읽기 전용으로 전환될 수 있습니다. 아래 단계에 따라 e2fsck
Linux 명령을 사용하여 배포를 복구하고 복원할 수 있습니다.
lsblk 명령을 사용하여 블록 디바이스 이름 식별
WSL 2가 Linux 배포를 설치할 때, 배포판은 자체 파일 시스템을 가진 VHD(가상 하드 디스크)로 마운트됩니다. Linux는 이러한 하드 드라이브를 "차단 디바이스"라고 하며 lsblk
명령을 사용하여 해당 드라이브에 대한 정보를 볼 수 있습니다.
WSL 2에서 현재 사용 중인 블록 디바이스의 이름을 찾으려면 배포를 열고 lsblk
명령을 입력합니다. (또는 PowerShell을 열고 명령을 입력합니다. wsl.exe lsblk
.) 출력은 다음과 같이 표시됩니다.
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
블록 디바이스에 대한 정보는 다음과 같습니다.
-
NAME: 디바이스에 할당된 이름은 사용 중인 각 디스크에 대한 문자 지정이 있는 SCSI 디스크를 참조하여 sd[a-z]가 됩니다.
sda
은 항상 시스템 배포를 나타냅니다. - MAJ:MIN: 디바이스 유형을 나타내는 첫 번째 번호로 디바이스를 내부적으로 식별하기 위해 Linux 커널에서 사용하는 숫자를 나타냅니다(8은 소형 컴퓨터 시스템 인터페이스/SCSI 디스크에 사용됨).
- RM: 디바이스가 이동식(1)인지 여부(0)인지 알려주세요.
- SIZE: 볼륨의 총 크기입니다.
- RO: 디바이스가 읽기 전용인지(1) 아닌지(0) 알려주세요.
- TYPE: 디바이스 유형(이 경우 디스크)을 참조합니다.
- MOUNTPOINTS: 블록 디바이스가 있는 파일 시스템의 현재 디렉터리를 참조합니다(SWAP은 미리 구성된 비활성 메모리용이므로 탑재점이 없음).
읽기 전용 대체 오류
Linux 배포를 열 때 WSL에 "마운트 오류"가 발생하면, 배포판이 대비책으로 읽기 전용으로 설정될 수 있습니다. 이 경우 시작 중에 배포에 다음 오류가 표시 될 수 있습니다.
An error occurred mounting the distribution disk, it was mounted read-only as a fallback.
배포가 읽기 전용으로 시작되면 파일 시스템에 쓰려는 시도가 실패하고 다음과 같은 오류가 발생합니다.
$ touch file
touch: cannot touch 'file': Read-only file system
WSL에서 디스크 탑재 오류를 복구하고 사용 가능한/쓰기 가능한 상태로 다시 복원하려면 wsl.exe --mount
명령을 사용하여 다음 단계를 수행하여 디스크를 다시 탑재할 수 있습니다.
관리자 권한으로 PowerShell을 열고(관리자 권한 명령 프롬프트에서) 명령을 입력하여 모든 WSL 배포를 종료합니다.
wsl.exe --shutdown
mount 명령을 입력하고 배포의 .vhdx 파일 경로로
<path-to-ext4.vhdx>
를 바꾸십시오. 이 파일을 찾는 방법에 대한 도움말은 Linux 배포대한 VHD 파일 및 디스크 경로를 찾는 방법을 참조하세요.wsl.exe --mount <path-to-ext4.vhdx> --vhd --bare
PowerShell의
wsl.exe lsblk
명령을 사용하여 배포에 대한 블록 디바이스 이름(sd[a-z])을 식별한 다음 다음 명령을 입력하여 디스크를 복구합니다(<device>
"sdc"와 같은 올바른 블록 디바이스 이름으로 바꿉니다).e2fsck
명령은 ext4 파일 시스템(WSL과 함께 설치된 배포에서 사용하는 형식)에서 오류를 확인하고 그에 따라 복구합니다.wsl.exe sudo e2fsck -f /dev/<device>
메모
단일 Linux 배포판만 설치한 경우 "사용 중인 ext 파일" 오류가 발생할 수 있으며 실행하려면 추가 배포를 wsl.exe lsblk
설치해야 합니다. 복구가 완료되면 배포를 제거할 수 있습니다. 또한 명령 Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_SHARING_VIOLATION
실행하는 동안 오류 wsl.exe sudo e2fsck -f /dev/sdc
방지하기 위해 Windows에서 Docker Desktop을 닫아야 할 수 있습니다.
복구가 완료되면 다음을 입력하여 PowerShell에서 디스크를 분리합니다.
wsl.exe --unmount
경고
명령을 사용할 수 있습니다. sudo mount -o remount,rw /
읽기 전용 배포를 사용 가능/쓰기 가능한 상태로 반환하지만 모든 변경 내용은 메모리 내이므로 배포가 다시 시작될 때 손실됩니다. 대신 위에 나열된 단계를 사용하여 디스크를 탑재하고 복구하는 것이 좋습니다.
Linux 배포에 대한 .vhdx 파일 및 디스크 경로를 찾는 방법
Linux 배포의 .vhdx 파일 및 디렉터리 경로를 찾으려면 PowerShell을 열고 다음 스크립트를 사용하여 <distribution-name>
을 실제 배포 이름으로 바꿉니다.
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"
결과에는 %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx
같은 경로가 표시됩니다. 예를 들어:
C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
나열한 Linux 배포와 연결된 ext4.vhdx
파일의 경로입니다.
Windows Subsystem for Linux