Virtualbox vdi 파일의 가상 크기 / 용량을 줄이는 방법


8

MS Windows 7을 실행하는 실제 컴퓨터를 VirtualBox 가상 컴퓨터로 바꾸고 싶습니다. 이것은 쉽지만, 이전에는이 ​​작업을 수행했지만 이번에는 디스크의 가상 크기 / 용량이 고정되고 작은 크기 여야했습니다 .

준수 이유 때문에 PGP 디스크 암호화를 설치하므로 수정해야합니다. 그러면 동적 디스크가 최대 크기로 확장됩니다.

이 특별한 경우를 제외하고는 디스크를 작고 고정해야하는 다른 이유가 있습니다. 내 경험이야 예를 들어 동적 확장 디스크에서 Jenkins 빌드 서버를 실행하면 게스트 OS 디스크 공간 사용량이 안정적이며 여유 공간이 많으면서 디스크가 최대 크기로 빠르게 확장되는 것을 볼 수 있습니다.

Disk2vhd를 사용 하여 vhdx 파일을 만들었습니다. 이 파일은 vdi 형식으로 변환되었습니다.

vboxmanage clonehd --format VDI MSWIN7.VHDX MSWIN7.vdi

vdi를 사용하면 비슷한 명령으로 가상 크기 / 용량을 줄일 수 있습니다

vboxmanage modifyhd MSWIN7.vdi --resize 160000

나는 이것이 작동하지 않는 것을 발견했다. 변형을 시도하더라도 다음과 같은 오류 메시지가 지속적으로 나타납니다.

진행 상태 : VBOX_E_NOT_SUPPORTED VBoxManage : 오류 :이 형식에 대한 하드 디스크 크기 조정 작업이 아직 구현되지 않았습니다!

아래는 내 vdi 디스크의 디스크 레이아웃입니다. 나는 이것을 Gbuned와 CloneZilla를 사용하여 볼 수 있도록 Ubuntu VM에 추가했습니다. 용량은 약 300GB입니다. 할당되지 않은 145GB. 사용 된 용량은 약 153GB입니다.

용량을 약 160GB로 줄이려고합니다. 이 맞게 충분해야 /dev/sdb1하고 /dev/sdb2.

BTW, CloneZilla를 사용해 보았지만 용량을 더 작은 디스크로 축소하고 싶지는 않습니다. CloneZilla에서 다양한 설정을 시도했지만 성공하지 못했습니다.

가상 크기 / 용량을 줄이려면 어떻게해야합니까?

여기에 이미지 설명을 입력하십시오

답변:


15
  1. 게스트 OS 의 디스크 끝에서 공간을 할당 해제합니다. 여기서 space> = size (source-disk)-size (new-disk). 일반적으로 마지막 파티션축소 하여 .
  2. 가상 머신을 끕니다.
  3. 원하는 크기의 새 가상 박스 디스크를 만듭니다.
  4. 기존 디스크에서 새 디스크로 컨텐츠를 이동하십시오.

    vboxmanage clonehd "source-disk.vmdk" "new-disk.vmdk" --existing
    
  5. 가상 머신을 켭니다.

  6. 1 단계에서 할당 된 공간에 따라 나머지 디스크를 채우려면 게스트 OS 에서 파티션 크기를 조정해야 할 수도 있습니다 .

2
이것은 매우 큰 파티션을 사용하는 동적 vdi를 새로운 vdi (성능상의 이유로 고정 크기 형식 일 수 있음)로 변환하는 올바른 방법입니다. 나는 왜
아무도이 답을 찾지 못하고

"디스크 끝에 공간을 할당 해제하다"는 것은 무엇을 의미합니까? 당신은이 질문의, 호스트의 VDI 파일을 축소 언급하는 : superuser.com/questions/529149/...
mikezter

게스트 OS에서, 나는 게시물을 명확히 한
앙드레 Figueiredo의

완전한! 대단히 감사합니다!
Yamakuzure

1
를 사용하면 vboxmanage clonehd "source-disk.vdi" "new-disk.vdi" --existing대상 이미지에서 파티션 테이블이 파괴됩니다.
Mogens TrasherDK

3

결국 나는 사전 설치된 명령 줄 유틸리티를 사용하여 예기치 쉬운 방법이 퍼즐을 해결하기 위해 관리되는 dd참조 디스크 복제를 . 아래 그림과 같이 160GB 고정 VirtualBox vdi 파일에 저장된 게스트 OS에 160GB 드라이브가 있습니다.

여기에 이미지 설명을 입력하십시오

다음 단계를 사용하여 해결했습니다.

  1. MS Windows에서 디스크 관리 를 사용하여 디스크 크기를 VDI 크기와 같거나 약간 작은 크기로 조정하십시오.
  2. MSWIN7.vdiMS Windows 7이 설치된 소스 vdi 를 두 번째 디스크로 Ubuntu VM에 추가하십시오 .
  3. 새로운 고정 160GB vdi를 만들고 이것을 Ubuntu VM에 추가하십시오. 이제 3 개의 디스크가 있습니다 : /dev/sda1Ubuntu VM 실행 /dev/sdb2, 소스 MSWIN7.vdi/dev/sdc1새 vdi.
  4. 에 올바른 파티션을 생성하십시오 /dev/sdc. CloneZilla가 나를 위해 이것을했습니다. 데이터를 복사하지 않았지만 원하는 파티션을 만들었습니다. 물론이 작업을 수동으로 수행 할 수 있습니다.
  5. 복사 sdbsdcdd유사 명령 sudo dd if=/dev/sdb of=/dev/sdc. 공백없이 오류 메시지와 함께 명령이 종료됩니다. 이것은 이것이 할당되지 않은 공간이기 때문에 복사하지 못했습니다.

각 파티션마다 명령을 실행할 수 있다고 생각합니다. 어쩌면 더 좋으며 오류 메시지가 표시되지 않습니다. sudo dd if=/dev/sdb1 of=/dev/sdc1그리고 sudo dd if=/dev/sdb2 of=/dev/sdc2.

vagrant@devops:~$ sudo dd if=/dev/sdb of=/dev/sdc
dd: writing to ‘/dev/sdc’: No space left on device
335544321+0 records in
335544320+0 records out
171798691840 bytes (172 GB) copied, 6360.3 s, 27.0 MB/s

2

이 솔루션이 매우 위험하다고 생각합니다! 원래 300GB 파티션의 첫 153GB에있는 모든 파일에 의존합니다. dd 명령은 파일을 복사하지 않습니다. 단순히 모든 블록을 순서대로 복사합니다. 따라서 160GB 컷오프 후에 중요한 파일을 보관할 수있을 정도로 불행한 경우 dd는 해당 파일을 복사 할 수 없습니다.

많은 게시물에서 내가 본 전형적인 솔루션은 Windows VM의 전원을 켜고 조각 모음 도구 및 관리 도구 조합을 사용하여 모든 파일을 디스크 앞쪽에 통합하는 것입니다. 많은 조각 모음 도구가 움직일 수 없다는 어려움 통합하려는 공간의 중간에있는 Windows 시스템 파일 (7GB의 이동 불가능한 디스크 청크를 삭제하기 위해 시스템 복구를 꺼야했습니다).

디스크 앞쪽으로 파일을 통합 한 후 (MyDefrag는 디스크의 파일 위치를 표시하는 프리웨어 도구 임) Windows 파티션의 크기를 줄여야합니다. 디스크 옵션 도구를 축소 옵션과 함께 사용했습니다.

이 시점에서 dd를 사용하여 더 작은 파티션을 새 vdi로 복사 할 수 있습니다.

또한 Linux 호스트에서 vboxmanage modifymedium win10.vdi --compact를 사용했지만 먼저 Windows 시스템에서 sdelete.exe를 실행하여 사용되지 않은 모든 공간을 먼저 제거해야했습니다 (sdelete -zc :). vboxmanage를 사용하여 기존 vdi 파일을 압축하면 모든 것을 제자리에서 수행 할 수 있지만 항상 백업이 가능합니다.


내가 언급 한 것은 MS Windows에서 파티션의 크기를 먼저 올바른 크기로 조정했다는 것입니다. 이렇게하면 파일이 153GB 부분이됩니다. MS WIndows가 파일 / 데이터를 이동시킵니다. 파일을 이동할 수 없기 때문에 MS Windows는 때때로 크기가 조정되지 않습니다.
on

2

내 경우에는 50GB vdi가있는 Windows VM이 20GB로 축소되었습니다.

Andre Figueiredo 솔루션 을 시도했지만 복제 된 문제가있었습니다 vdi.

부팅하는 동안 Andre Figueiredo 솔루션을 적용 하고 축소 된 vdi것을 VM에 연결하면 Virtualbox가 I / O 오류와 함께 중지됩니다.

아마도 이것은 내 btrfs파일 시스템 과 관련이 있습니다 ( btrfsVritualbox에 문제가 있다고 들었습니다 vdi).

내 해결책 :

OVdivdi 라는 VM 디스크 ( ) 를 축소하기 위해 다른 솔루션을 시도했습니다 ( OVdi의 디스크 크기는 50GB, 단일 ntfs 파티션은 40GB입니다).

다음 단계를 따르십시오 (이 경우에는 다른 vdi 이름을 적용 / 발명 할 수 있음 ).

  • VM 중지 (전원 끄기)

  • 원하는 크기의 DVdivdi 라는 이름 으로 새 디스크 ( )를 만듭니다 (20GB 내 경우 ..)

  • DVdi 를 VM에 연결

  • VM 부팅 및 유틸리티 EaseUS Backup Free 설치

  • EasyUS를 실행하고 EasyUS Clone 기능을 사용합니다 ( 새로운 디스크 DVdi 로 축소하여 OVdi MBR 및 OVdi 의 ntfs 파티션을 복제 )

  • VM 전원 끄기

  • VM에서 OVdi 분리

  • DVdi 가 VM의 첫 번째 부팅 장치 인지 확인

  • VM을 재부팅

  • 즐기세요

OVdi 볼륨 을 삭제하는 것을 잊지 마십시오 .

이 단계에 따라 VM 디스크 크기를 50GB에서 20GB로 성공적으로 줄였습니다.


0

다른 사람들이 언급했듯이 Andre Figueiredo의 대답은 운이 좋은 기반입니다. 공간의 "처음 X gb"가 조각 모음이 아니라면 여전히 위험하다는 것을 보증하지 않습니다.

Paul Hursky의 답변이 훨씬 안전합니다. 나는 내가 한 몇 가지 추가 단계를 나열 할 것입니다 (이것은 Windows 용이고 XP는 XP이지만 다른 사람들도 작동해야합니다).

1) 이 링크에서 "MiniTool Partition Wizard Free 12"무료 버전을 받으십시오.

2) 게스트 OS 내부에 설치하고 드라이브 크기를 조정하고 호흡 공간을 안전하게 두십시오 (뒤로 당기지 마십시오). 현재 OS의 하드 드라이브 크기를 조정할 가능성이 높으므로 작업을 다시 시작하고 수행 할 수있는 옵션이 제공됩니다.

3) 이제 동일한 MiniTool 파티션 프로그램을 사용하여 할당되지 않은 공간 () 아래 *:-> 마우스 오른쪽 버튼 클릭-> 파티션 지우기-> 섹터 채우기 (빠른)를 선택하십시오.

4) 이제 게스트 OS를 안전하게 종료하십시오. VBoxManage.exe가있는 VirtualBox 폴더로 이동하여이 경로에서 cmd를 열고 다음을 실행하십시오.

vboxmanage modifymedium C:\PATH_TO_YOUR_VDI\CHANGE_ME.vdi --compact

5) 이제 모든 것이 마술처럼 작동합니다. 다음에 게스트 OS를 열면 디스크 검사, IT 실행을 실행하고 시스템 파일처럼 보이는 "고아 파일"을 찾습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.