VirtualBox는 현재 가장 널리 쓰이는 윈도우용 가상화 도구 중 하나입니다. 기본 운영체제인 윈도우 10 위에 또 다른 OS를 설치할 수 있어, 두 운영체제를 자유롭게 오가며 작업할 수 있습니다.
그러나 시간이 지날수록 가상 머신(VM), 즉 게스트 운영체제는 저장한 파일과 OS 내부의 각종 활동 때문에 점점 용량이 늘어납니다.
흥미로운 점은, VM 내부에서 파일을 직접 삭제한다고 해서 호스트 시스템의 저장 공간이 바로 확보되지 않는다는 것입니다. 더 많은 저장 공간이 필요하다면 아래 단계를 따라 VirtualBox 가상 머신을 축소하고 낭비된 공간을 되찾아 보세요.
동적 디스크와 고정 크기 디스크의 차이
VM을 처음 만들 때 "고정 크기(Fixed Size)" 옵션을 선택했다면 이 가이드는 적용되지 않습니다. 이미 VirtualBox가 게스트 OS에 사용할 용량을 고정해 두었기 때문에, 설정된 한계를 벗어나 늘어나거나 줄어들 수 없습니다.
반대로 "동적 할당(Dynamically Allocated)" 옵션을 선택했다면 다음 단계를 그대로 진행할 수 있습니다. 동적 할당 방식은 OS가 필요에 따라 저장 공간을 유연하게 늘려가기 때문에, 이후 압축 작업을 통해 공간을 되돌릴 수 있습니다.
1단계: 게스트 OS에서 공간 확보하기
윈도우와 리눅스 게스트 모두에 적용할 수 있는 방법입니다.
게스트 OS가 윈도우인 경우
1. 불필요한 파일 삭제 – 윈도우 게스트 OS 안에서 불필요한 파일을 정리합니다. 휴지통을 비우고, 사용하지 않는 프로그램을 제거하고, Windows.old나 오래된 시스템 복원 지점 같은 불필요한 백업도 함께 삭제하세요. 게스트 OS 내부에서 최대한 많은 공간을 확보하는 것이 목표입니다.
2. 디스크 조각 모음 실행 – 게스트 OS가 윈도우 10이라면 시작 메뉴에서 "조각 모음"을 검색해 "드라이브 조각 모음 및 최적화"를 엽니다.

조각 모음을 실행할 드라이브를 선택한 뒤 "최적화" 버튼을 클릭합니다.

3. SDelete 다운로드 – SDelete는 시스템에서 파일을 안전하게 삭제하는 마이크로소프트의 명령줄 유틸리티입니다. 다운로드 후 압축을 풀어 바탕 화면에 두면 폴더 안에 Eula, sdelete, sdelete64 세 개의 파일이 있습니다.

4. 명령 프롬프트 실행 – 명령 프롬프트를 연 뒤 cd 명령으로 SDelete 폴더로 이동합니다.
cd Desktop/SDelete
다음 명령을 실행합니다:
sdelete.exe c: -z

-z 옵션은 남은 여유 공간을 0(zero)으로 채우도록 지시합니다. 가상 디스크 최적화에는 이 과정이 필수인데, 여유 공간을 0으로 채워두어야 나중에 해당 영역을 제거하고 회수할 수 있기 때문입니다.
5. 종료 – 과정이 완료되면 즉시 윈도우 게스트를 종료하고 VirtualBox도 함께 닫아 원래의 윈도우 10 호스트 OS로 돌아옵니다.
게스트 OS가 리눅스인 경우
VirtualBox에 리눅스를 설치했다면 다음 순서로 내부 공간을 정리합니다.
참고: 이 튜토리얼은 우분투(Ubuntu)를 기준으로 작성되었습니다.
1. VirtualBox에서 리눅스 게스트를 시작하고, 부팅 중 "Esc" 키를 반복해서 눌러 고급 부팅 화면을 띄웁니다.
2. 여러 부팅 옵션이 나타나면 "Ubuntu 고급 옵션(Advanced options for Ubuntu)"을 선택합니다.

3. "복구 모드(Recovery Mode)"를 선택합니다.

4. 메뉴가 나타나면 root 셸 항목을 선택합니다.

5. 복구 모드로 부팅을 진행하고 Enter를 눌러 유지보수 모드로 진입합니다.
6. 명령 인터페이스에서 다음 명령을 입력합니다:
df
리눅스 게스트에 연결된 모든 드라이브 목록이 화면에 표시됩니다. 정리할 드라이브를 찾습니다(여기서는 "/dev/sda1").

7. 다음 명령을 실행합니다:
zerofree -v /dev/sda1
이 명령은 0이 아닌 값이 남아 있는 미할당 블록을 찾아 모두 0으로 채웁니다. 이렇게 해야 나중에 해당 공간을 회수할 수 있습니다.
8. 실행이 끝나면 다음 명령으로 시스템을 종료합니다:
shutdown -h now
리눅스가 종료되면 VirtualBox의 전원을 끄고 애플리케이션을 닫습니다.
2단계: 확보한 공간을 호스트 OS로 회수하기
게스트 OS에서 공간을 확보했다면, 이제 그 공간을 실제로 되찾아 호스트 OS에 돌려줄 차례입니다.
1. 윈도우 10에서 명령 프롬프트를 열고 다음 명령을 실행합니다:
diskpart

2. DISKPART라는 새로운 셸 프로그램이 실행됩니다. 관리자 권한을 요청하는 창이 뜨면 "예"를 선택합니다.

3. Diskpart에서 게스트 OS의 가상 하드 디스크 파일(VDisk) 경로를 지정해야 합니다. 해당 파일의 경로를 복사한 후 다음과 같이 입력합니다:
select vdisk file = "V:\가상디스크파일경로.vdi"
Enter를 눌러 실행합니다.
4. 처리가 완료되면 다음 명령을 실행합니다:
attach vdisk readonly
5. 이어서 다음 명령을 실행해 디스크를 압축합니다:
compact vdisk

6. 완료될 때까지 기다린 뒤 다음 명령으로 마무리합니다:
detach vdisk exit
이제 게스트 OS 내부에서 확보한 모든 공간이 윈도우 10 호스트 OS로 반환됩니다.
마무리
VirtualBox를 따로 관리하지 않으면 게스트 OS의 용량이 어느새 기하급수적으로 늘어나 있을 수 있습니다. 호스트 시스템의 저장 공간이 부족해졌다면, 이 글의 방법으로 가상 머신을 축소해 낭비된 공간을 되찾고 다른 용도로 활용해 보세요.