VMware 이미지를 배포하거나 타 가상환경으로 이미지를 변환하기 전 이미지 병합이 필요합니다. 분할된 vmdk 파일을 하나로 병합하려면 vmware-vdiskmanager 명령을 사용해야 합니다. 그러나 이 파일은 VMware Fusion 또는 VMware Workstation이 설치된 경우에만 사용할 수 있습니다. VMware Player에는 이 파일이 없습니다.
설치 디렉토리 경로는 다음과 같을 수 있습니다. C:\Program Files (x86)\VMware\VMware Workstation ※ C:\Program Files (x86)\VMware\VMware Player 에는 없습니다.
vmdk 파일을 병합하려면 vmdk 파일이 있는 디렉토리에서 CMD 를 엽니다. 다음 vmdk 파일이 있다고 가정합니다.
-o : compat, backing_file, backing_fmt, encryption, cluster_size, preallocation, lazy_refcounts 등 관련 옵션이 굉장히 많은 듯 싶은데 정확한 설명을 찾아보기가 어렵네요. 특정 옵션의 경우 지원 가능한 포맷이 정해져 있습니다.
-O : 변환될 포맷을 지정합니다.
-p : 진행 상태 바를 표시합니다. (compare, convert, rebase 커맨드 한정) -p 옵션을 지원하지 않는 커맨드의 경우, 진행상황은 프로세스가 SIGUSR1 신호를 받았을 때 보고됩니다.
-q : 침묵 모드로 오류를 제외한 다른 메세지들을 출력하지 않습니다. -q와 -p를 동시에 사용하면 진행 상태 바가 표시되지 않습니다.
Command parameters: 'filename' is a disk image filename 'fmt' is the disk image format. It is guessed automatically in most cases 'cache' is the cache mode used to write the output disk image, the valid options are: 'none', 'writeback' (default, except for convert), 'writethrough', 'directsync' and 'unsafe' (default for convert) 'size' is the disk image size in bytes. Optional suffixes 'k' or 'K' (kilobyte, 1024), 'M' (megabyte, 1024k), 'G' (gigabyte, 1024M), 'T' (terabyte, 1024G), 'P' (petabyte, 1024T) and 'E' (exabyte, 1024P) are supported. 'b' is ignored. 'output_filename' is the destination disk image filename 'output_fmt' is the destination format 'options' is a comma separated list of format specific options in a name=value format. Use -o ? for an overview of the options supported by the used format 'snapshot_param' is param used for internal snapshot, format is 'snapshot.id=[ID],snapshot.name=[NAME]', or '[ID_OR_NAME]' 'snapshot_id_or_name' is deprecated, use 'snapshot_param' instead '-c' indicates that target image must be compressed (qcow format only) '-u' enables unsafe rebasing. It is assumed that old and new backing file match exactly. The image doesn't need a working backing file before rebasing in this case (useful for renaming the backing file) '-h' with or without a command shows this help and lists the supported formats '-p' show progress of command (only certain commands) '-q' use Quiet mode - do not print any output (except errors) '-S' indicates the consecutive number of bytes (defaults to 4k) that must contain only zeros for qemu-img to create a sparse image during conversion. If the number of bytes is 0, the source will not be scanned for unallocated or zero sectors, and the destination image will always be fully allocated '--output' takes the format in which the output must be done (human or json) '-n' skips the target volume creation (useful if the volume is created prior to running qemu-img)
Parameters to check subcommand: '-r' tries to repair any inconsistencies that are found during the check. '-r leaks' repairs only cluster leaks, whereas '-r all' fixes all kinds of errors, with a higher risk of choosing the wrong fix or hiding corruption that has already occurred.
Parameters to snapshot subcommand: 'snapshot' is the name of the snapshot to create, apply or delete '-a' applies a snapshot (revert disk to saved state) '-c' creates a snapshot '-d' deletes a snapshot '-l' lists all snapshots in the given image
Parameters to compare subcommand: '-f' first image format '-F' second image format '-s' run in Strict mode - fail on different image size or sector allocation Supported formats: vvfat vpc vmdk vhdx vdi sheepdog sheepdog sheepdog raw host_device file qed qcow2 qcow parallels nbd nbd nbd dmg tftp ftps ftp https http cow cloop bochs blkverify blkdebug
VMware의 가상 하드 디스크 타입은 고정 크기 (Preallocated)나 가변 크기 (Growable; Dynamically Expanding) 로 설정할 수 있는데, 고정 크기의 경우 성능면에서는 가변 크기에 비해 우수하지만 사이즈가 크기 때문에 다른매체로 옮길 때는 상당히 불편합니다. 그래서 필요 시 타입을 변경할 수 있습니다.
가상 디스크의 타입을 변환하기 위해선 vmware-vdiskmanager 명령어에 -r 옵션을 사용하면 됩니다. 이 옵션을 사용하면 원본 가상 디스크 이미지 파일을 바탕으로 원하는 타입의 새로운 가상 디스크 이미지 파일이 만들어집니다.
VMWare 의 가상 하드 디스크는 가상 하드 디스크의 사용량에 따라 자동적으로 증가합니다.
VMware Tool 이 설치 되었다면 파일을 Drag & Drop하거나 Ctrl + C 키, Ctrl + V 키를 이용하여 필요시에 즉각적으로 복사를 할 수가 있습니다. 하지만 사용자 PC에서 VMware 의 가상 하드 디스크로 파일을 복사하는 경우 가상 하드 디스크의 임시 폴더에 파일이 먼저 복사된 후 사용자가 붙여넣기 한 곳으로 다시 한번 복사가 되는 방식이 사용되고 있습니다. 그리고 복사가 끝난 이후에 기존 임시 폴더와 파일이 삭제되지 않고 그대로 남아 있습니다.
그래서 VMware 에서 지원하는 공유폴더 기능을 이용하면 가상 하드 디스크의 임시 폴더에 동일한 파일이 남지 않고 파일을 옮길 수 있습니다.
[OS별 공통사항]
VMware 가상 OS 를 종료한 상태에서 VM > Settings 메뉴 > Options 탭 > Shared Folders 선택
Folder sharing 에서 Always enabled 라디오박스 클릭
Folders 에서 Add를 클릭하고 Browse 를 통해 공유할 디렉토리를 설정, Enable this share 체크박스 선택 후 Finish 클릭하여 마법사 완료
[윈도우 이미지]
가상 OS를 실행한 뒤 윈도우 탐색기 > 내 컴퓨터에 공유폴더가 보이는지 확인
보이지 않는다면 윈도우 탐색기 > 내 네트워크 환경 > 전체 네트워크 > VMware 공유 폴더 > vmware-host > Shared Folders 로 이동
또는
시작 > 실행 > \\vmware-host 이나 \\vmware-host\Shared Folders 를 실행
또는
윈도우 탐색기 > 내 컴퓨터에서 마우스 오른쪽 키를 누른 뒤 네트워크 드라이브 연결 > 폴더 명에 \\vmare-host\Shared Folders 를 입력하여 공유폴더 등록
VMWare의 가상 하드 디스크 타입은 고정 크기 (Preallocated)나 가변 크기 (Growable; Dynamically Expanding) 로 설정할 수 있는데, 가변 크기로 설정해 놓았을 경우 가상 하드 디스크의 사용량에 따라 자동적으로 증가합니다. 그리고 가상 하드 디스크의 크기가 증가하면 가상 하드 디스크에서 파일을 지워도 증가된 크기를 유지하게 됩니다 때문에 용량을 축소하는 것도 중요합니다. 단, 여러 vmdk 파일을 한 개의 vmdk로 병합하려는 경우 [VMware] 여러 vmdk를 단일 vmdk로 병합하는 방법을 참고해주세요.
[OS별 공통사항]
전제조건이 있습니다. VM 이미지의 Snapshot 이 없어야 VM 이미지 축소가 가능합니다. Snapshot 이 존재한다면 삭제 후 진행해야 합니다.
:: 선택 1 :: VMware 메뉴 이용 VM > Settings 메뉴의 Hard Disk항목을 클릭하고 오른편에 Defragment 를 클릭하여 가상 하드 디스크의 조각모음을 진행합니다. 단, 증가된 가상 하드 디스크의 크기를 축소하지는 못합니다.
:: 선택 2 :: 사용자 PC에서 CMD 이용 C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager -d C:\VMware\image.vmdk
[리눅스 이미지]
:: 선택 1 :: VMware 이미지 내에서 CLI 명령어를 이용 리눅스 가상 하드 디스크의 빈공간을 파일로 만든 후 삭제합니다. 단, 여유 공간이 부족하면 파일생성이 불가하기 때문에 에러발생 시 그냥 넘어갑니다. # dd if=/dev/zero of=/empty_file; rm empty_file
다음으로 VMware Tool이 설치되어 있어야 합니다. VMware Tool이 설치돼 있다면 shrink 명령을 실행합니다. # vmware-toolbox-cmd disk shrink / shrink 명령어를 통해 가상하드 디스크의 크기를 축소합니다.
o 추가사항 o - 명령어 확인 # vmware-toolbox-cmd help disk
- shrink할 대상 list 확인 # vmware-toolbox-cmd disk list
- shrink 실행 # vmware-toolbox-cmd disk shrink 디스크명
:: 선택 2 :: 사용자 PC에서 CMD 이용 C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager -k C:\VMware\image.vmdk
[윈도우 이미지]
다음 경로에 있는 폴더를 삭제합니다. C:\Documents and Settings\사용자계정\Local Settings\Temp\wmare-사용자계정\VMwareDnD 또는 C:\Documents and Settings\사용자계정\Local Settings\Temp\VMwareDnD 또는 C:\Users\사용자계정\AppData\Local\Temp\VMwareDnD
VMware Tool이 설치 되었다면 파일을 Drag & Drop하거나 Ctrl + C 키, Ctrl + V 키를 이용하여 필요시에 즉각적으로 복사를 할 수가 있습니다. 하지만 사용자 PC에서 VMware의 가상 하드 디스크로 파일을 복사하는 경우 가상 하드 디스크의 임시 폴더에 파일이 먼저 복사된 후 사용자가 붙여넣기 한 곳으로 다시 한번 복사가 되는 방식이 사용되고 있습니다. 그리고 복사가 끝난 이후에 기존 임시 폴더와 파일이 삭제되지 않고 그대로 남아 있습니다. 그래서 위의 폴더에 대한 수동 삭제가 필요합니다.
:: 선택 1 :: VMware 이미지 내에서 CMD 명령어를 이용 C:\Program Files\VMware\VMware Tools>VMwareToolboxCmd disk shrink c:\다음으로 VMware Tool이 설치되어 있어야 합니다. VMware Tool이 설치돼 있다면 shrink 명령을 실행합니다.
o 추가사항 o - 명령어 확인 C:\Program Files\VMware\VMware Tools>VMwareToolboxCmd help disk
- shrink할 대상 list 확인 C:\Program Files\VMware\VMware Tools>VMwareToolboxCmd disk list
- shrink 실행 C:\Program Files\VMware\VMware Tools>VMwareToolboxCmd shrink 디스크명
:: 선택 2 :: VMware 이미지가 종료된 상태에서 VMware 메뉴 이용 Clean up now를 클릭하여 디스크 클린업을 진행합니다.VMware를 PowerOff로 완전히 종료 후 VM > Manage > Clean Up Disks 명령을 실행해주면 팝업이 뜹니다.
:: 선택 3 :: 사용자 PC에서 CMD 이용 C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager -k C:\VMware\image.vmdk