다음을 통해 공유


CompactVirtualDisk 함수(virtdisk.h)

VHD(가상 하드 디스크) 백업 저장소 파일의 크기를 줄입니다.

구문

DWORD CompactVirtualDisk(
  [in]           HANDLE                           VirtualDiskHandle,
  [in]           COMPACT_VIRTUAL_DISK_FLAG        Flags,
  [in, optional] PCOMPACT_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                     Overlapped
);

매개 변수

[in] VirtualDiskHandle

OpenVirtualDisk에 전달된 VirtualDiskAccessMask 매개 변수의 VIRTUAL_DISK_ACCESS_METAOPS 플래그를 사용하여 열어야 하는 열린 가상 디스크에 대한 핸들입니다. 가상 디스크를 여는 방법에 대한 자세한 내용은 OpenVirtualDisk 함수를 참조하세요.

[in] Flags

COMPACT_VIRTUAL_DISK_FLAG 열거형의 COMPACT_VIRTUAL_DISK_FLAG_NONE 값(0)이어야 합니다.

[in, optional] Parameters

압축 매개 변수 데이터를 포함하는 유효한 COMPACT_VIRTUAL_DISK_PARAMETERS 구조체에 대한 선택적 포인터입니다.

[in, optional] Overlapped

비동기 작업이 필요한 경우 유효한 OVERLAPPED 구조체에 대한 선택적 포인터입니다.

반환 값

요청의 상태입니다.

함수가 성공하면 반환 값이 ERROR_SUCCESS.

함수가 실패하면 반환 값은 오류 코드입니다. 자세한 내용은 시스템 오류 코드를 참조하세요.

설명

압축은 동적으로 확장 가능하거나 차이점이 있는 가상 디스크에서만 실행할 수 있습니다.

압축에는 두 가지 유형이 있습니다.

  • 첫 번째 형식인 파일 시스템 인식 압축은 NTFS 파일 시스템을 사용하여 여유 공간을 결정합니다. 이 작업은 OpenVirtualDisk에 전달된 VirtualDiskAccessMask 매개 변수에 VIRTUAL_DISK_ACCESS_METAOPSVIRTUAL_DISK_ACCESS_ATTACH_RO 플래그를 포함하고, AttachVirtualDisk를 호출하여 VHD를 연결하고, VHD가 CompactVirtualDisk를 호출하는 동안 VHD를 읽기 전용 디바이스로 연결하여 수행됩니다. 압축을 수행하기 전에 VHD를 분리하면 압축이 완료되기 전에 오류를 반환할 수 있습니다(압축 취소와 유사).
  • 두 번째 형식인 파일 시스템 독립적 압축은 파일 시스템을 포함하지 않지만 완전히 0으로 채워진 VHD 블록만 찾습니다. 이 작업은 OpenVirtualDisk에 전달된 VirtualDiskAccessMask 매개 변수에 VIRTUAL_DISK_ACCESS_METAOPS 플래그를 포함하고 CompactVirtualDisk를 호출하여 수행됩니다.
파일 시스템 인식 압축은 가장 효율적인 압축 형식이지만 먼저 파일 시스템 인식 압축을 사용한 다음 file-system-agnostic 압축을 사용하면 가장 작은 VHD가 생성됩니다.

가상 디스크의 압축 작업은 안전하게 중단되고 나중에 다시 실행될 수 있습니다. 중단된 가상 디스크 파일을 다시 열면 열 때 가상 디스크 파일의 크기가 감소할 수 있습니다.

압축은 가상 디스크의 크기 및 이동이 필요한 블록 수에 따라 CPU 집약적 및/또는 I/O 집약적일 수 있습니다.

CompactVirtualDisk 함수는 호출자와 동일한 보안 컨텍스트의 가상 디스크에서 실행됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7
지원되는 최소 서버 Windows Server 2008 R2
대상 플랫폼 Windows
헤더 virtdisk.h
라이브러리 VirtDisk.lib
DLL VirtDisk.dll

추가 정보

VHD 정보

VHD 참조