VMware Workstation : .vmdk 최대 크기를 줄이는 방법


27

가상 머신이 저장된 150GB 디스크 파일 (.vmdk, 사전 할당되지 않음)이 있습니다.

파일은 현재 20GB이지만 게스트 파일 시스템에 새로운 것을 저장하지 않아도 매일 증가하고 있습니다.

이 디스크의 최대 크기줄이는 방법을 찾기 위해 몇 시간 동안 찾고 있었으므로 절대 150GB가되지 않습니다 (제한을 30GB로 설정하고 VM 이이 크기에 도달하면 어떻게되는지 확인하십시오) .

내가 시도한 것 :

  • VMware Converter로 디스크 이미지 변환 → 작동하지 않습니다.이 도구는 전체 복사본 또는 '링크 된 복제본'만 만들 수 있습니다.
  • 20GB 데이터를 새 .vmdk에 복사하기 위해 원하는 크기의 새 빈 가상 머신 생성 → 복사를 수행하거나 새 디스크를 기존 VM에 연결하는 방법을 찾을 수 없습니다. 게스트 OS).
  • .vmx 파일에서 최대 크기가 일반 텍스트로 설정되어 있지 않은지 확인합니다 (그렇지 않음).

이 작업은 기술적으로 매우 단순 해 보이지만 (수축이 복잡하지 않고 크기 제한이 약간 변경되는 경우도 있음) 실제로 아이디어가 없습니다 ...

해결책이 있습니까?


1
가상 디스크의 파티션은 광고 된 공간을 채우기 위해 만들어지기 때문에 "축소 한 수축"이 실제로 수반됩니다.
Daniel B

답변:


25

.vmdk 디스크의 크기를 줄이는 일반적인 절차는 다음과 같습니다.

  1. 디스크 끝에서 빈 공간을 통합하는 조각 모음 모드를 선택하여 게스트를 통해 디스크 조각 모음을 수행합니다. Windows 게스트의 경우 휴지통을 비우고 최대 절전 모드 및 페이징을 해제하고 조각 모음이 완료된 후 반환해야합니다.

  2. 디스크에서 사용되지 않은 공간을 모두 제로화하십시오.
    Windows의 경우 sdelete :를 사용 하십시오 sdelete -c.
    Linux의 경우 : dd if=/dev/zero of=/mytempfile && rm -f /mytempfile.

  3. 디스크를 줄입니다 (완료하는 데 시간이 오래 걸릴 수 있음).
    VMware Workstation : 메뉴 VM / 디스크 관리 / 정리.
    또는 사용하십시오 : vmware-vdiskmanager.exe -k [VMDK PATH].
    ESX의 경우 : vmkfstools --punchzero [VMDK PATH].

디스크를 확장 가능에서 사전 할당으로 변환하면 확장이 중지 될 수 있습니다. vmware-vdiskmanager를 사용하여 다음과 같은 -t값 을 갖는 매개 변수를 사용할 수 있습니다 .

0 : single growable virtual disk
1 : growable virtual disk split in 2Gb files
2 : single preallocated virtual disk
3 : preallocated virtual disk split in 2Gb files

다음 명령은 .vmdk를 확장 가능에서 사전 할당으로 변환합니다.

vmware-vdiskmanager -r current_disk_name.vmdk -t 3 new_disk_name.vmdk

디스크 크기를 변경하려면 디스크가 여전히 확장 가능한 형식 (예 : 여기 ) 인 동안 수행해야합니다 .

자세한 정보는 Virtual Disk Manager 사용자 안내서를 참조하십시오 .


2
그러나 내부적으로 알려진 드라이브 크기는 줄이지 ​​않습니다.
Daniel B

@DanielB : 아니요, 최대 크기를 줄이는 것이 아니라 실제 크기 만 줄입니다. 일부 OS는 시스템 디스크에 여유 공간이 없으면 부팅 할 수 없으므로 최대 크기를 줄이는 것은 위험 할 수 있습니다.
harrymc

3
이것은 VMDK가 차지하는 공간을 줄이기 위해 사용한 유용한 기술입니다. 그러나 VMDK를 항상 아래에 유지하려는 것처럼 30GB를 말하면 주기적으로 작업을 반복해야합니다 (실제로 오랜 시간이 걸립니다).
Sébastien

디스크를 항상 원하는 크기로 줄일 수있는 경우, 위의 절차를 통해 항상 크기를 줄이려면 나중에 디스크를 고정 크기로 변환하여 크기를 제한 할 수 있습니다.
harrymc

1
@harrymc 디스크를 고정 크기로 변환하는 것은 나의 필요에 적합 할 것입니다. VMWare Workstation 또는 Converter 로이 작업을 수행하는 방법을 찾지 못했습니다.
Sébastien

6

파일은 현재 20GB이지만 게스트 파일 시스템에 새로운 것을 저장하지 않더라도 매일 증가하고 있습니다.

OS 및 해당 응용 프로그램은 임시 파일, 페이지 파일, 최대 절전 모드 파일 및 구성 파일에 임시로 많은 디스크 공간을 사용하기 때문입니다. OS 정책에 따라 삭제되면 디스크의 새 섹터가 다음에 사용됩니다. VM은 가상 디스크에서 새 섹터가 사용될 때마다 실제 디스크에서 가상 디스크에 대한 스토리지를 할당합니다. 가상 디스크의 섹터가 게스트 OS에서 항상 재사용되지 않기 때문에 VM은 디스크 사용량을 생각하고 실제 디스크에서 공간을 제공하므로 가상 디스크 이미지가 증가합니다.

이미지를 검사하지 않고 이러한 도구를 사용하면 전체 재해가 발생할 수 있으므로 질문 제목을 해결할 가능성이 적습니다. 그러나 30GB 이상으로 이미지가 커지는 것을 방지 할 수 있습니다. 목표를 달성하는 방법은 여러 가지가 있습니다.

A. 분할 된 30GB 만 사용하고 남은 공간을 남겨 두십시오. 이미 더 많은 공간을 분할했다면 축소 / 삭제해야합니다. 새 파티션을 생성 한 다음 0으로 덤프하고 @harrymc에 설명 된대로 펀칭하십시오. 파티션되지 않은 영역의 공간은 절대 사용되지 않으므로 가상 디스크는 30GB 이상으로 커지지 않습니다.

B. 스냅 샷을 생성하고 사용 후 복원합니다. 스냅 샷 VM 저장소 데이터를 새 이미지 파일로 생성 한 후 새 스냅 샷을 저장하거나 만들지 않고 복원하면 변경된 모든 데이터가 삭제되므로 공간이 확보됩니다.

C. 최대 30GB의 새 가상 디스크를 생성하고 현재 가상 머신에 새 디스크로 추가 한 후 백업 도구를 사용하여 모든 데이터를 새 가상 디스크로 옮깁니다. 복제에 라이브 Linux를 사용할 수 있습니다.

권장 옵션은 A입니다


2

단순히 관련된 디스크의 크기를 150GB에서 30GB로 설정하십시오.

모든 파티션의 합을 30GB 미만으로 설정해야합니다. 갈수록 파티션의 크기를 줄여야합니다. 이 사이트에는 파티션을 줄이는 방법에 대한 많은 문서가 있으므로 여기서는 다시 반복하지 않겠습니다.

최대 크기로 지원할 공간이없는 경우 150GB (씬 파티션)를 만든 이유는 무엇입니까? 이것은 단지 문제를 요구하는 것 같습니다.


5
개인적으로 VM을 만들지 않았습니다. 이것이 바로 그 이유입니다.
Sébastien

디스크 자체를 축소하려면 어떻게합니까? 디스크 내의 파티션이 축소되었지만 vdiskmanager.exe -k [VMDK PATH]다른 응답에서 제안한 것처럼 드라이브가 축소되지 않습니다.
Aaron Franke

명확하게 문서화되지 않은 문제는 vmdk 장치의 크기를 조정하는 방법입니다 (파티션 크기를 조정 한 후). 또한 @mdpc 나는 당신의 대답이 건설적이지 않다고 생각합니다. 기존 vm에서 데이터 크기를 조정해야하는 경우가 많으 므로 VM을 올바르게 작성해야한다는 손가락을 가리킬 필요가 없습니다.
basos

2

사용하는 로터리 방식이 VM웨어 컨버터를 새로 만든 작은 VMDK 원래 VMDK를 변환 한 후, 새로운 VM 작은 VMDK 크기를 만들 수는.

VMDK 축소

자세한 단계는 여기에 있습니다 .

VMDK 크기를 변경 하면 파티션 테이블에 대한 해당 업데이트 도 필요 합니다 .


이것은 VMWare Workstation VM이며 이러한 고급 복사 옵션은 이러한 유형의 VM에 대해 Converter에서 제공하지 않습니다. 디스크 크기를 변경할 수 없습니다.
Sébastien

2

이 작업은 드문 드문 VMDK (사전 할당되지 않음)에만 사용됩니다. 사용 된 공간이 연속되도록 축소하기 전에 조각 모음이 필요합니다.

Windows에서 조각 모음

Windows 가상 머신에서는 먼저 Windows 내에서 디스크 조각 모음을 실행해야합니다. Windows 내에서 조각 모음을 수행하면 사용 된 모든 공간이 연속됩니다. 그런 다음 가상 디스크의 크기를 줄일 수 있습니다.

가상 디스크 축소

가상 디스크를 축소하려면 :

VMware Tools 제어판 / 도구 상자를 엽니 다.

Windows에서 :

시스템 트레이에서 VMware Tools 아이콘을 두 번 클릭하거나 시작> 제어판> VMware Tools를 클릭하십시오.

리눅스에서 :

터미널을 열고 다음 명령을 실행하십시오.

vmware-toolbox

참고 : Workstation 9.x (Windows) 이상에서는 디스크 정리 중에 축소가 자동으로 수행됩니다. 따라서이 옵션은 VMware Tools 패널에서 제거되었습니다. VM> 관리> 디스크 정리로 이동하십시오. Linux 버전의 VMware Workstation 9.x 이상에서는 사용할 수 없습니다.

수축 탭을 클릭하십시오. 축소하려는 드라이브를 선택하십시오. 축소 준비를 클릭 한 다음 화면의 지시를 따릅니다. 주의 : 디스크가 축소되는 동안 가상 시스템 또는 호스트 시스템을 종료하지 마십시오. 또한 프로세스를 취소하지 마십시오. 이 프로세스를 중단하면 가상 디스크에 복구 할 수없는 손상이 발생할 수 있으며 가상 시스템을 다시 시작하지 못할 수 있습니다.

에서 VM웨어 기술 자료


기존 답변을 먼저 읽으면 중복 답변을 피할 수 있습니다.
harrymc

1
어쨌든 나는 전체 절차와 출처로 다시 게시했습니다. 이것은 그를 더 도움이 될 수 있습니다
잘랄 무스타파에게

op에도 대답하지 않습니다. OP는 현재 크기가 아니라 최대 제한을 줄이려고합니다.
Ryuu

2

@harrym의 대답은 꽤 좋지만 실제로 질문에 대답하지는 않습니다. OP는 최대 크기 를 줄이려고합니다 . 문제는 하이퍼 바이저가 제시된 크기 (일명 최대 크기)가 실제로 OS에서 사용하는 양을 알지 못한다는 것입니다. 압축 (vmware-vdiskmakager -k)은 확장 가능한 vmdk에 적용됩니다. 사전 할당 된 사람에게는 아무 것도하지 않습니다.

디스크를 축소하는 단계는 다음과 같습니다.

  1. OS 또는 적절한 라이브 CD를 통해 디스크의 파티션 크기를 조정하십시오.
  2. 사용 가능한 파티션 공간을 자르지 않도록 경계를 신중하게 선택하여 vmdk 장치의 크기를 조정하십시오. 실제로 필요한 것보다 항상 더 많은 공간을 이미지에 남겨 둘 수 있습니다.

첫 번째 단계는 VM 내에서 절차를 수행하며 게스트 OS에 따라 다릅니다. 두 번째 단계는 vmware 명령으로 지원 될 수 있지만 그렇게하는 깊은 방법을 찾지 못했습니다. 따라서 해키 접근 방식.

여기에 너무 큰 데이터 이동으로 인한 비 빠른 해결책과 속임수를 사용한 더러운 솔루션이 있습니다. 사용 가능한 공간이 최대 장치 크기와 같아야합니다 .

경고 : 작동하기 전에 중요한 데이터를 백업하십시오!

  1. 게스트 파티션의 크기를 조정하고 장치 끝에 할당되지 않은 공간을 남겨 두는 방법을 찾으십시오. 두 가지 예 :

    게스트 OS에서 : Windows 7

    1. 온라인 크기 조정 기능을 사용할 수 있습니다. 퀘스트 OS 내에서 먼저 디스크 조각 모음을 수행하는 것이 좋습니다.
    2. diskmgmt.msc를 실행하고 크기를 조정하려는 디스크에서 파티션 (볼륨)을 선택한 다음 마우스 오른쪽 버튼을 클릭하고 볼륨 축소를 클릭하십시오. 대화 상자가 나타나면 요구 사항에 따라 크기를 줄이십시오. 파티션이 사용 중이므로 (시스템 디스크이거나 조각난 경우) 대부분의 여유 공간을 복구하지 못할 수 있습니다. 여유 공간을 확보하십시오.
    3. 이제 디스크 끝 부분 (또는 바이트)으로 끝나는 파티션을 알고 싶습니다. 이것이 장치의 유일한 파티션이라고 가정하면, 우리는 내 컴퓨터-> 디스크 선택-> 마우스 오른쪽 버튼 클릭-> 속성-> 용량 : 표시된 바이트 수를 바이트 단위로 기록합니다. (예를 들어 99,9GB의 경우 107371032576). 안전을 위해 백 메가를 추가하십시오 (+204800) (예 : 107371237376). 누락 된 항목을 추가 할 필요가 없도록 diskpart cmd line 유틸리티를 사용하여 장치 시작 부분에서 파티션의 오프셋을 찾을 수 있습니다. diskpart를 실행 한 다음 : list disk, disk id 선택 , part list, select part id , detail. 예:

    DISKPART> 상세 부분

    파티션 1

    바이트 단위 오프셋 : 1048576

    최소한이 숫자를 디스크 크기에 추가하십시오. 이제 바이트를 512로 나누고 위로 반올림 (천장)하는 섹터로 변환해야합니다. 예 : 209709448.이 번호는 3 단계에 유의하십시오.

    라이브 CD를 통해 : SystemResqueCD

    1. 또는 Resque CD ( SystemResqueCD 는 제 제안)를 사용하고 부팅 가능한 ISO를 다운로드하여 VM에 가상 CD 롬 장치로 마운트하고 VM에서 부팅합니다 (VMWare 부팅 화면에서 Esc 키를 눌러 시도) 아주 짧은 시간에 나타납니다). 명령 프롬프트 유형 startx에 도달하면 그래픽 인터페이스가 나타납니다.
    2. 시스템 요청의 데스크탑에 있으면 gparted를 시작하십시오 (예 : 터미널에서). 크기를 조정할 파티션을 찾으십시오 (의심 할 경우 게스트 운영 체제에서 디스크 검사를 수행해야합니다). 공간 요구 사항을 신중하게 계획하여 크기를 조정하십시오.
    3. 다시 파티션의 섹터 (또는 바이트)에서 종료 오프셋을 찾아야합니다. 터미널을 열고 parted [ device ]를 쓴 다음 단위를 인쇄합니다. 예 :

번호 시작 끝 크기 유형 파일 시스템 플래그

1 2048s 113455103s 113453056s 기본 ntfs 부팅

종료 섹터를 기록하고 1을 추가하십시오 (예 : 113455104).

  1. 해킹이 사전 할당 된 단일 파일 (유형 2) vmdks (여러 파일 유형에서는 시도하지 않음)에서 작동함에 따라 먼저 재배 가능 파일을 사전 할당 된 것으로 변환합니다. 일시적으로 장치의 최대 크기로 물리적 공간이있는 파티션이 필요합니다. (예 : 150GB).

    vmware-vdiskmanager.exe -r sourcevmdk -t 2 대상 시스템

  2. 까다로운 부분은 사전 할당 된 디스크에 2 개의 vmdks가 있어야한다는 것입니다

    disk.vmdk disk-flat.vmdk

    전자는 KB 길이이고 후자는 데이터를 보유합니다. VMWare 워크 스테이션이 꺼져있는 동안 첫 번째 (disk.vmdk) 열고 텍스트 편집기 (메모장 ++는 내 제안)입니다. 줄 찾기

    RW 113455104 FLAT "Windows 7_x64-fl-flat.vmdk"0

    그렇습니다. 두 번째 필드는 장치에 할당 된 섹터 수입니다. 유효성 검사에 512를 곱하고 바이트 단위의 크기를 찾은 다음 1073741824 (1024 ** 3)로 나누어 크기를 GB 단위로 찾으십시오. 이전 장치의 크기 여야합니다.

    이제이 번호를 1 단계에서 적어 둔 번호로 바꾸고 파일을 저장하십시오. 경고 : 여기서 실수로 파일 시스템에서 사용되는 실제 데이터를 다듬을 수 있습니다. (그러나 우리는 장치의 시작 부분에서 fs의 크기를 조정하고 정확하고 안전한 계산을 올바르게 했습니까?)

  3. 지금까지 데이터는 아직 건드리지 않았습니다. 확장을 실제로 다듬 으려면이 마지막 단계를 수행하십시오. vmware-vdiskmanager의 이름 바꾸기 기능을 사용하여 vmdk의 크기를 자른 크기로 다시 만듭니다.

    vmware-vdiskmanager.exe -n 대상 VMvmdk


0

vmware Linux 게스트 OS의 경우 다음을 실행하십시오.

sudo vmware-toolbox-cmd disk shrinkonly

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