이 글은 직전 포스팅과 관련이 있어 많은 설명이 생략되어 있다. 직전 포스팅도 함께 읽어보길 바란다.


2019/07/09 - [리눅스] - BlueStacks 4 Disk 용량 증설


이 글의 목적은 diffencing vdi 파일의 용량이 많이 커졌을 경우 zerofill 후 vdi 사이즈를 줄이는 방법에 관한 것이다. 예전에 포스팅했던 아래 글과 비슷한 맥락이다.


2010/05/21 - [Windows 7/VHD 이야기] - Expandable VHD 용량 최적화 하기



현재 BlueStacks 내부 저장 공간은 36.6GB를 사용하고 있는 것으로 표시되지만, 실제 Data_0.vdi 파일의 사이즈는 67.8GB에 육박하고 있다.




따라서 Data_0.vdi 파일의 크기를 36.6GB에 가깝게 줄여보는 것이 이 글의 목적이다.


우선 리눅스 머신에 해당 vdi를 붙인 다음 zerofill을 해야 한다. dd로 /dev/zero 를 disk full 까지 write 하는 방법도 있다고는 하나, 여기서는 zerofree 라는 툴을 활용해서 설명하겠다. CentOS 7 기준으로 EPEL에 있는 패키지이다.


yum -y install epel-release

yum -y install zerofree


저렇게 설치하고 나서 아래와 같이 /dev/sdb1 파티션을 zerofree 시켜주면 된다.


zerofree -v /dev/sdb1




다음은 VirtualBox에 있는 VBoxManage.exe 파일을 이용해 vdi 파일을 compact 시켜주면 끝이다. 해당 파일은 VirtualBox 설치 경로에 있는데 일반적으로 아래 경로에 있을 것이다.


C:\Program Files\Oracle\VirtualBox


해당 디렉터리로 이동 후 아래와 같이 입력하면 된다.


cd C:\Program Files\Oracle\VirtualBox

VBoxManage.exe modifymedium disk "D:\BlueStacks\Engine\Android\Data_0.vdi" --compact


실제 vdi 파일의 경로는 각자 환경에 따라 다를 것이니 파란색 부분은 수정해서 사용하기 바란다.





이렇게 compact 작업을 하고 나니 67.8GB였던 파일이 42.9GB로 많이 줄어들었다.




※ 2019-07-17 내용 추가

포스팅 하고나서 BlueStacks를 살펴보니 내가 지금까지 헛수고를 한 것 같다. 굳이 리눅스에 붙여서 zerofree 시키고 VirtualBox의 VBoxManage.exe를 사용하지 않더라도,  BlueStacks 자체에 디스크 정리 기능이 있다. 진행상황을 보니 내가 수작업으로 했던 2가지 일을 알아서 처리해주는 것 같다.


  1. chulw8
    2019.08.11 09:40

    안녕하세요 문의드립니다.
    auto.bat 파일을 만들어서

    netsh interface ipv4 set subinterface "18" mtu=400 store=persistent

    위 명령어를 자동실행 시키고 싶은데...
    netsh 명령어가 관리자모드에서만 실행가능하다고 에러 메세지만 출력되고 있습니다
    배치파일내에 어떤설정을 해야 cmd가 관리자모드로 실행되는지 궁급합니다.