VirtualBox, nhập OVA và lỗi E_INVALIDARG 0x80070057
Cập nhật: 9 tháng 12, 2025
Gần đây, tôi gặp một vấn đề mới trong cuộc phiêu lưu ảo hóa. Tôi muốn xuất một máy ảo Linux để dùng trên máy chủ khác. Trên giấy, chức năng có trong VirtualBox. File > Export Appliance. Sau đó, chọn máy ảo mong muốn, quyết định định dạng, cấu hình địa chỉ MAC, và để VirtualBox tạo file ova. Trên máy chủ đích, bạn nhập appliance này.
Tôi thử làm và gặp lỗi. GUI báo E_INVALIDARG 0x80070057, không quá nhiều chi tiết. Đọc qua các ticket trên diễn đàn VirtualBox, tôi biết có thể có nhiều vấn đề khác nhau gây thất bại khi nhập. Thay vì giải quyết từng vấn đề tiềm ẩn một, tôi chọn đường khác. Nhập máy thủ công, không dùng quy trình OVA. Để tôi chỉ cho bạn.
OVA chỉ là một file nén
Về mặt kỹ thuật, appliance là tất cả dữ liệu máy ảo được gói gọn vào một file. Bên trong, bạn có ổ cứng ảo (và các snapshot), file manifest máy ảo, v.v. Không có bí mật gì. Quy trình nhập chỉ giải nén những thứ này, phân tích file cấu hình (.vbox), và nếu có lỗi không thể giải quyết, như đường dẫn ổ CD ảo hay thư mục chia sẻ, nó sẽ dừng lại.
Vì vậy, chúng ta có thể làm thủ công như nhau.
Bước 1: Tạo bản sao (clone) máy ảo
Lý do bạn muốn làm này: cho phép clone chỉ snapshot mới nhất, nếu bạn dùng. Điều này làm máy ảo mới nhỏ hơn. Bạn cũng sẽ có ít snapshot hơn để lo lắng, và tính đến khi sao chép dữ liệu máy ảo sang máy chủ mới. Nhưng không bắt buộc.
Lý do bạn có thể muốn sao chép chỉ trạng thái mới nhất là vì nó đơn giản hóa quản lý máy, và giảm lượng dữ liệu cần truyền. Nếu bạn xuất qua mạng, điều này có thể tạo ra sự khác biệt lớn (ngay cả trên LAN).

Bước 2: Sao chép toàn bộ thư mục máy ảo sang máy chủ thứ hai
Cấu trúc thư mục máy ảo VirtualBox bất kỳ như sau: thư mục Logs và Snapshots, một hoặc nhiều ổ cứng ảo (thường định dạng .vdi), và file cấu hình với đuôi .vbox, cộng có thể file cấu hình thứ hai với đuôi .vbox-prev (nếu bạn làm thay đổi).
File vbox là manifest XML với các khai báo bạn thấy trong GUI. Bạn không nên chỉnh sửa file này khi máy nào đang chạy, nhưng có thể an toàn cho máy ở trạng thái offline. Thay đổi sẽ phản ánh lần sau bạn khởi động máy đó. Ví dụ, dưới Media, bạn sẽ thấy phần HardDisks liệt kê tất cả ổ cứng và snapshot:
...
<HardDisks>
<HardDisk uuid="{dfcda294-6feb-4ef8-8bc8-e67ad57e2cc6}"
location="Kubuntu-24.04.vdi"
format="VDI"
type="Normal">
<HardDisk uuid="{f062fe0b-578c-4461-9a10-8d65d28347ac}"
location="Snapshots/{f062fe0b-578c-4461-9a10-8d65d28347ac}.vdi"
format="VDI">
<HardDisk uuid="{f942b89a-49ff-40fa-8d62-e6fdd8a205d9}"
location="Snapshots/{f942b89a-49ff-40fa-8d62-e6fdd8a205d9}.vdi"
format="VDI"/>
</HardDisk>
</HardDisk>
</HardDisks>
...
Khai báo này cho biết máy cụ thể dùng ổ cứng tên Kubuntu-24.04.vdi, và có hai snapshot liên quan. Bạn hiểu ý.
Được rồi, sao chép tất cả dữ liệu này, toàn bộ thư mục, sang máy chủ thứ hai.
Bước 3: Kiểm tra đường dẫn
Trước khi "nhập" máy ảo, bạn nên mở file vbox trong trình soạn thảo văn bản, và tìm bất kỳ đường dẫn "lạ" nào. Sẽ bao gồm bất kỳ file ISO gắn kết nào, đường dẫn chia sẻ khách hay tương tự, bất cứ thứ gì được hard-code cho hệ thống đầu tiên và có thể không tồn tại trên hệ thống thứ hai. Bất kỳ lỗi nào như vậy sẽ khiến việc thêm máy ảo mới thất bại. Điều này mờ ám khi dùng file OVA, nhưng bạn có toàn bộ khả năng nhìn thấy và kiểm soát khi làm thủ công.
Ví dụ, giả sử bạn dùng đường dẫn chia sẻ khách khác trên hai hệ thống. Cách dễ nhất tìm khai báo liên quan là tìm đường dẫn cụ thể bạn biết đã dùng trên hệ thống đầu tiên. Kiểm tra nó nói gì:
<SharedFolders>
<SharedFolder name="SHARED_FOLDER"
hostPath="G:\Virtual Machines\SHARED FOLDER"
writable="true"
autoMount="true"
autoMountPoint="SHPATH"/>
</SharedFolders>
Ở đây, tôi dùng ví dụ đường dẫn đặt trên ổ G: (Windows). Nhưng đường dẫn đó có thể không tồn tại trên hệ thống thứ hai, hoặc đặt dưới chữ cái khác. Vì vậy bạn cần thay đổi, thành:
hostPath="P:\Different path\SHARED FOLDER"
Và nếu hệ thống thứ hai là Linux, có thể cần hoàn toàn khác:
hostPath="/home/dedoimedo/Shared-folder"
Ngoài các đường dẫn hard-code này, bạn cũng có thể dùng cơ hội này để điều chỉnh bất kỳ cài đặt nào khác, bao gồm cấp phát bộ nhớ, số nhân CPU, sử dụng adapter đồ họa cụ thể, và thêm. Nhưng tốt nhất là làm một thay đổi một lần, thử thêm máy ảo, và xem có lỗi nào nảy sinh không.
Sau khi bạn sửa file vbox như cần, chỉ cần double-click nó. Với cài đặt mặc định, cả trên Windows lẫn Linux, loại file và chuỗi cụ thể này sẽ được liên kết với hypervisor VirtualBox. Nếu cấu hình XML hợp lệ, máy ảo sẽ hiện trong danh sách của bạn. Xong.
Bước 3: Cách tiếp cận thay thế
Nếu bạn không thoải mái chỉnh sửa file XML, thì bạn có thể làm sau:
- Clone máy ảo.
- Mở Settings (qua GUI VirtualBox). Xóa bất kỳ đường dẫn hard-code nào, như file ISO, thư mục chia sẻ, v.v.
- Sao chép máy ảo đến đích mới.
- Double-click vào file vbox để thêm vào hypervisor.
- Mở Settings một lần nữa, và thêm đường dẫn mới, như chúng nên là trên thiết bị thứ hai.
- Khởi động máy ảo và làm việc.
Lưu ý và hạn chế cấp phép có thể có
Như bạn có thể nhận thấy ở trên, tôi dùng máy ảo Linux cho quá trình sao chép/di chuyển. Linux, và cụ thể là Kubuntu, vì bản phân phối Linux này không có giới hạn sử dụng, không phải số lượng hệ thống, cũng không phải số lượng "giấy phép", nói chung.
Nếu bạn làm với hệ điều hành độc quyền, như Windows, bạn có thể vô hiệu hóa giấy phép do thay đổi phần cứng. Hoặc bạn có thể cần mua giấy phép mới. Nếu bạn dùng một số chương trình (trả phí) được cấp phép cho một máy chủ hoặc một instance chạy đơn lẻ, thì bạn cũng cần cân nhắc, vì việc tạo bản sao mới của máy ảo có thể gây vấn đề với giấy phép hoặc điều khoản sử dụng của phần mềm đó.
Kết luận
Nếu quy trình tự động, gói gọn đẹp đẽ không hoạt động cho bạn, phương pháp thủ công có thể. Tôi đã test phương pháp sao chép thư mục + thay đổi XML nhiều lần, với nhiều máy ảo, từ và đến cả Windows lẫn Linux. Kết quả tuyệt vời. Chắc chắn, bạn có thể cần điều chỉnh một hai cài đặt, nhưng sau đó, bạn "vàng". Trong giới hạn hạn chế cấp phép phần mềm của bạn, là vậy.
Hy vọng hướng dẫn này hữu ích. Debug mã lỗi cụ thể có thể nhàm chán, vì hầu như mọi lỗi nhập đều ném ra mã đó, trong khi các giải pháp thay thế nhiều và đa dạng. Thủ tục sao chép thủ công mạnh mẽ, nhưng bạn cần lưu ý một vài điều, chủ yếu là đường dẫn hard-code trong cấu hình. Bạn có thể chỉnh sửa trước hoặc sau khi sao chép, để đảm bảo máy ảo mới có thể thêm liền mạch. Vậy là xong. Chúc ảo hóa vui vẻ, và gặp lại sau.
Chào.