VMware에서 VMDK 파일 열고 데이터 추출하는 방법

이해하는 방법은 VMDK 파일을 열고 VMDK 파일에서 콘텐츠를 추출하는 것은 가상 머신에 문제가 발생했을 때 유용합니다. 응용 프로그램 설치 문제, OS 업데이트, 악성 코드 공격, 우연한 데이터 삭제 등이 발생한 후 가상 머신을 시작할 수 없는 상황을 발견할 수 있습니다. 이런 경우에는 VM의 가상 디스크에 대한 액세스 권한이 손실됩니다.

다행히도 WinZip, Linux Reader 또는 VMware Workstation Player로 VMDK 파일을 열 수 있습니다. VMDK 가상 디스크 파일의 내용을 복구하는 방법에 대해 알아보세요. 이러한 방법은 가상 디스크가 암호화되거나 손상되지 않은 경우에만 적용됩니다.

VMDK 파일이란?

VMDK는 VMware가 개발한 오픈 포맷인 가상 머신 디스크 파일 형식입니다. 이 가상 디스크 형식은 파일의 .vmdk 확장명을 가지며 VMware 및 VirtualBox 가상 머신에서 사용됩니다. 그러나 ESXi 서버에 있는 가상 머신은 vmdk 가상 디스크의 약간 다른 형식을 사용합니다. ESXi 데이터 스토어에서 가상 디스크 기술자와 가상 디스크 범위는 가상 디스크의 원시 데이터를 포함하는 두 개의 별도 파일입니다.

가상 디스크 설명자 이름의 패턴은 diskname.vmdk이고, 모든 raw 데이터를 포함하는 가상 디스크 범위 이름의 패턴은 diskname-flat.vmdk입니다. VMware Workstation 형식의 가상 디스크에 대해서는 단일 diskname.vmdk 파일(monolithic sparse)로 표시되는데, 이는 내장된 가상 디스크 설명자를 포함하는 범위 데이터 파일입니다. 가상 디스크 설명자는 가상 디스크 구조, 가상 디스크 지오메트리, 가상 하드웨어 버전 및 ID를 정의합니다.

가상 디스크 설명자 파일

A virtual disk descriptor is represented as plain text. On the left side of the screenshot below, you can see a virtual disk descriptor of the ESXi format (a vmdk file that can be opened with any text editor). On the right side of the screenshot, you can see the data of the virtual disk descriptor that is embedded into a single vmdk file of the VMware Workstation format. The vmdk file can be opened in a HEX editor.

내장된 디스크 설명자 데이터가 Workstation 형식의 단일 vmdk 파일로 0x200 번지부터 기록됩니다. 200 HEX 값을 이진 및 십진 형식으로 변환하면 다음을 얻을 수 있습니다:

200 HEX = 1000000000 이진 = 512 십진

이는 vmdk 파일에서 내장된 설명자를 추출하려면 512번째 바이트부터 데이터 일부를 추출해야 함을 의미합니다. VMware 가상 디스크 설명자 파일에 대한 자세한 정보 및 내장된 가상 디스크 설명자를 추출, 편집 및 가져오는 방법에 대한 블로그 게시물에서 자세한 내용을 확인할 수 있습니다. VMware VMs를 Hyper-V VMs로 변환.

가상 디스크 데이터 파일

화면 캡쳐에서 두 개의 가상 디스크 파일이 HEX 편집기에서 열려 있습니다. 두 가상 디스크에는 동일한 운영 체제가 설치되어 있으며(운영 체제를 설치하는 데 사용된 첫 번째 파티션은 내장된 Windows 디스크 유틸리티로 생성 및 포맷되었습니다), 왼쪽에는 –flat.vmdk 파일이 표시됩니다(ESXi 형식). 이 가상 디스크에는 0x00000000에서 원시 데이터가 작성됩니다. 이 가상 디스크 파일의 시작점이 아닙니다.화면 캡처의 오른쪽에는 Workstation 형식의 가상 디스크가 표시되며 동일한 데이터가 0x00150000(바이트 번호 5376)부터 작성됩니다. vmdk 파일입니다.

이론을 익힌 후 실제 부분으로 넘어갑니다. 계속하기 전에 데이터를 백업하여 가상 디스크 손상을 방지하는 것이 좋습니다. 디스크 작업은 본인의 책임과 위험 하에 수행하십시오.

가상 머신을 전원을 켜서 VMDK 파일을 여는 두 가지 방법

기존 가상 머신을 전원을 켜서 VMDK 파일을 여는 경우 VMware ESXi, VMware Workstation, VMware Player 또는 Oracle VirtualBox와 같은 하이퍼바이저를 물리적 컴퓨터에 설치해야 합니다. VMDK 파일을 가상 디스크로 마운트하거나 레거시 방법을 사용하여 라이브 DVD를 사용할 수 있습니다.

방법 1: OS가 중단된 경우에도 라이브 DVD 사용

이 방법의 아이디어는 가상 머신에서 DVD 디스크로 부팅할 수 있고, ISO 디스크 이미지를 가상 DVD 드라이브에 삽입된 DVD 디스크로 사용할 수 있다는 것입니다. DVD 미디어에서 운영 체제를 부팅한 후에는 가상 디스크의 파티션을 마운트하고, 해당 가상 디스크에서 파일을 VM에 연결된 USB 하드 디스크나 호스트 머신 또는 네트워크를 통해 다른 기계로 복사할 수 있습니다. 일부 Live DVD 배포판은 디스크(파티션)를 자동으로 마운트합니다.

이는 원리적으로 설치된 운영 체제가 부팅되지 못하는 경우 실제 컴퓨터의 물리적 디스크에서 파일을 복사하는 것과 유사하기 때문에 레거시 방법입니다. 이 방법은 VMware ESXi 및 VMware Player/Workstation에서 실행 중인 VM의 VMDK 디스크에서 데이터를 추출하는 데 사용할 수 있습니다.

Live DVD에서 부팅된 운영 체제가 액세스하려는 가상 디스크의 파티션의 파일 시스템을 인식해야 합니다. 예를 들어, Windows는 기본적으로 EXT3, EXT4, ReiserFS 등과 같은 Linux 파일 시스템과 작동할 수 없습니다. Windows에서 추가 도구를 사용하면 이 문제를 해결할 수 있습니다. 한편, 현대의 Linux는 NTFS 및 FAT32와 같은 Windows 파일 시스템을 인식하기 때문에 부팅할 수 없는 Windows VM에서 사용되는 가상 디스크에 저장된 파일을 복사하기 위해 Linux 기반의 Live DVD 디스크를 사용할 수 있습니다.

예: ESXi에서 VMDK 파일 열기

다음은이 방법을 적용하는 예입니다. Windows Server 2016이 설치된 VM이 ESXi 호스트에서 실행 중인 상태입니다. 그러나 VM의 OS가 부팅되지 않지만 VMDK 가상 디스크에 기록된 파일을 가져와야합니다. 가상 디스크에는 부팅 시스템 파티션과 디스크 C가 두 개의 NTFS 파티션이 있습니다. 이 예에서는 공식 Ubuntu 18 설치 ISO 이미지를 사용합니다. Ubuntu 설치 미디어는 Live DVD로 사용할 수 있습니다.

참고: 이 블로그 글에서 고려된 제품의 최신 버전에 대한 워크플로우는 동일합니다. VMware Workstation 17, ESXi 8.0, Windows Server 2019, Ubuntu Linux 22.04 등을 사용할 수 있으며, 이 문서에서 설명된 작동 원리를 사용할 수 있습니다.

  1. ISO 이미지를 ESXi 호스트에서 액세스 가능한 데이터스토어에 업로드하십시오.
  2. VMware vSphere 클라이언트를 열고 호스트 및 클러스터로 이동하여 VM을 선택하고 설정 편집을 클릭하십시오.

  3. 가상 머신 설정 창에서 CD/DVD 드라이브 옵션으로 이동하십시오. 필요한 ISO 파일이 ESXi 호스트에 의해 액세스 가능한 데이터스토어에 있는 경우 데이터스토어 ISO 파일 옵션을 선택하십시오. 그런 다음, CD/DVD 미디어 옵션으로 이동하여 찾아보기를 클릭하고 데이터스토어에 적절한 ISO 파일을 선택하십시오. 이 경우 파일 이름은 ubuntu-18.04.1-desktop-amd64.iso입니다.

  4. VM을 시작하고 ISO 이미지에서 부팅한 다음 “설치하지 않고 Ubuntu 시험해 보기”를 선택하십시오. Ubuntu가 라이브 DVD 미디어에서 부팅되면 콘솔(Terminal)을 엽니다.
  5. 루트 권한을 얻으십시오:

    sudo -i

  6. 사용 가능한 하드 디스크 장치 목록을 확인하십시오:

    ls -al /dev/sd*

    두 개의 파티션이 있습니다 – /dev/sda1/dev/sda2

  7. 각 파티션에 사용할 마운트 지점으로 디렉터리를 만드십시오:

    mkdir /mnt/win-disk1

    mkdir /mnt/win-disk2

  8. /dev/sda1을 /mnt/win-disk1/에 마운트합니다.

    /dev/sda2를 /mnt/win-disk2/에 마운트합니다.

  9. 그런 다음 마운트된 파티션의 파일 및 디렉토리를 나열합니다:

    /mnt/win-disk2/의 파일 및 디렉토리를 나열합니다.

    /mnt/win-disk1/의 파일 및 디렉토리를 나열합니다.

    위의 스크린샷에서 볼 수 있듯이, /mnt/win-disk2에 마운트된 파티션은 Windows에서 디스크 C:로 사용됩니다.

  10. 이제 USB 하드 디스크 드라이브 (HDD)를 ESXi 호스트의 USB 포트에 연결하고 USB 패스스루 기능을 사용하여 이 HDD를 가상 머신에 연결할 수 있습니다. 이렇게하면 가상 머신이 가상 디스크로 사용하는 VMDK 파일에 저장된 필요한 파일을 복사할 수 있습니다. 다른 방법은 SMB (CIFS) 공유를 사용하여 가상 디스크 (즉, VMDK 파일)의 내용을 네트워크를 통해 다른 위치로 복사하는 것입니다.

    이 예에서는 SMB 공유로 데이터를 복사하는 방법을 설명합니다. SMB 공유는 IP 주소가 192.168.17.125인 호스트에 생성되었으며 공유 이름은 \\192.168.17.125\share이며 이 공유에 대해 user10이 쓰기 권한을 가지고 있습니다. Linux는 Windows와 달리 공유에 연결할 때 슬래시를 사용합니다.

    라이브 DVD에서 로드된 Linux에 SMB (CIFS) 공유를 마운트합시다. 먼저 마운트 지점으로 사용할 디렉토리를 만듭니다.

    mkdir /mnt/smb-share

  11. 그런 다음 이 디렉토리로 SMB (CIFS) 공유를 마운트합니다:

    mount -t cifs -o user=user10 //192.168.17.125/share /mnt/smb-share

  12. 사용자의 암호를 입력하십시오.
  13. 이제 Linux 시스템이 SMB 공유에 연결되었으며 네트워크를 통해 VMDK 파일 내에 저장된 내용을 SMB 공유로 복사할 수 있습니다.

    SMB 공유가 마운트된 디렉터리로 이동하여 가상 디스크의 마운트된 파티션(ESXi 데이터스토어의 VMDK 파일)에서 bootmgr 파일을 현재 디렉터리(SMB 공유)로 복사합시다.

    cd /mnt/smb-share

    cp /mnt/win-disk-2/bootmgr

  14. ls -al /mnt/smb-share

    위의 스크린샷에서 확인할 수 있듯이이 예에서 사용된 bootmgr 파일이 성공적으로 복사되었습니다. 이제 가상 머신에 설치된 운영 체제가 부팅할 수 없을 때 VMDK 파일의 내용을 다른 위치로 복사하는 첫 번째 방법을 알게 되었습니다. 이 방법을 VMware Player 또는 VMware Workstation에서 사용하는 논리는 동일합니다.

방법 2: 건강한 VM(ESXi/Workstation/Player)에 VMDK 파일을 가상 디스크로 마운트하기

이 방법은 이전 방법과 유사하지만 이 경우 VMDK 가상 디스크를 기능하는 운영 체제를 가진 기존 가상 머신에 연결해야합니다. ESXi 호스트, VMware Workstation 및 VMware Player에서 실행 중인 기존 VM에 VMDK 파일을 추가 가상 디스크로 연결할 수 있습니다.

ESXi VM의 VMDK 파일을 VMware Workstation이나 Player에서 VMDK 파일을 열고 싶다면, VMware Workstation이나 Player가 설치된 컴퓨터에서 접근할 수 있는 물리 디스크로 가상 디스크와 해당 디스크 디스크립터(vmdk와 –flat.vmdk 파일)를 복사해야 합니다. VM에 스냅샷이 찍혔고 그 이후에 VM 디스크에 변경이 있었다면, 부모 VMDK 파일 뿐만 아니라 델타(차이) 가상 디스크의 VMDK 파일도 복사하는 것을 잊지 마십시오.

두 가지 예시를 살펴보겠습니다:

예시 1: ESXi 호스트에서 다른 VM을 사용하여 한 VM의 VMDK 가상 디스크를 열어보는 방법 (둘 다 ESXi 호스트에 등록된 상태)

예시 2: VMware Workstation 형식의 VM에 가상 디스크를 연결하여 ESXi VM의 VMDK 가상 디스크에서 콘텐츠를 추출하는 방법

첫 번째(건강한) VM에서 작동하는 운영 체제는 파일 시스템과 호환되어야 합니다. 두 번째 VM의 가상 디스크에 사용된 파일 시스템(파일을 추출하기 위해 추가적인 가상 디스크로 연결하려는 VM의 VMDK 파일이 부팅할 수 없는 운영 체제를 갖는 VM)과.

예시 1: ESXi에서 실행 중인 VM에 가상 디스크를 마운트하기

  1. 파일을 추출하려는 가상 디스크를 사용하는 VM을 종료합니다.
  2. ESXi 데이터스토어에서 이 가상 디스크를 찾습니다.
  3. 가상 디스크를 동일한 데이터 스토어의 다른 디렉토리로 또는 가상 디스크 잠금으로 인한 오류를 방지하기 위해 다른 데이터 스토어로 복사합니다. 이 예에서는 이름이 Win-test2.vmdk인 VMDK 파일을 열어보는 방법을 보여줍니다(이는 경우에 따라 Windows 가상 머신의 Win-test2 가상 디스크입니다). ESXi 호스트는 vCenter에 의해 관리됩니다. vCenter가없는 독립형 ESXi 호스트를 사용하는 경우 이 예에서 설명된 논리를 사용할 수 있습니다. 차이점은 사용자 인터페이스에만 있습니다.
  4. VMware vSphere 클라이언트를 열고 스토리지로 이동하여 필요한 VMDK 파일이있는 데이터 스토어를 선택합니다. VMDK 파일을 선택하고 복사를 클릭합니다.

    참고:독립형 ESXi 호스트가 있고 vCenter가 없는 경우, 웹 브라우저에서 ESXi 호스트의 IP 주소를 입력하여 VMware Host 클라이언트를 열고 스토리지 > [귀하의 데이터 스토어 이름] > 데이터 스토어 브라우저로 이동하여 VMDK 파일을 선택하고 복사를 누릅니다. 대상을 선택하고 복사 버튼을 눌러 확인합니다. 가상 디스크는 VMware vSphere 클라이언트 및 VMware Host 클라이언트의 웹 인터페이스에서 VMDK 파일로 표시되지만 가상 디스크는 –flat.vmdkvmdk 파일(가상 디스크 및 해당 설명자)로 구성됩니다. 또한 파일을 복사하기 위해 직접 서버에서 ESXi 콘솔을 열거나 SSH를 통해 연결할 수도 있습니다.

  5. 열린 창에서 대상을 선택합니다. VMDK 파일을 동일한 데이터스토어의 어느 위치로든 또는 다른 데이터스토어로 복사할 수 있습니다. 이 시연을 위해 VMDK 파일을 동일한 데이터스토어의 루트 디렉터리로 복사하겠습니다. 이 경우 vmdk 및 –flat.vmdk 파일이 모두 복사됩니다.

  6. 이제 가상 디스크를 다른 정상적인 VM에 연결해야 합니다. 이 VM은 작동 중인 운영 체제를 가지고 있어야 합니다. 이 예에서는 동일한 ESXi 호스트에서 실행 중인 Windows Server 2016을 사용합니다 (VM 이름은 WinServer2016). 가상 디스크는 이 정상적인 VM에 연결할 수 있습니다. vSphere 클라이언트에서 호스트 및 클러스터로 이동하여 정상적인 VM을 선택한 다음, VM을 마우스 오른쪽 단추로 클릭하고 설정 편집을 클릭하십시오.

  7. 나타나는 창에서 새 장치 추가를 선택하고 기존 하드 디스크를 선택하십시오.

  8. 이전에 만든 VMDK 파일의 사본을 선택하십시오. 현재 예에서는 데이터 저장소의 루트 디렉터리에 있는 Win-test2.vmdk의 사본이 선택되었습니다.

  9. 가상 디스크를 연결한 정상적인 VM을 켭니다. VM이 아직 켜져 있지 않은 경우에는 가상 디스크가 실행 중인 Windows Server 2016 VM에 동적으로 추가됩니다.
  10. Windows OS의 게스트 환경에서 컴퓨터 관리 > 디스크 관리로 이동하십시오 (또는 명령 줄에서 diskmgmt.msc를 실행하십시오) 그리고 가상 디스크를 찾으십시오. 기본적으로 새로 추가된 디스크는 오프라인 상태입니다. 디스크를 마우스 오른쪽 단추로 클릭하고 온라인을 선택하십시오. 추가된 디스크의 파티션에는 자동으로 디스크 문자가 할당됩니다. 파티션에 디스크 문자가 할당되지 않은 경우, 파티션을 마우스 오른쪽 단추로 클릭하고 드라이브 문자 및 경로 변경을 선택하십시오.

  11. 이제 VMDK 가상 디스크의 파일 및 디렉터리에 완전한 (읽기/쓰기) 액세스 권한이 있습니다. Windows 탐색기에서 마운트된 디스크를 열고 건강한 가상 머신에 마운트된 VMDK 파일의 필요한 내용을 복사할 수 있습니다. 또한 마운트된 VMDK 가상 디스크에서 불필요한 데이터를 삭제할 수도 있습니다 (예: 바이러스에 의해 생성된 파일 등), 그러나 주의하여 관련된 스냅숏이 있는 경우 가상 디스크를 손상시키지 마십시오.

예제 2: VMware Player 또는 Workstation에서 실행 중인 VM에 가상 디스크를 마운트하기

이 예제는 이전 예제와 유사하지만 VMware Workstation에서 실행되는 VM을 사용하여 ESXi VM의 VMDK 파일을 엽니다. 이 방법은 ESXi 데이터 스토어에 무료 디스크 공간이 없을 때 가상 디스크를 복사하는 데 사용할 수 있습니다. 예를 들어, 이전 예제에서 언급된 Win-test2 VM의 가상 디스크는 VMware Workstation VM에 장착되어 그 내용을 추출합니다.

  1. VMware vSphere Client에서 스토리지>[데이터스토어 이름]>파일로 이동하여 VMDK 파일을 선택하고 다운로드를 클릭하십시오.

    기억하십시오. ESXi 형식의 가상 디스크는 vmdk 및 –flat.vmdk 파일로 구성됩니다. VMware Workstation 또는 VMware Player가 설치된 컴퓨터에 이 두 파일을 모두 다운로드해야 합니다. VMware HTML5 vSphere Client를 사용하여 ESXi 데이터스토어에서 가상 디스크를 다운로드할 때 이 두 파일이 하나의 zip 아카이브로 압축됩니다.

    대안으로 ESXi 호스트에 SSH 액세스를 활성화하고 데이터스토어 디렉토리로 이동한 다음 SCP 클라이언트(예: WinSCP)를 사용하여 컴퓨터로 가상 디스크 파일을 수동으로 복사할 수 있습니다.

    참고: VMFS 파일 시스템이 있는 ESXi 데이터스토어에서 얇게 할당된 가상 디스크를 컴퓨터로 다운로드할 때, 가상 디스크의 최대 할당 크기와 동일한 크기의 vmdk 파일과 –flat.vmdk 파일이 생성됩니다(얇게 할당된 가상 디스크를 다운로드할 때와 같이 두껍게 할당된 가상 디스크를 다운로드할 때와 동일합니다). 이것은 얇게 할당이 VMFS 파일 시스템 기능으로 간주될 수 있기 때문입니다.

    이제 ZIP 아카이브로 다운로드된 ESXi 형식의 가상 디스크 두 개를 확인할 수 있습니다. VMFS 데이터스토어에 있는 얇게 할당된 가상 디스크의 크기는 현재 약 2GB입니다(위의 스크린샷 참조), 이와 동일한 디스크를 작업 스테이션 컴퓨터에 다운로드한 크기는 약 8GB입니다(아래의 스크린샷 참조).

  2. 압축 해제하십시오. 아카이브에서 두 파일을 해제하십시오. 기본적으로 파일은 확장자를 제외한 아카이브 이름과 동일한 이름의 디렉터리인 Win-test2.vmdk 디렉터리에 추출됩니다.

  3. 이 단계에서는 VMware Workstation 또는 Player가 설치된 컴퓨터에서 기능적인 운영 체제를 가진 건강한 VM이 있어야 합니다. 이전 예제에서는 Windows Server 2016을 실행하는 VM을 사용했지만, 이 예제에서는 Windows Server 2008을 실행하는 건강한 VM을 사용합니다.

    VMware Workstation 또는 VMware Player를 열고 건강한 VM을 선택한 다음 가상 머신 설정 편집을 선택하십시오.

  4. 하드웨어 탭에서 추가 버튼을 클릭하십시오.

  5. 하드웨어 추가 마법사를 여는데, 하드웨어 유형으로 하드 디스크를 선택하십시오. 그런 다음 디스크 유형을 선택하십시오 (권장 값으로 남겨 둘 수 있습니다). 디스크 선택 화면에서 기존 가상 디스크 사용 옵션을 선택하십시오.

  6. ZIP 아카이브에서 추출한 vmdk 파일(–flat.vmdk가 아닌)을 선택하십시오. 파일을 찾아보거나 파일의 전체 경로를 수동으로 입력할 수 있습니다.

    이 예에서는 ESXi 6.5와 VMware Workstation 15를 사용합니다. Windows Server 2008을 실행하는 VMware Workstation VM의 하드웨어 버전은 Workstation 12(VM 버전 12)입니다. 우리의 예에서 가상 디스크를 연결하려는 ESXi VM의 VM 버전은 7입니다.

  7. VMware Workstation에서는 ESXi 호스트에서 복사한 가상 디스크가이 가상 머신과 호환되지 않는다는 오류 메시지가 표시됩니다:

    참고: VMware Workstation VM의 가상 디스크의 경우 가상 디스크 VMDK 파일에 가상 디스크 설명서가 포함되어 있습니다(ESXi VM의 가상 디스크의 경우 별도의 설명서 파일이 없습니다).

    파일을 편집 한 후 가상 디스크가 기존 VM에 성공적으로 추가됩니다.

  8. 아직 전원이 켜지지 않았다면 VM의 전원을 켭니다.
  9. Windows에서 디스크 관리를 열고, 가상 디스크 상태를 온라인으로 변경하고, 파티션에 드라이브 문자를 할당하고, 파일을 찾아볼 수 있습니다.

VM을 켜지 않고 VMDK 파일에서 데이터를 추출하는 방법

가상 머신을 구성하고 전원을 켜지 않아도되는 방법에는 각각의 장점이 있습니다. 이러한 방법 중 일부는 하이퍼바이저를 설치할 필요가 없습니다. VMDK 파일을 호스트 운영 체제에 직접 잠시 동안 마운트할 수 있습니다.

방법 1: VMware Workstation에서 VMDK 파일을 호스트 OS에 마운트

이 방법은 물리적 컴퓨터에서 실행되는 Windows 또는 Linux 운영 체제에 VMware Workstation 설치를 필요로 합니다. VMware Workstation은 호스트 운영 체제에 VMDK 파일을 마운트할 수 있는 좋은 기능을 제공합니다. ESXi 형식의 가상 디스크 및 VM 스냅샷과 관련된 델타 디스크를 지원합니다. 이 블로그 글에서 고려된 이전 모든 방법과 마찬가지로, 사용 중인 운영 체제는 가상 디스크 파티션의 파일 시스템을 지원해야 합니다.

가상 머신의 스냅샷이 있는 경우, 각 스냅샷을 생성한 후 델타 가상 디스크가 생성됩니다. 다른 스냅샷을 찍은 후의 가상 디스크 상태를 열고 싶다면 부모 가상 디스크와 델타 디스크가 있어야 합니다. 이 경우 적절한 델타 가상 디스크를 호스트 운영 체제에 마운트해야 합니다. 부모 가상 디스크와 관련된 종속성은 자동으로 해결됩니다.

스냅샷이 있지만 부모 가상 디스크를 열고 싶은 경우, 부모 가상 디스크를 읽기 전용 모드로 엽니다. 이는 부모 가상 디스크에 변경 사항을 가하는 것이 스냅샷이나 부모 가상 디스크로부터 생성된 링크된 클론을 손상시킬 수 있기 때문입니다. 읽기 전용 모드는 디스크를 호스트 운영 체제에 마운트한 후 가상 디스크에 데이터를 쓰는 것을 방지합니다. 이 가상 디스크를 사용하는 VM이 꺼져 있거나 특정 VM이 이 가상 디스크를 사용하지 않는 경우 VMDK 가상 디스크 파일을 마운트할 수 있습니다.

VMware Workstation VM의 VMDK 가상 디스크를 연결하는 방법을 살펴보겠습니다. 이 VM의 가상 디스크에는 스냅샷이 있습니다. VM의 가상 디스크에는 하나의 NTFS 파티션에 Windows가 설치되어 있습니다. 첫 번째 스냅샷을 촬영한 후에는 디스크 C:의 루트 디렉터리에 Snapshot1.txt 파일이 생성되고, 두 번째 스냅샷을 촬영한 후에는 거기에 Snapshot2.txt 파일이 생성됩니다. 첫 번째 예제는 Linux용이며, 두 번째 예제는 Windows용입니다. 이 예제에서는 이전 Windows XP VM의 가상 디스크 파일이 사용됩니다.

예제 1: Linux 호스트에서 VMDK 연결

  1. Linux용 VMware Workstation을 열고 파일 > 가상 디스크 연결로 이동합니다.

  2. 디스크 연결을 클릭하고 팝업 창이 열립니다. 찾아보기를 클릭하고 가상 디스크 VMDK 파일을 선택합니다.

  3. 두 번째 가상 머신 스냅숏을 찍은 후 생성된 두 번째 차이 가상 디스크의 VMDK 파일을 선택합시다. 이 파일의 이름은 이러한 경우에 VM_name-000002.vmdk로 나타납니다 (이 예제에서는 WinXP-test-000002.vmdk를 사용합니다).

  4. VMDK 형식의 가상 디스크를 이 디렉터리에 마운트하기 위해 Linux 파일 시스템에 디렉터리를 생성합니다. Linux 콘솔에서 /mnt/vmdk/ 디렉터리를 생성합시다.

    mkdir /mnt/vmdk/

  5. 사용자 권한을 설정합니다 (이 예에서 사용자 이름은 user1이고 group1에 속합니다):

    chown -R user1:group1 /mnt/vmdk/

    chmod -R 0775 /mnt/vmdk/

  6. 이제, 생성한 디렉터리를 대상 디렉터리로 선택하고 “읽기 전용 모드로 마운트” 확인란을 선택하고 마운트를 클릭합니다.

  7. 이제 리눅스 파일 탐색기에서 /mnt/vmdk/ 디렉터리를 열고 VMDK 가상 디스크에 있는 파일 및 디렉터리를 찾을 수 있습니다. 이 예제에서 첫 번째 및 두 번째 스냅숏을 생성한 후 생성된 Snapshot1.txtSnapshot2.txt 파일을 볼 수 있습니다. 이 두 파일은 각각 별도의 델타 VMDK 가상 디스크에 위치합니다.

  8. 가상 디스크 콘텐츠 작업을 마쳤으면 호스트 리눅스 시스템의 디렉터리(마운트 포인트)에서 VMDK 가상 디스크를 언마운트하는 것을 잊지 마십시오.

콘솔 인터페이스를 사용하는 것을 선호하는 경우 다음 명령을 사용하여 리눅스 호스트에서 VMDK 디스크 이미지를 마운트할 수 있습니다:

vmware-mount /media/user1/vms/vm_name/vm_disk_name-000002.vmdk /mnt/vmdk

다음과 같습니다:

vm_name이 이 경우 VM 디렉터리 이름과 동일한 가상 머신의 이름입니다. 이 예제에서는 WinXP-test가 VM 이름입니다.

vm_disk_name은 가상 디스크의 이름입니다 (이 예제에서는 WinXP-test.vmdk를 사용합니다).

vm_disk_name-000001.vmdk은 첫 번째 VM 스냅샷을 찍은 후 생성된 첫 번째 델타(차이) 디스크의 이름입니다 (이 경우에는 WinXP-test-000001.vmdk).

vm_disk_name-000002.vmdk은 두 번째 VM 스냅샷을 찍은 후 생성된 두 번째 델타 디스크의 이름입니다 (이 경우에는 WinXP-test-000002.vmdk).

  1. 가상 디스크를 마운트하십시오. 기본적으로 가상 디스크는 읽기/쓰기 모드로 마운트됩니다. 디스크를 읽기 전용 모드로 마운트하려면 명령 줄에서 -r 키를 사용할 수 있습니다.

    vmware-mount /media/user1/vms/vm_name/vm_disk_name-000002.vmdk /mnt/vmdk

  2. 모든 마운트된 VMDK 가상 디스크를 나열하십시오:

    vmware-mount -L

  3. 마운트된 VMDK 가상 디스크 작업을 마치기 전에 모든 가상 디스크를 마운트 해제하십시오:

    vmware-mount -x

예제 2: Windows 호스트에서 VMDK를 마운트하는 방법

Windows에서 VMDK 파일을 마운트하는 방법은 유사합니다. VMware Workstation의 그래픽 사용자 인터페이스(GUI)에서 파일>가상 디스크 매핑 옵션 외에도 아래 단계를 따를 수 있습니다. 첫 번째 VM 스냅샷을 찍은 후 생성된 첫 번째 델타 가상 디스크의 VMDK 파일을 마운트합시다. 이 VMDK 파일의 이름 형식은 다음과 같습니다: VM_name-000001.vmdk (이 튜토리얼에서는 WinXP-test-000001.vmdk가 열려 있습니다).

  1. Windows 탐색기에서 VMDK 파일을 마우스 오른쪽 버튼으로 클릭하고 가상 디스크 매핑을 선택하십시오. Map Virtual Disk.

  2. VMDK 파일을 마운트할 매개변수를 선택하십시오. 가능한 경우 VMDK 파일을 읽기 전용 모드로 열어서 데이터를 쓴 후에도 스냅샷 체인에 속한 가상 디스크가 손상되지 않도록 권장합니다. 이 경우에 기본 드라이브 문자는 Z:이며, 적절한 확인란이 선택된 경우 매핑 후 자동으로 Windows 탐색기에서 드라이브가 열립니다. 진행하려면 확인을 클릭하십시오.

  3. 이제 가상 디스크가 Windows의 Z: 디스크로 마운트되었으며, VMDK 파일 내용을 읽을 수 있습니다. 아래 스크린샷에서 첫 번째 스냅샷을 찍은 후 생성된 Snapshot1.txt 파일을 볼 수 있습니다. Snapshot2.txt 파일은 두 번째 VM 스냅샷을 찍은 후 생성되었으며, 우리는 첫 번째 VM 스냅샷과 관련된 델타 가상 디스크를 열었습니다.

  4. 완료된 VMDK 가상 디스크 작업 후에 디스크를 연결 해제하지 않도록합니다. 적절한 VMDK 파일을 마우스 오른쪽 단추로 클릭한 다음 가상 디스크 연결 해제를 클릭합니다. 가상 디스크를 연결 해제한 후에는이 가상 디스크를 사용하는 VM을 전원을 켤 수 있습니다.

방법 2: 7-zip을 사용하여 VMDK 파일에서 콘텐츠를 추출하는 방법

가상 머신을 실행하지 않고 VMDK 파일을 열려면 7-zip을 설치하고 가상 디스크 이미지에서 콘텐츠를 추출 할 수 있습니다. 7-zip은 파일을 아카이브하고 아카이브 및 기타 이미지에서 파일을 해제하기 위해 제공되는 무료 도구입니다. 7zip을 vmdk 추출기로 사용할 수 있습니다. 이 도구는 Linux 및 Windows 기계에서 사용할 수 있습니다.

7-zip은 vmdk 및 –flat.vmdk 파일을 열 수 있습니다(이 유틸리티는 디스크립터 vmdk 파일이 없는 경우 단일 –flat.vmdk 파일을 열 수 있습니다) – 7-zip은 사실상 ESXi 형식의 가상 디스크를 위한 것입니다. 7-zip은 VM 스냅 샷을 찍은 후에 생성된 델타 VMDK 파일을 열 수 없습니다.

7-zip을 사용하여 VMDK 파일 열기 리눅스에서

  1. Linux 기계에 7-zip의 전체 팩을 설치하십시오. 이 예제에서는 Ubuntu를 사용합니다.

    apt-get install p7zip-full

  2. 7-zip을 사용하여 vmdk 파일의 내용을 나열합니다.

    7z l vm_name.vmdk

  3. “boot”이라는 단어를 포함하는 파일을 찾아봅시다. 예를 들어:

    7z l /media/user1/vms/WinXP-test/WinXP-test.vmdk | grep boot[.]

    user1은 우리의 Linux 사용자 이름이고, l은 목록입니다.

  4. “boot.ini” 파일을 VMDK 이미지에서 추출합시다:

    7z e /media/user1/vms/WinXP-test/WinXP-test.vmdk boot.ini

    VMDK 파일에서 다른 파일 및 디렉터리를 동일한 방식으로 추출할 수 있습니다.

VMDK 파일을 Windows에서 7-zip으로 열기

  1. 호환되는 버전의 7-zip을 공식 웹사이트에서 다운로드하여 Windows 기기에 설치하세요. 더 편리한 EXE 설치 프로그램을 사용하세요.
  2. Windows에 7-zip을 설치한 후에는 Windows 탐색기에서 파일이나 폴더를 마우스 오른쪽 버튼으로 클릭하면 새로운 7-zip 옵션이 컨텍스트 메뉴에 추가됩니다(아래 스크린샷 참조). 이 옵션을 사용하여 VMDK 파일을 아카이브로 열거나 파일을 바로 추출할 수 있습니다.

아래 스크린샷에서는 Windows에서 사용되는 7-zip GUI에서 독립 실행형 Win-test2-flat.vmdk 파일의 내용이 표시됩니다. 필요한 VMDK 내용을 추출할 수 있습니다.

리눅스에서 VMDK 파일을 마운트하는 방법(기타 방법)

리눅스의 가장 강력한 기능 중 하나는 콘솔에서 가장 많은 작업을 수행할 수 있는 능력입니다. 이러한 도구들을 사용하여 VMDK 파일을 마운트하고 가상 디스크에 저장된 내용에 액세스할 수 있습니다. 제공된 예제에서는 Ubuntu Linux를 사용합니다.방법 1: /dev/loop를 사용하여 VMDK 파일을 마운트하는 방법

루프 장치는 리눅스의 가짜 장치로, 파일을 블록 장치로 액세스할 수 있게 하며 파일 시스템을 포함하는 디스크 이미지를 마운트하는 데 사용됩니다. 루프 장치는 /dev/loopX와 같은 이름으로 지정되며 X는 루프 장치의 번호입니다. 이 방법은 가상 디스크 설명자가 없어도 –flat.vmdk 파일을 마운트하는 데 유용합니다.

예를 들어 Linux에서 VMDK 파일을 마운트하여 가상 디스크의 파일에 액세스하는 방법을 살펴보겠습니다. 하나의 파티션을 포함하는 ESXi 형식의 가상 디스크가 있으며 설명자 파일이 없습니다. 오랜 시간 전에 Windows XP가 해당 가상 디스크에 설치되었습니다.

  1. 리눅스 시스템에서 존재하는 루프 장치의 수를 확인하기 위해 두 명령 중 하나를 사용하십시오.

    fdisk -l | grep /dev/loop

    df -h | grep /dev/loop

  2. 우리의 경우, 번호가 1에서 21까지인 장치가 이미 존재합니다 (/dev/loop1/dev/loop21). 따라서 루프 장치 번호 30을 만들어보겠습니다 – 이 번호는 빈 번호입니다. 이 장치를 –flat.vmdk 파일과 연결하겠습니다.

    losetup /dev/loop30 /vms/Win-test2-flat.vmdk

  3. losetup -o 32256 /dev/loop31 /dev/loop30

    32256은 Windows XP/Server 2003 및 이전 Windows 버전에서 형식화된 디스크의 경우 63*512입니다 (63은 파티션의 첫 번째 섹터 번호이고, 512바이트는 섹터 크기입니다). Windows 7/Server 2008 및 이후 Windows 버전의 경우 오프셋으로 105906176을 시도해보세요.

    부팅 시작에 사용되는 섹터 크기 및 첫 번째 섹터에 대한 정보를 검색할 수 있습니다. 다음 명령을 사용하여:

    fdisk -l /dev/loop30 /vms/Win-test2-flat.vmdk

    다중 파티션을 포함하는 가상 디스크의 경우 parted를 사용하여 각 파티션의 시작과 끝을 결정할 수 있습니다:

    parted /dev/loop30

    parted 콘솔에서 다음 명령을 입력하세요:

    unit

    B

    print

  4. VMDK 이미지를 마운트 포인트로 사용할 디렉터리를 만듭니다:

    mkdir /mnt/vmdk-image

  5. VMDK 이미지와 연관된 루프백 디바이스를 생성된 디렉터리에 마운트합니다:

    mount /dev/loop31 /mnt/vmdk-image

  6. 마운트된 이미지의 내용을 나열합니다:

    ls -al /mnt/vmdk-image

  7. 가상 디스크의 내용 작업을 마치면 vmdk 이미지를 언마운트하고 루프 장치를 연결 해제하십시오:

    umount /mnt/vmdk-image

    losetup -d /dev/loop31

방법 2: kpartx를 사용하여 VMDK 파일을 마운트하는 방법

Kpartx는 이미지 파일 내의 파티션을 실제 Linux 파일 시스템의 디렉토리에 마운트 할 수있는 도구입니다. 이 도구는 블록 장치의 파티션에 대한 장치 매핑을 설정하는 데 사용할 수 있습니다. 이 방법은 또한 ESXi 서버에서 사용되는 –flat.vmdk 이미지를 마운트하는 데도 사용할 수 있습니다. 이전 예에서 사용된 –flat.vmdk 파일을 마운트하는 방법을 살펴 보겠습니다.

  1. kpartx를 설치하십시오:

    apt-get install kpartx

  2. 상세 작업 모드에서 VMDK 이미지의 파티션 매핑을 추가하십시오:

    kpartx -av /vms/Win-test2-flat.vmdk

  3. /mnt/vmdk-image 디렉터리에 마운트된 파티션을 준비하세요:

    mount /dev/mapper/loop30p1 /mnt/vmdk-image/

    여기서 loop30은 루프 장치의 번호이며, p1은 이미지 내 파티션의 번호입니다 (디스크 이미지의 첫 번째 파티션입니다).

  4. 마운트된 가상 디스크 파티션의 내용을 나열하세요:

    ls -al /mnt/vmdk-image/

  5. VMDK 이미지 파일의 작업이 완료되었으면, VMDK 가상 디스크 이미지를 언마운트하세요:

    umount /mnt/vmdk-image

    kpartx -d /vms/Win-test2-flat.vmdk

결론

VMDK 내용을 추출하는 여러 방법을 알고 있다면 각 상황에서 최적의 선택지가 될 수 있어 유연성과 신뢰성을 제공합니다. 또한, 해당 지식 외에도 VM의 백업을 보유하는 것이 더욱 좋습니다.

NAKIVO Backup & Replication은 VMware vSphere에서 실행되는 VM을 가장 좋은 방식으로 백업하고 복원할 수 있습니다. 백업에서 전체 VM, 특정 가상 디스크 또는 별도의 파일을 사용자 정의 위치로 복원할 수 있습니다.

Source:
https://www.nakivo.com/blog/extract-content-vmdk-files-step-step-guide/