VirtualBox에서 가상 디스크를 줄이거나 늘리는 방법 - 실전 튜토리얼
지금까지 VirtualBox 디스크 관리에 관한 두 편의 튜토리얼을 다뤘습니다. 앞서 디스크를 복제하는 방법과 가상 머신에 디스크를 추가하는 방법을 배웠다면, 이번에는 저장 공간을 너무 많이 차지하는 디스크를 축소하거나, 여유 공간이 위험 수준으로 부족해진 디스크를 확장하는 방법을 알아보겠습니다.

가상 디스크 축소하기
먼저 첫 번째 작업입니다. 예를 들어 40GB 용량의 가상 디스크를 미리 할당(fixed-size) 방식으로 생성했다고 가정해 봅시다. VirtualBox에서 새로운 가상 저장 장치를 만들 때는 '동적 확장 디스크(Dynamically Expanding Disk)'와 '고정 크기 디스크(Fixed-size Disk)' 중 하나를 선택할 수 있습니다.
고정 크기 디스크로 생성했다면 축소가 가능하지만, 동적 확장 디스크라면 축소에 성공할 가능성은 상대적으로 낮습니다. 그렇다면 디스크 크기를 변경하기 전에 어떤 준비 작업이 필요한지 살펴보겠습니다.
축소 전 필수 준비 작업
1. 디스크 조각 모음(Defragment)
조각 모음은 매우 유용한 사전 작업입니다. 흩어져 있던 데이터 조각들을 연속된 블록으로 재배치하여 디스크 크기 조정이 원활하게 이루어지도록 도와줍니다. 단, 가상 머신에서 사용하는 파일 시스템에 따라 조각 모음이 지원되지 않을 수도 있습니다.
2. 불필요한 파일 정리
임시 파일과 인터넷 임시 파일, 휴지통, 설치 잔여물, 고아 패키지(orphaned package) 등을 삭제하는 것도 상당히 효과적입니다. 운영체제마다 정리 방법은 다르니 각 OS에 맞는 방식으로 청소하세요.
3. Compact 명령 실행
이번에도 만능 유틸리티인 VBoxManage를 사용합니다:
VBoxManage modifyhd disk.vdi compact
명령 구성 요소를 하나씩 살펴보겠습니다.
modifyhd: VBoxManage에게 디스크 수정을 지시하는 명령입니다.
disk.vdi: 작업 대상이 되는 디스크 파일입니다. 디스크를 변경하기 전에 반드시 가상 머신 안의 중요한 데이터를 백업해 두세요. 실제 운영 환경에 적용하기 전에 디스크를 복제(clone)하여 복사본에서 먼저 축소 작업을 테스트해 보는 것이 안전합니다.
compact: VBoxManage에게 디스크 축소를 시도하라고 알려주는 기능입니다. 이 작업은 디스크에 담긴 데이터의 종류와 파일 시스템상의 배치 상태에 따라 성공할 수도, 실패할 수도 있습니다. 예를 들어 가상 머신에 6GB TrueCrypt 컨테이너가 있다면, 외부 파일 시스템 입장에서 이 영역은 난수처럼 보이는 원시(raw) 데이터이므로 해당 부분은 압축(compaction)되지 않습니다.
동적 확장 디스크 사용 시 주의사항
한 가지 더 알아두어야 할 점이 있습니다. 동적 확장 디스크는 희소 파일(sparse file)로, 비어 있는 공간은 실질적으로 용량을 거의 차지하지 않습니다. 하지만 가상 디스크를 다른 형식으로 변환하면 원래 크기만큼 부풀어 오를 수 있습니다. 예를 들어 Amazon EC2 튜토리얼에서 보여드렸듯이 QEMU 같은 유틸리티로 RAW 포맷으로 변환하면, 디스크가 설정된 최대 용량 전체로 다시 커져 버립니다.
실제 사용량이 1MB에 불과해도 논리적 크기가 100GB로 설정된 가상 디스크라면, 변환 작업 시 파일이 최대 크기로 열린다는 점을 꼭 기억하세요.
가상 디스크 확장하기
디스크 확장은 더 쉬우면서도 동시에 더 복잡한 작업입니다. 쉽다는 의미는 실행만 하면 성공한다는 뜻이고, 축소는 어느 정도 운에 좌우되는 도박에 가깝습니다. 반면 확장은 축소처럼 자동으로 마법처럼 일어나지는 않습니다.

디스크를 확장하려면 먼저 디스크를 이미징(imaging)해야 합니다. 즉, 운영체제가 담긴 디스크의 이미지를 만드는 것입니다. 대부분의 경우 가상 머신이 구동 중인 상태에서는 불가능하며, CloneZilla 같은 서드파티 소프트웨어를 라이브 세션(live session)으로 실행해야 합니다.
다음 단계는 더 큰 새 디스크를 생성하고 가상 머신에 추가하는 것입니다. 다행히 이전 글에서 그 방법을 이미 배웠습니다.

세 번째 단계는 이미지를 더 큰 새 디스크에 복원하는 것입니다. 마지막으로 새 디스크를 부팅 장치로 설정해야 합니다. 다음에 가상 머신을 켜면, 사용한 이미징 소프트웨어에 따라 이미지가 새 디스크 크기에 맞게 자동 확장되거나, 새 디스크 끝부분에 추가 여유 공간이 생깁니다. 그런데 잠깐!
중요! 이미지를 어딘가에 저장해 두어야 한다는 점을 유의하세요. 즉, 이미지를 백업하고 나중에 복원하기 위한 세 번째 저장 장치가 필요합니다. 다소 복잡하죠?
디스크 확장 핵심 요약
가상 디스크 확장을 성공적으로 수행하기 위한 절차를 정리하면 다음과 같습니다:
- 원본 디스크와 같거나 그 이상의 크기로 새 디스크를 생성합니다.
- 새 디스크를 가상 머신에 연결합니다.
- 가상 머신을 부팅하여 새 디스크를 파티셔닝/포맷합니다.
- 선호하는 이미징 소프트웨어로 원본 디스크의 이미지를 생성합니다. 대부분의 이미징 소프트웨어는 라이브 CD로 동작하며, 일부는 시스템 사용 중에 스냅샷을 찍을 수 있습니다. 이 경우 가상 머신을 라이브 CD 또는 이미징 소프트웨어의 ISO 이미지로 부팅해야 합니다.
- 이미지를 생성하고 임시 디스크에 저장합니다.
- 가상 머신의 전원을 끕니다.
- 원본보다 큰 세 번째 디스크를 가상 머신에 연결합니다. 디스크를 확장하는 것이 목적이므로 원본보다 커야 합니다.
- 다시 라이브 세션으로 부팅하여 이번에는 임시 디스크에 저장된 이미지를 세 번째(더 큰) 디스크로 복원합니다. 모든 이미징 소프트웨어는 복원 대상 운영체제가 꺼져 있어야 하므로 라이브 세션이 필요합니다. 듀얼 부팅 환경으로도 가능하지만, 여기서는 복잡하게 만들지 않겠습니다.
- 이미지 복원이 완료되면 가상 머신의 전원을 끕니다.
- 임시 저장 디스크를 분리합니다.
- 가득 찬 원본 디스크와 방금 이미지를 복원한 새 디스크의 부팅 우선순위를 변경하여, 새 디스크가 먼저 부팅되도록 설정합니다.
- 가상 머신을 부팅하고 모든 것이 정상 작동하는지 확인합니다. 문제가 없다면 첫 번째 디스크를 분리하거나 포맷해서 데이터 저장용으로 활용할 수 있습니다.
이처럼 디스크 확장은 매우 진지하고 복잡한 작업입니다. 파티셔닝에 익숙하고 이미징 소프트웨어 사용에 능숙하지 않다면 초보자가 시도하기엔 무리가 있습니다.
VirtualBox 스냅샷 관련 주의사항
VirtualBox 스냅샷은 디스크 축소/확장 작업에 방해가 될 수 있습니다. 이 두 작업에서 문제가 발생한다면 스냅샷을 삭제하는 것을 고려하세요. 역시나 설정을 테스트하는 단계에서는 모든 작업을 복제된 클론 머신에서 진행하는 것이 안전합니다.
마무리 및 예방 팁
디스크 축소와 확장은 많은 위험을 수반하는 복잡한 작업입니다. 잘못 처리하면 데이터 손실로 이어질 수 있으며, 물리 디스크든 가상 디스크든 마찬가지로 신중함이 요구됩니다.
가장 좋은 방법은 미리 계획하는 것입니다. 설정을 모듈화하고 확장 가능하게 구성하여, 일상적인 운영을 중단하지 않고도 전체의 일부분을 손쉽게 교체할 수 있도록 하세요. 예를 들어 시스템과 데이터를 항상 별도의 파티션으로 분리하고, 여러 개의 (가상) 디스크에 걸쳐 배치하는 것도 좋습니다.
또한 시스템 파티션 뒤에 여유 공간을 남겨두면, 나중에 이미징 없이 GParted 같은 파티셔닝 소프트웨어로 단순히 파티션을 확장하는 것만으로 해결할 수 있습니다. 마찬가지로 벤더가 권장하는 최소 요구 사항보다 항상 여유 있게 공간을 할당하세요. 예를 들어 OS 설치에 4GB가 필요하다면 8GB 이상을 할당하는 것이 좋습니다. 앞으로 어떤 대형 프로그램을 설치하게 될지 아무도 알 수 없으며, 동적 확장 디스크를 사용한다면 여분의 공간은 실제 저장 공간을 거의 소모하지 않으므로 부담도 없습니다.
이 튜토리얼이 도움이 되었기를 바랍니다. 다른 글들과 달리 스크린샷이 적지만, 언급한 내용을 간단한 공식으로 압축하면서도 글이 과도하게 길어지지 않게 하는 방법을 찾기 어려웠습니다. 궁금한 점이 있다면 언제든지 문의하세요.
네 번째 글에서는 VirtualBox 네트워킹과 공유에 대해 다루겠습니다.