안드로이드 에뮬레이터 VDI 크기 줄이기
빚처럼 끝없이 증식하는 VDI/VMDK 파일
LDPlayer, MuMu Player 등의 안드로이드 에뮬레이터 저장소는 vdi(VirtualBox), 또는 vmdk(VMware) 가상 디스크를 사용한다. 문제는 vdi/vmdk 중 어떤 가상 디스크를 사용하는 것과는 상관없이 에뮬레이터 사용 시간이 증가할수록 가상 디스크 파일 크기도 증가한다는 것이다. 이 문제는 앱 설치할 때 증가하는 가상 디스크 크기가 앱을 삭제해도 감소하지 않기 때문이다.
‘디스크 정리’ 같은 에뮬레이터 자체에서 지원하는 최적화 기능으로 파일 크기가 축소되면 다행이지만, 그렇지 않은 경우는 구글 검색(「모모앱플레이어 용량 확보하는 방법」)이나 AI를 활용할 수밖에 없다.
AI가 제시한 방법
1. 디스크 공간 재확보
- Zero Fill: 사용하지 않는 디스크 공간을 0으로 채운 후, 다시 압축하는 방법입니다.
- 안드로이드 에뮬레이터 내부에서 `dd` 명령어를 사용하여 공간을 0으로 채웁니다.dd if=/dev/zero of=/storage/emulated/0/zero.img bs=1M
rm /storage/emulated/0/zero.img2. 디스크 정리 및 최적화
- Zero Fill 후 VBoxManage나 vmware-vdiskmanager의 디스크 축소 기능을 사용하여 가상 디스크를 압축합니다.예: VBoxManage modifyhd --compact "D:\data.vdi"
예: vmware-vdiskmanager.exe –k "D:\data.vmdk"
vdi/vmdk 파일 크기 줄이기 #1
사용 중인 안드로이드 에뮬레이터의 vdi/vmdk 파일 크기를 줄이는 가장 쉽고 확실한 방법은 Swift Backup 같은 백업 앱을 활용하는 것이다.
1. Swift Backup으로 에뮬레이터에 설치한 앱 백업(루팅 ON 상태에서 해야 데이터도 백업!!!)
2. 에뮬레이터 내부저장소의 SwiftBackup 폴더를 PC로 백업
3. 새 에뮬레이터 생성 후 Swift Backup 앱 설치
4. PC로 백업한 SwiftBackup 폴더를 새 에뮬레이터 내부저장소로 복원
5. 새 에뮬레이터에서 Swift Backup 앱 실행 후 필요한 앱 복원
6. 구 에뮬레이터 삭제
vdi/vmdk 파일 크기 줄이기 #2
앱 백업/복원을 사용한 방법이 귀찮다면 ‘구글 검색’과 AI가 제시한 방법을 사용해야 한다. 그런데 내가 사용 중 MuMu Player 12는 안드로이드 버전이 12라서 그런지 ‘구글 검색’과 AI가 제시한 방법 그대로 사용해서는 성공할 수 없었다. 하지만, ‘Zero Fill로 디스크 공간 재확보 후 VBoxManage로 디스크 최적화’라는 AI가 가르쳐 준 기본 원리를 잊지 않는다면 다른 해결책이 없는 것도 아니었다.
1. Secure Eraser(데이터 복원을 방지하기 위한 데이터 완전 삭제 앱) 설치하고 앱 실행
2. [Writing path]는 [External], [Type of writing]은 [0000-0000] 선택한 다음 [Start] 클릭
3. [External] 디스크 정리가 완료되면 [Internal]도 작업
4. [External] [Internal] 모두 완료되면 에뮬레이터 종료
5. 명령 프롬프트 창(VBoxManage.exe가 있는)에서 다음 명령으로 vdi/vmdk 파일 최적화
└ VBoxManage modifyhd --compact "D:\data.vdi“
└ (vmdk 파일이라면) vmware-vdiskmanager –k “D:\data.vmdk”
이렇게 해서 42.6GB였단 data.vdi 파일 크기를 18GB로 아주아주 콤팩트하게 축소했다!
참고로 VBoxManage.exe 파일은 VirtualBox Portable에 있는 것을 추출해서 사용하면 되고, vmware-vdiskmanager.exe는 VMware를 설치해야 한다.
작동은 보장할 수 없지만, vmware-vdiskmanager.exe와 VBoxManage.exe 파일을 PikPak 공유 링크에 올렸다.
LDPlayer9(9.0.71.3)에 vdi/vmdk 파일 크기 줄이기 #2 방법을 사용 했는데 마지막 5번 명령어에서 에러가 나오네요.
답글삭제Failed to open the disk 'data.vmdk' : Disk encoding error (0x3ebd).
Failed to shrink the disk 'data.vmdk' : Disk encoding error (0x3ebd).
기본 폴더인 "LDPlayer\LDPlayer9\" 에 있는 data.vmdk도 그렇고
"LDPlayer\LDPlayer9\vms\leidian0\" 여기 폴더의 data.vmdk도 똑같은 에러 문구가 나오네요.
cmd 및 vmware-vdiskmanager.exe은 관리자 권한으로 실행도 해봤는데 문제 뭔지 혹시 아실까요?
vmware-vdiskmanager -d 명령어로 조각 모음 한 다음에 해보세요. 전 -d, -k 모두 수행은 되었는데, 효과는 없었어요. 그리고 LDPlayer에선 Secure Eraser도 안 되었습니다. 그래서 어쩔 수 없이 Swift Backup로 앱 백업 후 새 에뮬레이터 생성했습니다.
삭제C:\LDPlayer\LDPlayer9>vmware-vdiskmanager -d data.vmdk
삭제Failed to open the disk 'C:\LDPlayer\LDPlayer9\data.vmdk' : Disk encoding error (0x3ebd).
Failed to defragment: Disk encoding error (0x3ebd).
조각 모음도 같은 결과가 나오네요. ㅠ.ㅠ
저도 #1번 방법으로 해보겠습니다.
이것저것 해본 결과 1번이 젤 확실하고 또한 새로 설치하는 것이라 쾌적한 맛도 있습니다.
삭제Disk encoding error면 가상디스크 인코딩에 사용된 언어가 현재 사용하시는 윈도우에서 지원이 안돼서 그렇습니다. 보통 에뮬레이터의 원산지가 중국이기에 중국어를 지원해야 하는데 한국어 윈도우에선 기본적으로 지원해주지 않거든요. 그래서 시스템로캘을 변경해줘야 합니다. 윈도우11 기준 설정>시간 및 언어>기본 언어 설정>유니코드를 지원하지 않는 프로그램용 언어를 중국어(간체) 안돼면 중국어(번체)로 변경하고 시스템 재부팅 후에 다시 시도해 보시길 바랍니다.
답글삭제그리고 Secure Eraser는 안드 7이던가 9 이상부터 internal, external 이 아닌 맨 마지막에 ...을 선택해서 저장소에 접근권한을 획득해야 제로필을 수행할 수 있습니다.
좋은 정보 알려주셔서 고맙습니다.
삭제