Cách mở, gắn và trích xuất dữ liệu từ tệp VMDK
Tệp VMDK lưu trữ nội dung của đĩa cứng trên máy ảo. Nếu máy ảo không khởi động được do hệ điều hành bị hỏng, cập nhật thất bại, phần mềm độc hại hoặc lỗi cấu hình, bạn vẫn có thể truy cập dữ liệu bên trong đĩa ảo đó.
Hướng dẫn này giải thích cách mở, gắn và trích xuất dữ liệu từ tệp VMDK bằng VMware Tools cũng như các phương pháp thay thế dành cho Windows và Linux. Các phương pháp này cho phép bạn truy cập tệp mà không nhất thiết phải bật máy ảo. Lưu ý rằng các phương pháp được mô tả chỉ áp dụng cho các tệp VMDK không được mã hóa hoặc không bị hỏng nghiêm trọng.
Tệp VMDK là gì?
VMDK (Virtual Machine Disk) là định dạng tệp đĩa ảo mã nguồn mở do VMware phát triển. Các tệp ở định dạng này sử dụng phần mở rộng .vmdk và được hỗ trợ bởi VMware và VirtualBox.
Trên các máy chủ VMware ESXi, một tệp VMDK thường được lưu trữ dưới dạng hai tệp riêng biệt trên kho dữ liệu (datastore): một tệp mô tả đĩa ảo có kích thước nhỏ và một tệp phạm vi đĩa ảo chứa dữ liệu đĩa thô. Tệp mô tả thường tuân theo mẫu đặt tên diskname.vmdk, trong khi tệp vùng chứa dữ liệu thực tế được đặt tên là diskname-flat.vmdk.
Trong VMware Workstation, một đĩa ảo thường được lưu trữ dưới dạng một tệp duy nhất diskname.vmdk (định dạng thưa thớt nguyên khối). Trong trường hợp này, thông tin mô tả được nhúng trong cùng tệp lưu trữ dữ liệu đĩa. Mô tả đĩa ảo xác định cấu trúc, hình học, phiên bản phần cứng ảo và các định danh duy nhất của đĩa.
Tệp mô tả đĩa ảo
Mô tả đĩa ảo được lưu trữ dưới dạng văn bản thuần túy. Trong ảnh chụp màn hình bên dưới, phía bên trái hiển thị tệp mô tả ở định dạng ESXi (một tệp .vmdk có thể mở bằng bất kỳ trình soạn thảo văn bản nào). Phía bên phải, bạn có thể thấy dữ liệu mô tả được nhúng trong một tệp duy nhất .vmdk được tạo theo định dạng VMware Workstation. Trong trường hợp này, tệp được mở trong trình soạn thảo HEX.

Như đã trình bày, dữ liệu mô tả được nhúng trong tệp định dạng Workstation dạng khối duy nhất .vmdk bắt đầu tại vị trí dịch chuyển 0x200 (địa chỉ byte). Chuyển đổi 0x200 từ hệ thập lục phân sang hệ thập phân cho kết quả: 0x200 (HEX) = 512 (Thập phân). Điều này có nghĩa là để trích xuất mô tả đĩa nhúng từ tệp VMDK, bạn phải sao chép phần dữ liệu bắt đầu từ byte thứ 512.
Lưu ý: Bạn có thể tham khảo bài viết trên blog về việc chuyển đổi Chuyển đổi máy ảo VMware sang máy ảo Hyper-V để biết hướng dẫn chi tiết về cách trích xuất, chỉnh sửa và nhập mô tả đĩa nhúng.
Tệp dữ liệu đĩa ảo
Trong ảnh chụp màn hình bên dưới, hai tệp đĩa ảo đang được mở trong trình chỉnh sửa HEX. Cùng một hệ điều hành được cài đặt trên cả hai đĩa, và phân vùng đầu tiên được tạo và định dạng bằng công cụ quản lý đĩa tích hợp sẵn của Windows. Ở phía bên trái của ảnh chụp màn hình, tệp -flat.vmdk (định dạng ESXi) được hiển thị. Trong tệp này, dữ liệu đĩa thô bắt đầu tại vị trí 0x00000000.
Ở phía bên phải, tệp VMDK định dạng VMware Workstation được hiển thị. Trong trường hợp này, cùng một dữ liệu đĩa bắt đầu từ vị trí 0x00150000 thay vì từ đầu tệp, bởi vì bộ mô tả và siêu dữ liệu được nhúng trước nội dung đĩa thực tế.

Trước khi tiến hành mở và gắn tệp VMDK, hãy đảm bảo rằng bạn đã sao lưu dữ liệu để phòng ngừa nguy cơ hỏng đĩa.
2 phương pháp mở tệp VMDK bằng cách khởi động máy ảo
Hãy bắt đầu với các phương pháp mở tệp VMDK bằng cách khởi động máy ảo. Các phương pháp này đơn giản và có thể áp dụng rộng rãi. Tuy nhiên, chúng yêu cầu phải cài đặt trình ảo hóa (VMware ESXi, VMware Workstation, VMware Player hoặc Oracle VirtualBox) trên hệ thống máy chủ.
Phương pháp 1: Sử dụng đĩa DVD Live ngay cả khi hệ điều hành trên máy ảo không hoạt động
Phương pháp này giả định rằng máy ảo vẫn có thể khởi động từ phương tiện bên ngoài. Thay vì đĩa DVD vật lý, bạn có thể gắn hình ảnh ISO vào ổ đĩa DVD ảo của máy ảo và khởi động từ đó.
Sau khi khởi động hệ điều hành từ đĩa DVD Live, bạn có thể gắn các phân vùng của tệp VMDK và sao chép dữ liệu vào ổ USB được kết nối với máy ảo, vào máy chủ hoặc sang một hệ thống khác qua mạng. Một số bản phân phối đĩa DVD Live sẽ tự động gắn các phân vùng.
Cách tiếp cận này tương tự như việc khôi phục tệp từ máy tính vật lý khi hệ điều hành đã cài đặt không thể khởi động. Nó có thể được sử dụng để trích xuất dữ liệu từ các tệp VMDK trên VMware ESXi và VMware Workstation/Player.
Đảm bảo rằng hệ điều hành Live hỗ trợ các hệ thống tệp được sử dụng bên trong đĩa ảo. Ví dụ: Windows không hỗ trợ nguyên bản các hệ thống tệp Linux như EXT3, EXT4 hoặc ReiserFS. Tuy nhiên, các bản phân phối Live dựa trên Linux thường hỗ trợ các hệ thống tệp Windows như NTFS và FAT32, khiến chúng trở thành lựa chọn thực tế khi khôi phục dữ liệu từ một máy ảo Windows không thể khởi động.
Ví dụ: Mở tệp VMDK trên ESXi
Hãy xem xét tình huống sau: một máy ảo chạy Windows Server 2016 trên Máy chủ ESXi không thể khởi động, nhưng bạn cần truy xuất các tệp được lưu trữ trên tệp VMDK của nó. Đĩa ảo chứa hai phân vùng NTFS: phân vùng hệ thống (khởi động) và ổ đĩa chính C:. Trong ví dụ này, tệp ISO cài đặt chính thức của Ubuntu 18 được sử dụng như một đĩa DVD trực tiếp (Live DVD) để truy cập đĩa ảo và sao chép dữ liệu cần thiết.
Lưu ý: Cách tiếp cận tương tự cũng áp dụng cho các phiên bản sản phẩm mới hơn, bao gồm VMware Workstation 17, ESXi 9.0, Windows Server 2025 và Ubuntu Linux 24.04. Mặc dù các thành phần giao diện cụ thể có thể khác nhau một chút, nhưng quy trình làm việc cơ bản vẫn giữ nguyên.
- Tải lên tệp ISO vào kho dữ liệu (datastore) mà máy chủ ESXi đang chạy máy ảo có thể truy cập được.
- Mở VMware vSphere Client, chuyển đến mục “Hosts and Clusters”, chọn máy ảo của bạn và nhấp vào “Edit Settings”.

- Trong cửa sổ cài đặt máy ảo, chuyển đến phần tùy chọn ổ đĩa CD/DVD. Chọn “Datastore ISO File” nếu bạn đã có tệp ISO cần thiết trên kho dữ liệu. Sau đó, nhấp vào “Browse” và chọn tệp ISO phù hợp. Tên tệp trong trường hợp này là
ubuntu-18.04.1-desktop-amd64.iso.
- Khởi động máy ảo, khởi động từ hình ảnh ISO và chọn “Try Ubuntu Without Installing”. Sau khi Ubuntu đã khởi động từ đĩa DVD Live, mở giao diện điều khiển (Terminal).
- Nhận quyền root:
sudo -i - Liệt kê các thiết bị đĩa cứng có sẵn:
ls -al /dev/sd*Có hai phân vùng –
/dev/sda1và/dev/sda2. - Tạo các thư mục để sử dụng làm điểm gắn cho từng phân vùng:
mkdir /mnt/win-disk1 mkdir /mnt/win-disk2 - Gắn các phân vùng của đĩa ảo vào các thư mục tương ứng:
mount /dev/sda1 /mnt/win-disk1/ mount /dev/sda2 /mnt/win-disk2/ - Sau đó liệt kê các tệp và thư mục của các phân vùng đã được gắn:
ls -al /mnt/win-disk2/ ls -al /mnt/win-disk1/
Như bạn có thể thấy trong ảnh chụp màn hình ở trên, phân vùng được gắn vào
/mnt/win-disk2chính là phân vùng được sử dụng làm ổ đĩa C: trong Windows.Bạn có thể kết nối một ổ cứng USB (HDD) với máy chủ ESXi và kết nối nó với máy ảo thông qua tính năng USB passthrough để sao chép các tệp cần thiết từ tệp VMDK đã được gắn. Ngoài ra, bạn có thể sử dụng chia sẻ SMB (CIFS) và truyền các tệp qua mạng.
Trong ví dụ này, dữ liệu được sao chép vào một chia sẻ SMB được lưu trữ tại địa chỉ 192.168.17.125. Đường dẫn chia sẻ là \192.168.17.125share, và người dùng user10 có quyền ghi.
- Hãy gắn chia sẻ SMB (CIFS) trên hệ thống Linux được khởi động từ đĩa DVD trực tiếp. Đầu tiên, tạo một thư mục để sử dụng làm điểm gắn.
mkdir /mnt/smb-share - Sau đó, gắn chia sẻ SMB (CIFS) vào thư mục này:
mount -t cifs -o user=user10 //192.168.17.125/share /mnt/smb-share - Nhập mật khẩu của người dùng.
- Bây giờ, hệ thống Linux của bạn đã kết nối với chia sẻ SMB, và bạn có thể sao chép các nội dung cần thiết được lưu trữ bên trong tệp VMDK sang chia sẻ SMB qua mạng.
Hãy chuyển đến thư mục mà chia sẻ SMB được gắn vào và sao chép tệp bootmgr từ phân vùng đã được gắn của đĩa ảo (tệp VMDK trên kho dữ liệu ESXi) vào thư mục hiện tại (chia sẻ SMB).
cd /mnt/smb-share cp /mnt/win-disk-2/bootmgr
- Đảm bảo rằng các tệp cần thiết đã được sao chép, và kiểm tra nội dung của chia sẻ SMB.
ls -al /mnt/smb-share
Như Như thể hiện trong ảnh chụp màn hình ở trên, tệp bootmgr đã được sao chép thành công. Điều này minh họa phương pháp đầu tiên để sao chép dữ liệu từ tệp VMDK khi hệ điều hành trên máy ảo (VM) không thể khởi động. Cách tiếp cận tương tự có thể được áp dụng trong VMware Player và VMware Workstation.
Phương pháp 2: Gắn tệp VMDK dưới dạng đĩa ảo vào một máy ảo đang hoạt động bình thường (ESXi/Workstation/Player)
Phương pháp này tương tự như phương pháp trước, nhưng thay vì khởi động từ phương tiện bên ngoài, bạn sẽ gắn tệp VMDK vào một máy ảo hiện có đang chạy hệ điều hành hoạt động bình thường. Tệp VMDK có thể được thêm vào dưới dạng đĩa ảo bổ sung cho một máy ảo đang chạy trên VMware ESXi, VMware Workstation hoặc VMware Player.
Nếu bạn cần mở tệp VMDK từ một máy ảo ESXi trong VMware Workstation hoặc Player, hãy sao chép cả tệp mô tả và tệp vùng (vmdk và -flat.vmdk) vào một đĩa cục bộ mà máy chủ nơi cài đặt Workstation hoặc Player có thể truy cập được. Nếu máy ảo nguồn có ảnh chụp nhanh, hãy đảm bảo sao chép cả các tệp VMDK delta (chênh lệch) liên quan, ngoài các tệp đĩa gốc.
Các ví dụ sau đây minh họa phương pháp này:
- Ví dụ 1: Mở tệp VMDK của một máy ảo bằng cách gắn nó vào một máy ảo khác trên cùng một máy chủ ESXi.
- Ví dụ 2: Trích xuất dữ liệu từ tệp VMDK của một máy ảo ESXi bằng cách gắn nó vào một máy ảo đang chạy trên VMware Workstation.
Đảm bảo hệ điều hành của máy ảo đang hoạt động bình thường hỗ trợ các hệ thống tệp được sử dụng trong tệp VMDK đã gắn. Nếu không, các phân vùng có thể không truy cập được.
Ví dụ 1: Gắn đĩa ảo vào một máy ảo đang chạy trên ESXi
- Tắt nguồn máy ảo mà bạn muốn truy cập đĩa ảo để trích xuất tệp từ đó.
- Tìm đĩa ảo trong kho dữ liệu (datastore) của ESXi.
- Sao chép đĩa ảo sang một thư mục khác trên cùng một kho dữ liệu hoặc sang một kho dữ liệu khác để tránh các vấn đề liên quan đến khóa đĩa. Trong ví dụ này, chúng ta sẽ mở tệp VMDK có tên
Win-test2.vmdk, thuộc về máy ảo Windows Win-test2. Máy chủ ESXi được quản lý bởi vCenter. Nếu bạn đang sử dụng máy chủ ESXi độc lập mà không có vCenter, quy trình thực hiện vẫn giống nhau; chỉ có giao diện người dùng là khác biệt. - Mở VMware vSphere Client, chuyển đến mục Storage và chọn kho dữ liệu (datastore) chứa tệp VMDK cần thiết. Chọn tệp VMDK và nhấp vào Copy To.
Lưu ý: Nếu bạn đang sử dụng máy chủ ESXi độc lập không có vCenter, hãy mở VMware Host Client bằng cách nhập địa chỉ IP của máy chủ ESXi vào trình duyệt web. Sau đó, truy cập vào Storage > [Datastore Name] > Datastore Browser, chọn tệp VMDK và nhấp vào Copy. Chọn vị trí đích và xác nhận thao tác.
Bạn cũng có thể sao chép các tệp bằng cách truy cập trực tiếp vào giao diện điều khiển ESXi hoặc kết nối qua SSH.

- Trong cửa sổ vừa mở, chọn vị trí đích. Bạn có thể sao chép tệp VMDK vào một vị trí trên cùng một kho dữ liệu hoặc sang một kho dữ liệu khác. Trong ví dụ này, tệp được sao chép vào thư mục gốc của cùng một datastore. Cả tệp mô tả
.vmdkvà tệp-flat.vmdkđều được sao chép.
- Gắn tệp VMDK vào một máy ảo (VM) đang hoạt động bình thường với hệ điều hành đang chạy. Trong ví dụ này, một máy ảo (WinServer2016) chạy Windows Server 2016 trên cùng một máy chủ ESXi được sử dụng. Đĩa ảo có thể được gắn trong khi máy ảo đang chạy.
Trong vSphere Client, điều hướng đến Hosts and Clusters, chọn máy ảo hoạt động bình thường, nhấp chuột phải vào nó và chọn Edit Settings.

- Trong cửa sổ hiện ra, nhấp vào Add New Device và chọn Existing Hard Disk.

- Chọn bản sao tệp VMDK mà bạn đã tạo trước đó. Trong ví dụ hiện tại, bản sao của
Win-test2.vmdknằm trong thư mục gốc của kho dữ liệu đã được chọn.
- Bật nguồn máy ảo (VM) đang hoạt động bình thường mà đĩa ảo đã được gắn vào, nếu máy ảo đó chưa đang chạy. Trong ví dụ này, đĩa ảo được thêm vào trong khi máy ảo Windows Server 2016 đang chạy (thêm nóng).
- Trong hệ điều hành Windows trên máy ảo, truy cập “Quản lý Máy tính” > “Quản lý Đĩa” (hoặc chạy lệnh
diskmgmt.msctrong dòng lệnh) và tìm đĩa ảo đã được gắn. Theo mặc định, đĩa mới sẽ ở trạng thái ngoại tuyến. Nhấp chuột phải vào đĩa và chọn “Online”. Một ký tự ổ đĩa sẽ được gán tự động cho các phân vùng; nếu không, hãy nhấp chuột phải vào phân vùng và chọn “Change Drive Letter and Paths”.
Bây giờ bạn đã có quyền truy cập đọc/ghi đầy đủ vào các tệp và thư mục trên tệp VMDK đã được gắn. Mở đĩa đã gắn trong Windows Explorer và sao chép dữ liệu cần thiết.
Bạn cũng có thể xóa các tệp không cần thiết (ví dụ: các tệp liên quan đến phần mềm độc hại), nhưng hãy thực hiện cẩn thận. Nếu tệp VMDK có các bản chụp nhanh (snapshot) liên quan, việc sửa đổi hoặc xóa dữ liệu có thể ảnh hưởng đến tính nhất quán của bản chụp nhanh.

Ví dụ 2: Gắn đĩa ảo vào một máy ảo (VM) đang chạy trên VMware Workstation hoặc Player
Ví dụ này tương tự như ví dụ trước, nhưng sử dụng một máy ảo đang chạy trên VMware Workstation để mở tệp VMDK của một máy ảo ESXi. Phương pháp này rất hữu ích khi có không gian trống không đủ trên kho dữ liệu ESXi để tạo bản sao của đĩa ảo.
Trong trường hợp này, đĩa ảo của VM Win-test2 đã đề cập trước được gắn vào một VM máy trạm VMware để trích xuất dữ liệu của nó.
- Trong VMware vSphere Client, hãy đi đến Lưu trữ > [Datastore name] > Tệp, chọn tệp VMDK của bạn và nhấn Tải xuống.
Như đã đề cập trước đó, một đĩa ảo ESXi bao gồm một tệp mô tả (
.vmdk) và một tệp mở rộng (-flat.vmdk). Bạn phải tải xuống cả hai tệp vào máy mà VMware Workstation hoặc VMware Player đã cài đặt. Khi tải đĩa ảo từ kho dữ liệu ESXi bằng HTML5 vSphere Client, các tệp này được đóng gói tự động thành một tệp ZIP.Ngoài ra, bạn có thể kích hoạt quyền truy cập SSH trên máy chủ vật lý ESXi, điều hướng đến thư mục kho dữ liệu và sao chép thủ công cả hai tệp đĩa vào máy tính của bạn bằng một ứng dụng SCP như WinSCP.
Lưu ý: Khi tải xuống một cung cấp theo nhu cầu đĩa ảo từ một kho dữ liệu VMFS, tệp
-flat.vmdkkết quả sẽ mở rộng đến kích thước được cung cấp đầy đủ, tương tự như một đĩa có phân bổ dày. Điều này xảy ra vì phân bổ mỏng được thực hiện ở cấp độ Hệ thống tệp VMFS.
Bạn có thể thấy hai tệp đĩa ảo ESXi đã được tải xuống dưới dạng tệp ZIP. Kích thước của đĩa phân bổ mỏng trên kho dữ liệu VMFS khoảng 2 GB (xem hình chụp màn hình bên trên), trong khi cùng một đĩa tải xuống máy trạm khoảng 8 GB (xem hình chụp màn hình dưới đây).
- Giải nén hai tệp từ tệp ZIP. Theo mặc định, chúng được giải nén vào một thư mục có tên
Win-test2.vmdk, khớp với tên của tệp ZIP mà không bao gồm phần mở rộng tệp.
- Ở bước này, bạn cần một VM khỏe mạnh với hệ điều hành hoạt động trên máy mà VMware Workstation hoặc VMware Player đã được cài đặt. Trong ví dụ trước, một VM chạy Windows Server 2016 đã được sử dụng; trong ví dụ này, một VM chạy Windows Server 2008 được sử dụng. Quy trình làm việc tương tự cho các phiên bản Windows mới hơn.
Mở VMware Workstation hoặc VMware Player, chọn VM của bạn và chỉnh sửa cài đặt máy ảo.

- Trong tab Phần cứng, nhấn nút Thêm.

- Trong Trình hướng dẫn Thêm phần cứng, chọn Đĩa ảo làm loại phần cứng. Sau đó, chọn loại đĩa (bạn có thể để giá trị được gọi là đề xuất). Trên màn hình Chọn một Đĩa, chọn Sử dụng một đĩa ảo hiện có.

- Chọn tệp vmdk (không –
flat.vmdk) mà bạn đã giải nén từ tệp ZIP. Bạn có thể duyệt tìm tệp hoặc nhập đường dẫn tệp theo cách thủ công.
Trong ví dụ này, chúng tôi sử dụng ESXi 6.5 và VMware Workstation 15. Máy ảo VMware Workstation chạy Windows Server 2008 sử dụng phiên bản phần cứng 12 (phiên bản máy ảo 12), trong khi máy ảo ESXi — máy ảo mà đĩa ảo đang được gắn vào — sử dụng phiên bản máy ảo 7. Quy trình thực hiện cũng tương tự đối với các phiên bản mới hơn.
- Khi cố gắng gắn đĩa ảo trong VMware Workstation, thông báo lỗi tương thích sau sẽ xuất hiện:
Đĩa ảo đã chọn không tương thích với máy ảo Workstation 12.x này. Việc thêm đĩa này sẽ khiến máy ảo này không tương thích với các sản phẩm VMware cũ hơn.

Bạn có thể khắc phục lỗi này bằng cách chỉnh sửa tệp mô tả đĩa (tệp vmdk nhẹ trong trường hợp đĩa ảo của máy ảo ESXi). Mở tệp VMDK của bạn trong trình soạn thảo văn bản và thay đổi số trong chuỗi `
Ddb.virtualHWVersion`. Trong trường hợp của chúng tôi, số 13 được thay đổi thành 12.Lưu ý: Hãy nhớ rằng đối với các máy ảo VMware Workstation, tệp mô tả đĩa ảo được nhúng trực tiếp trong tệp VMDK (khác với các đĩa ảo ESXi, vốn sử dụng tệp mô tả riêng biệt).

Sau khi chỉnh sửa tệp, đĩa ảo sẽ được thêm thành công vào máy ảo hiện có.
- Khởi động máy ảo.
- Mở Quản lý đĩa trong Windows, chuyển trạng thái đĩa ảo sang trực tuyến, gán ký tự ổ đĩa cho phân vùng và duyệt các tệp.

Cách trích xuất dữ liệu từ tệp VMDK mà không cần khởi động máy ảo
Các phương pháp không yêu cầu khởi động máy ảo mang lại nhiều lợi ích thiết thực. Trong một số trường hợp, thậm chí không cần đến trình ảo hóa. Thay vào đó, bạn có thể gắn tệp VMDK trực tiếp vào hệ điều hành máy chủ và truy cập nội dung của nó một cách nhanh chóng.
Phương pháp 1: Gắn tệp VMDK vào hệ điều hành chủ bằng VMware Workstation
Phương pháp này yêu cầu VMware Workstation phải được cài đặt trên máy chủ Windows hoặc Linux. VMware Workstation có tính năng cho phép bạn gắn tệp VMDK trực tiếp vào hệ điều hành chủ. Các đĩa định dạng ESXi và đĩa delta liên quan đến ảnh chụp nhanh (snapshot) đều được hỗ trợ. Giống như các phương pháp trước đó, hệ điều hành chủ phải hỗ trợ các hệ thống tệp được sử dụng trong các phân vùng đĩa ảo.
Khi tạo bản sao lưu (snapshot), các đĩa ảo delta (so sánh) sẽ được tạo ra. Để truy cập trạng thái của một máy ảo (VM) tại một bản sao lưu cụ thể, cả đĩa gốc và các đĩa delta tương ứng đều phải có sẵn. Trong trường hợp này, bạn nên gắn đĩa delta phù hợp vào hệ điều hành máy chủ. Các phụ thuộc vào đĩa gốc sẽ được giải quyết tự động.
Nếu các bản sao lưu đã tồn tại nhưng bạn muốn gắn đĩa gốc trực tiếp, hãy sử dụng chế độ chỉ đọc. Việc sửa đổi đĩa gốc có thể làm hỏng các bản chụp nhanh hoặc các bản sao liên kết được tạo từ máy ảo đó. Chế độ chỉ đọc ngăn chặn các thao tác ghi sau khi đĩa được gắn. Bạn chỉ có thể gắn tệp VMDK khi máy ảo đang sử dụng nó đã tắt nguồn, hoặc khi không có máy ảo nào đang sử dụng đĩa đó.
Ví dụ sau đây minh họa cách gắn tệp VMDK từ một máy ảo VMware Workstation có các bản chụp nhanh. Trong tình huống này, Windows được cài đặt trên một phân vùng NTFS duy nhất. Sau ảnh chụp nhanh đầu tiên, một tệp có tên Snapshot1.txt đã được tạo trong thư mục gốc của ổ C:. Sau ảnh chụp nhanh thứ hai, tệp Snapshot2.txt đã được tạo. Ví dụ đầu tiên sử dụng Linux, còn ví dụ thứ hai sử dụng Windows. Các tệp đĩa ảo của một máy ảo Windows XP cũ hơn được sử dụng, nhưng nguyên tắc tương tự cũng áp dụng cho các phiên bản Windows khác.
Ví dụ 1: Gắn đĩa ảo VMDK trên máy chủ Linux
- Mở VMware Workstation cho Linux và vào File > Gắn đĩa ảo.

- Nhấp vào Mount Disk. Trong cửa sổ bật lên, nhấp vào Browse và chọn tệp VMDK.

- Chọn tệp VMDK của đĩa delta (đĩa chênh lệch) thứ hai được tạo sau bản chụp nhanh thứ hai của máy ảo. Trong các trường hợp như vậy, tên tệp theo mẫu
VM_name-000002.vmdk(ví dụ,WinXP-test-000002.vmdk).
- Tạo một thư mục trên hệ thống tệp Linux để sử dụng làm điểm mount cho tệp VMDK. Hãy tạo thư mục
/mnt/vmdk/ trong bảng điều khiển Linux.mkdir /mnt/vmdk/ - Đặt quyền thích hợp cho người dùng của bạn (trong ví dụ này, tên người dùng là user1, thuộc nhóm group1):
chown -R user1:group1 /mnt/vmdk/ chmod -R 0775 /mnt/vmdk/ - Bây giờ, chọn thư mục bạn đã tạo làm thư mục mục tiêu, kiểm tra ô “Gắn kết ở chế độ chỉ đọc” và nhấp vào Mount.

- Bây giờ bạn có thể mở thư mục
/mnt/vmdk/ trong trình duyệt tệp Linux của mình và duyệt các tệp được lưu trữ trên tệp VMDK đã gắn kết. Các tệp Snapshot1.txt và Snapshot2.txt, được tạo sau ảnh chụp nhanh đầu tiên và thứ hai trong ví dụ này, hiện ra. Mỗi tệp nằm trên một đĩa delta VMDK riêng biệt.
- Đừng quên bỏ gắn kết tệp VMDK khỏi thư mục (điểm mount) trên máy chủ vật lý Linux sau khi hoàn tất các thao tác.

Trong ví dụ này, tệp VMDK đã được gắn kết và bỏ gắn kết thành công trên Ubuntu 22.04 sử dụng VMware Workstation 17.0.
Lưu ý: Ubuntu 24.04 sử dụng một kernel Linux mới hơn (6.8 hoặc muộn hơn), điều này có thể ảnh hưởng đến sự tương thích với các mô-đun kernel độc quyền của VMware. Trong một số trường hợp, bạn có thể gặp lỗi: “VMware-fuseUI không phản hồi.”
Điều này xảy ra bởi vì việc gắn kết một tệp VMDK trên Linux phụ thuộc vào một thành phần của VMware tích hợp với lớp Hệ thống tệp trong không gian người dùng (FUSE). Nếu mô-đun FUSE cần thiết hoặc quy trình hỗ trợ không khởi tạo đúng cách, giao diện gắn kết có thể ngừng phản hồi.
Nếu có sự cố tương thích xảy ra, hãy cân nhắc sử dụng phiên bản kernel được hỗ trợ hoặc một bản phát hành VMware Workstation trước đó. Theo dõi tài liệu chính thức của VMware để cập nhật liên quan đến hỗ trợ gắn kết đĩa.
Nếu bạn thích sử dụng giao diện bảng điều khiển, bạn có thể gắn kết một tệp VMDK với lệnh sau đây:
vmware-mount /media/user1/vms/vm_name/vm_disk_name-000002.vmdk /mnt/vmdk
Nơi:
vm_name là tên của máy ảo (giống như tên thư mục VM). WinXP-test là tên VM trong ví dụ này.
vm_disk_name là tên của đĩa ảo (WinXP-test.vmdk trong ví dụ này).
vm_disk_name-000001.vmdk là đĩa delta đầu tiên (khác biệt) được tạo sau ảnh chụp nhanh đầu tiên của VM (WinXP-test-000001.vmdk).
vm_disk_name-000002.vmdk là đĩa delta thứ hai được tạo sau khi chụp ảnh nhanh thứ hai (WinXP-test-000002.vmdk).
- Lắp đĩa ảo. Theo mặc định, đĩa ảo được gắn kết ở chế độ đọc/ghi. Bạn có thể sử dụng tùy chọn -r trong dòng lệnh để gắn đĩa ở chế độ chỉ đọc.
vmware-mount /media/user1/vms/vm_name/vm_disk_name-000002.vmdk /mnt/vmdk - Liệt kê tất cả các tệp VMDK đã được gắn:
vmware-mount -L - Trước khi hoàn tất công việc với các tệp VMDK đã được gắn, hãy ngắt kết nối tất cả các đĩa ảo:
vmware-mount -x
Ví dụ 2: Cách gắn tệp VMDK trên máy chủ Windows
Quy trình gắn tệp VMDK trên Windows cũng tương tự. Trong VMware Workstation, bạn có thể sử dụng tùy chọn File > Map Virtual Disks trong giao diện người dùng đồ họa (GUI). Hoặc, nhấp chuột phải vào tệp VMDK trong Windows Explorer và chọn Map Virtual Disk từ menu ngữ cảnh.
Trong ví dụ này, tệp VMDK của đĩa delta (đĩa chênh lệch) đầu tiên được tạo sau bản chụp nhanh đầu tiên đã được gắn. Các tệp này tuân theo mẫu đặt tên VM_name-000001.vmdk ( WinXP-test-000001.vmdk trong ví dụ này).
Lưu ý: Tính năng gắn đĩa ảo dưới dạng ổ đĩa trong Windows đã bị loại bỏ trong VMware Workstation 17.0 dành cho hệ điều hành Windows. Phiên bản mới nhất của VMware Workstation dành cho Windows hỗ trợ tính năng này là 16.1.2. Tính năng này vẫn tồn tại trong phiên bản mới nhất của VMware Workstation dành cho Linux (từ 17.5 trở lên).
- Nhấp chuột phải vào tệp VMDK trong Windows Explorer và chọn “Map Virtual Disk” (Gắn đĩa ảo).

- Chọn các thông số phù hợp để gắn tệp VMDK. Nên mở đĩa ở chế độ chỉ đọc để tránh gây hư hỏng tiềm ẩn cho các đĩa ảo trong chuỗi ảnh chụp nhanh.
Theo mặc định, ký tự ổ đĩa được đặt là Z:, và đĩa có thể được mở tự động trong Windows Explorer sau khi gắn nếu hộp kiểm tương ứng được chọn. Nhấp OK để tiếp tục.

- Bây giờ đĩa ảo đã được gắn vào ổ Z: trong Windows và bạn có thể xem nội dung của nó. Trong hình chụp màn hình bên dưới, bạn có thể thấy tệp Snapshot1.txt được tạo sau khi thực hiện ảnh chụp nhanh đầu tiên. Tệp Snapshot2.txt không xuất hiện vì nó được tạo sau ảnh chụp nhanh thứ hai, và đĩa delta đã được gắn tương ứng với ảnh chụp nhanh đầu tiên.

- Khi hoàn tất việc làm việc với tệp VMDK đã được ánh xạ, đừng quên ngắt kết nối đĩa. Nhấp chuột phải vào tệp VMDK tương ứng và chọn “Disconnect Virtual Disk” (Ngắt kết nối đĩa ảo). Sau khi ngắt kết nối đĩa ảo, bạn có thể khởi động máy ảo (VM) sử dụng đĩa đó.

Phương pháp 2: Sử dụng 7-Zip để trích xuất nội dung từ các tệp VMDK
Nếu bạn cần mở tệp VMDK mà không cần chạy máy ảo, bạn có thể sử dụng 7-Zip để trích xuất dữ liệu từ hình ảnh đĩa ảo. 7-Zip là một trình lưu trữ file miễn phí có thể mở và trích xuất nội dung từ các định dạng archive khác nhau và ảnh đĩa. Nó có thể được sử dụng trên cả hệ thống Windows và Linux.
7-Zip có thể mở các file .vmdk và -flat.vmdk (kể cả khi file -flat.vmdk độc lập nếu file mô tả bị thiếu), điều này thường áp dụng cho đĩa định dạng ESXi. Tuy nhiên, 7-Zip không hỗ trợ mở file VMDK delta (chênh lệch) được tạo sau snapshot VM.
Cách mở file VMDK bằng 7-Zip trên Linux
- Cài đặt phiên bản đầy đủ của 7-Zip trên máy Linux của bạn. Trong ví dụ này, Ubuntu được sử dụng.
apt-get install p7zip-full - Liệt kê nội dung của file VMDK với 7-Zip
7z l vm_name.vmdk - Tìm các file có chứa “boot.” trong tên của chúng.
7z l /media/user1/vms/WinXP-test/WinXP-test.vmdk | grep boot[.]user1 là tên người dùng Linux này, l – danh sách.

- Hãy trích xuất (e) file
boot.initừ ảnh VMDK:7z e /media/user1/vms/WinXP-test/WinXP-test.vmdk boot.ini
Bạn có thể trích xuất các file và thư mục khác từ file VMDK tương tự.
Cách mở file VMDK bằng 7-Zip trên Windows
- Tải phiên bản tương thích của 7-Zip từ trang web chính thức và cài đặt ứng dụng trên máy Windows của bạn. Sử dụng trình cài đặt EXE để thuận tiện hơn.

- Trong ảnh chụp màn hình dưới đây, nội dung của file
Win-test2-flat.vmdkđộc lập được hiển thị trong giao diện người dùng của 7-Zip. Bạn có thể trích xuất nội dung file VMDK mà bạn cần.
Bạn cũng có thể xem video này để học cách mở file VMDK trên VMware và trích xuất dữ liệu VMDK:
Cách Mount Files VMDK trên Linux (Các phương pháp khác)
Linux cung cấp các công cụ dòng lệnh mạnh mẽ cho phép bạn thực hiện các hoạt động ổ đĩa nâng cao trực tiếp từ bảng điều khiển. Những tiện ích tích hợp này có thể được sử dụng để mount file VMDK và truy cập dữ liệu lưu trữ trên đĩa ảo. Các ví dụ dưới đây sử dụng Ubuntu Linux.
Phương pháp 1: Cách mount file VMDK bằng cách sử dụng /dev/loop
Thiết bị vòng lặp là pseudo-devices trong Linux cho phép file được truy cập như thiết bị block. Chúng thường được sử dụng để mount ảnh đĩa chứa hệ thống tệp. Thiết bị vòng lặp được đặt tên là /dev/loopX, trong đó X đại diện cho số thứ tự thiết bị. Phương pháp này phù hợp để mount các file -flat.vmdk, kể cả khi file mô tả bị thiếu.
Ví dụ sau đây minh họa cách mount một file VMDK trong Linux để truy cập nội dung của nó. Trong trường hợp này, một đĩa ảo định dạng ESXi với một phân vùng duy nhất được sử dụng, và file mô tả không có sẵn. Ban đầu, đĩa này chứa bản cài đặt Windows XP.
- Sử dụng một trong hai lệnh dưới đây để kiểm tra số lượng thiết bị vòng lặp hiện có trên hệ thống Linux của bạn.
fdisk -l | grep /dev/loop df -h | grep /dev/loop - Trong trường hợp này, các thiết bị có số từ 1 đến 21 đã tồn tại (
/dev/loop1–/dev/loop21). Tạo thiết bị vòng lặp số 30 vì nó còn trống. Thiết bị này có thể được liên kết với tệp –flat.vmdklosetup /dev/loop30 /vms/Win-test2-flat.vmdk - Đặt độ lệch:
losetup -o 32256 /dev/loop31 /dev/loop30Ở đây, 32256 là độ lệch được tính theo công thức 63 × 512 đối với các đĩa được định dạng trong Windows XP, Windows Server 2003 và các phiên bản trước đó. Trong trường hợp này, 63 là sector bắt đầu của phân vùng, và 512 byte là kích thước sector. Đối với Windows 7, Windows Server 2008 và các phiên bản mới hơn, hãy sử dụng độ lệch là 105906176.
Bạn có thể lấy thông tin về kích thước sector và sector đầu tiên được sử dụng để khởi động bằng lệnh:
fdisk -l /dev/loop30 /vms/Win-test2-flat.vmdk
Ngoài ra, đối với các đĩa ảo chứa nhiều phân vùng, bạn có thể sử dụng parted để xác định điểm bắt đầu và kết thúc của từng phân vùng:
parted /dev/loop30Trong giao diện dòng lệnh parted, nhập các lệnh sau:
unit B print
- Tạo thư mục sẽ được sử dụng làm điểm gắn cho hình ảnh VMDK:
mkdir /mnt/vmdk-image - Gắn thiết bị loopback liên kết với hình ảnh VMDK:
mount /dev/loop31 /mnt/vmdk-image - Liệt kê nội dung của hình ảnh đã gắn:
ls -al /mnt/vmdk-image - Sau khi hoàn tất, hãy tháo gắn hình ảnh VMDK và ngắt kết nối thiết bị vòng lặp:
umount /mnt/vmdk-image losetup -d /dev/loop31
Phương pháp 2: Cách gắn tệp VMDK bằng kpartx
Kpartx là công cụ có thể gắn các phân vùng trong tệp hình ảnh vào các thư mục của hệ thống tệp Linux thực. Công cụ này có thể được sử dụng để thiết lập ánh xạ thiết bị cho các phân vùng của thiết bị khối. Phương pháp này cũng cho phép gắn –flat.vmdk các hình ảnh được sử dụng trên máy chủ ESXi.
- Cài đặt kpartx:
apt-get install kpartx - Thêm ánh xạ phân vùng cho tệp hình ảnh VMDK ở chế độ hoạt động chi tiết:
kpartx -av /vms/Win-test2-flat.vmdk - Gắn phân vùng vào thư mục
/mnt/vmdk-image:mount /dev/mapper/loop30p1 /mnt/vmdk-image/Trong đó loop30 là số của thiết bị vòng lặp và p1 là số của phân vùng bên trong tệp hình ảnh (phân vùng đầu tiên trên tệp hình ảnh đĩa).
- Liệt kê nội dung của phân vùng đĩa ảo:
ls -al /mnt/vmdk-image/
- Sau khi hoàn tất, hãy tháo gắn tệp hình ảnh đĩa ảo VMDK.
umount /mnt/vmdk-image kpartx -d /vms/Win-test2-flat.vmdk
Phương pháp 3: Sử dụng Thiết bị khối mạng (NBD) của QEMU
Phương pháp này sử dụng tiện ích QEMU để hiển thị tệp VMDK dưới dạng một thiết bị khối tiêu chuẩn /dev/nbdN, từ đó nhân Linux có thể gắn kết trực tiếp. Bạn không cần cài đặt VMware Workstation để sử dụng phương pháp này. Cần có quyền root.
- Tắt máy ảo để tránh hỏng đĩa ảo.
- Cài đặt gói tiện ích QEMU, bao gồm qemu-nbd.
sudo apt install qemu-utils - Tải mô-đun nhân Network Block Device:
sudo modprobe nbd - Ánh xạ tệp VMDK vào Network Block Device, ví dụ:
/dev/nbd0. Sử dụng tùy chọn -r để chỉ đọc.sudo qemu-nbd -r -c /dev/nbd0 /path/to/your/disk.vmdkTrong ví dụ này, lệnh là:
sudo qemu-nbd -r -c /dev/nbd0 /media/user1/data/vms/WinXP-test/WinXP-test.vmdk - Xác định các phân vùng trên đĩa ảo đã gắn:
sudo fdisk -l /dev/nbd0Trong kết quả hiển thị, bạn sẽ thấy các phân vùng như
/dev/nbd0p1,/dev/nbd0p2, v.v. - Tạo điểm gắn:
sudo mkdir -p /mnt/vmdkĐặt quyền truy cập cho người dùng cụ thể nếu cần.
- Gắn phân vùng. Trong ví dụ này, phân vùng 1 chứa dữ liệu:
sudo mount /dev/nbd0p1 /mnt/vmdk
- Bây giờ bạn có thể truy cập nội dung tệp VMDK tại
/mnt/vmdk/. - Sau khi hoàn tất, hãy gỡ gắn khối lượng và ngắt kết nối thiết bị NBD:
sudo umount /mnt/vmdk sudo qemu-nbd -d /dev/nbd0
Phương pháp 4: Sử dụng guestmount để gắn tệp VMDK
guestmount là một công cụ đáng tin cậy để truy cập nội dung VMDK trên Linux vì nó xử lý cấu trúc đĩa một cách thông minh, bao gồm các phân vùng và khối lượng logic. Công cụ này không yêu cầu tính toán độ lệch thủ công như các công cụ cũ, chẳng hạn như /dev/loop. Bạn phải có quyền root để sử dụng phương pháp này.
- Cài đặt gói libguestfs-tools. Gói này chứa tiện ích guestmount.
sudo apt install libguestfs-tools - Tắt máy ảo (VM) mà bạn muốn gắn đĩa ảo của nó.
- Tạo một thư mục trên máy chủ Linux của bạn để truy cập nội dung đĩa:
mkdir /mnt/vmdkLưu ý: Nếu bạn muốn truy cập nội dung của các tệp VMDK với tư cách người dùng thông thường (không phải root), bạn có thể thực hiện các cấu hình bổ sung.
- Chỉnh sửa tệp cấu hình FUSE. Mở tệp
/etc/fuse.confbằng trình soạn thảo văn bản với quyền root:sudo nano /etc/fuse.conf - Bỏ dấu # ở đầu dòng
#user_allow_otherđể kích hoạt dòng này trong tệp cấu hình. Chỉ cần xóa ký tự # ở đầu dòng. - Lưu thay đổi và đóng tệp (thoát khỏi trình soạn thảo văn bản).
- Tùy chọn, bạn có thể thêm người dùng thông thường của mình vào nhóm fuse:
sudo usermod -aG fuse $USER
- Chỉnh sửa tệp cấu hình FUSE. Mở tệp
- Kiểm tra tệp VMDK. Trước khi gắn, bạn nên xem các phân vùng bên trong VMDK. Sử dụng tiện ích virt-filesystems:
virt-filesystems -a /path/to/your/disk.vmdkTrong trường hợp này:
virt-filesystems -a /media/user1/data/vms/WinXP-test/WinXP-test.vmdkTrong kết quả hiển thị, bạn sẽ thấy các phân vùng (
/dev/sda1,/dev/sda2, vv.) và hệ thống tập tin của chúng. - Gắn VMDK bằng guestmount. Bạn có hai cách chính để sử dụng guestmount: Kiểm tra Tự động hoặc Gắn Phân vùng Thủ công. Hãy sử dụng cách gắn phân vùng thủ công (cho các phân vùng cụ thể)
Nếu bạn chỉ cần một phân vùng duy nhất, bạn có thể xác định trực tiếp nó:
sudo guestmount -a /path/to/your/disk.vmdk -m /dev/sdaN --ro /mount_point/Trong ví dụ của chúng tôi, lệnh chính xác là:
sudo guestmount -a /media/user1/data/vms/WinXP-test/WinXP-test.vmdk -m /dev/sda1 --ro /mnt/vmdk/Nếu bạn muốn truy cập nội dung của tệp VMDK đã gắn như một người dùng thông thường và truy cập các tệp trong giao diện đồ họa của Linux, sử dụng lệnh:
sudo guestmount -a /media/user1/data/vms/WinXP-test/WinXP-test.vmdk -m /dev/sda1 --ro -o allow_other /mnt/vmdk/ - Bây giờ, bạn có thể xem, điều hướng và sao chép các tệp từ VMDK như thể đó là một thư mục cục bộ trong console Linux:
ls -al /mnt/vmdk - Tháo đĩa ảo sau khi hoàn thành:
sudo guestunmount /mnt/vmdk/
Bạn có thể sử dụng phương pháp FUSE thay thế”
sudo fusermount -u /mnt/vmdk/
Kết luận
Hiểu cách mở và trích xuất dữ liệu từ tệp VMDK là rất quan trọng khi một máy ảo thất bại hoặc không thể truy cập. Biết nhiều phương pháp truy cập nội dung VMDK cung cấp sự linh hoạt, vì mỗi phương pháp có thể phù hợp hơn với từng tình huống cụ thể. Đồng thời, duy trì các bản sao lưu đáng tin cậy của các máy ảo cũng quan trọng để đảm bảo luôn có sẵn dữ liệu và đơn giản hóa việc phục hồi.