Virtualbox, hợp nhất snapshot và đĩa cơ sở


9

Tôi có một máy ảo với khoảng 30 ảnh chụp nhanh trong các chi nhánh. Đường dẫn phát triển hiện tại là 22 ảnh chụp nhanh cộng với đĩa cơ sở. Số lượng tệp dường như có ảnh hưởng đến IO và máy tính xách tay tôi đang sử dụng (không biết đó có phải là vấn đề về hiệu suất của máy chủ lưu trữ với tổng kích thước 140 GB qua nhiều phân đoạn hay thực tế là nó là nhấn các lĩnh vực được phân phối trên rất nhiều tập tin).

Tôi muốn hợp nhất nhánh phát triển hiện tại của snapshot cùng với đĩa cơ sở, nhưng tôi không chắc liệu lệnh sau có tạo ra kết quả chính xác hay không. Tôi không thể khởi động đĩa này sau khi thủ tục hoàn tất (5-6 giờ).

vboxmanage clonehd "C:\VPC-Storage\.VirtualBox\Machines\CRM\Snapshots\{245b27ac-e658-470a-b978-8e62137c33b1}.vhd" "E:\crm-20100624.vhd" --format VHD --type normal

Bất cứ ai có thể xác nhận nếu đây là cách tiếp cận chính xác hay không?


Để thêm một số thông tin, lỗi tôi gặp không phải là lỗi VirtualBox, mà là lỗi khởi động từ Windows. Nó muốn khởi chạy sửa chữa khởi động, nhưng vì tôi không biết lỗi, tôi không biết sửa. Cửa sổ khởi động thường dẫn đến sự chờ đợi lâu và màn hình màu xanh. Đây có phải là dự kiến ​​hoặc tôi đã sử dụng phương pháp sai khi sao chép đĩa?
Henrik

Tôi đã sử dụng VBoxManage (trên máy chủ Windows, khách Ubuntu) như bạn đã đề xuất trong câu hỏi của mình và nó đã hợp nhất các ảnh chụp nhanh vào hình ảnh đĩa đầu ra duy nhất
Chaulky

1
Vâng, đây là một cách tiếp cận chính xác. Tốt hơn là chỉ định UUID nguồn thay vì tên tệp của nó, thì bạn chắc chắn VBox sẽ có thể giải quyết các tệp đính kèm.
rustyx

Câu trả lời:


7

Những gì bạn muốn làm là từ hộp thoại chụp nhanh, chọn ảnh chụp nhanh cha mẹ của bạn mà bạn muốn hợp nhất tất cả các ảnh chụp nhanh sau đó vào một VDI duy nhất.

Từ mô tả của bạn, có vẻ như đây là gốc của cây.

Nhấp chuột phải và chọn 'Xóa Ảnh chụp nhanh'.

Điều này sẽ làm những gì bạn muốn --- nó sẽ hợp nhất tất cả các thay đổi từ tất cả các ảnh chụp nhanh con vào một VDI duy nhất.

Ngoài ra - nhân bản hình ảnh đĩa trong ảnh chụp nhanh mới nhất - cũng sẽ hợp nhất đĩa khác biệt với cha mẹ của nó (và cha mẹ của nó, cho đến khi bạn đến loại đĩa cứng 'bình thường').

Tôi nghi ngờ rằng 'xóa một ảnh chụp nhanh' chạy lệnh clonehd.

Kiểm tra cài đặt VM của bạn (cụ thể là bật / tắt IO APIC) và đảm bảo chúng khớp.


Tôi đoán đây là cách duy nhất để làm điều này, tuy nhiên nó là một cách thủ công, tốn thời gian, nhiều lần nhấp trong GUI để làm điều đó.
Henrik

3

Nếu bạn chỉ muốn giữ một ảnh chụp nhanh, hãy biến nó thành trạng thái hiện tại của bạn và sau đó xuất VM và nhập lại nó. Thiết bị xuất khẩu không giữ lại lịch sử ảnh chụp của họ.

Hoặc bạn có thể sử dụng tập lệnh vboxmerge.py này để xử lý việc hợp nhất cho bạn. Với số lượng ảnh chụp nhanh bạn có, tôi hy vọng chu trình xuất / nhập sẽ nhanh hơn.


2

Đây là một kỹ thuật (đã được thử nghiệm trên VirtualBox 4.3.4) sử dụng lệnh 'Clone' để hợp nhất và nén tất cả các ảnh chụp nhanh vào một VM mới chứa một tệp VDI duy nhất:

  1. Đổi tên VM để bạn có thể sử dụng lại tên hiện tại của nó cho VM nhân bản (bạn có thể thay đổi tên VM từ tab 'Cơ bản' của cài đặt 'Chung').

  2. Nhấp chuột phải vào VM và chạy lệnh 'Clone ...':

    • Đặt tên thành tên gốc của VM.
    • Chấp nhận các mặc định còn lại, tức là loại Clone: ​​'Full clone'; Ảnh chụp nhanh: 'Trạng thái máy hiện tại'.
  3. Xóa VM cũ (nhấp chuột phải vào VM và chạy lệnh 'Xóa ...').


0

Nếu máy chủ của bạn là Windows hoặc bạn có thể truy cập các tệp VHD từ cửa sổ, có một mẹo để MERGE tất cả các thay đổi thành cha mẹ, ông bà, v.v.

Nó đang sử dụng công cụ DiskPart và hai lệnh:

select vdisk file="whatever your file is, with full path"

merge vdisk depth=#

Trong đó # là số cấp bậc phân cấp bạn muốn di chuyển, 1 cho cha mẹ trực tiếp, 2 cho cha mẹ lớn, v.v.

Nó thực hiện tại chỗ, tốn ít thời gian hơn nhiều so với nhân bản, v.v.

Hãy nhớ rằng, sau khi hợp nhất tất cả các VHD trung gian có thể bị xóa (nó không xóa chúng cho bạn) và đừng quên đính kèm vào VirtualBox mà cha mẹ bạn đã hợp nhất.

Thí dụ:

Disk3.vhd là con của Disk2.vhd, Disk2.vhd là con của Disk1.vhd

Nếu bạn muốn trên Disk1.vhd, tất cả các thay đổi của Disk3.vhd chỉ cần sử dụng depth=2và chọn Disk3.vhd. Nếu bạn muốn trên Disk1.vhd, tất cả các thay đổi của Disk2.vhd chỉ cần sử dụng depth=1chọn Disk3.vhd.

Cũng cần nhớ rằng không cần chụp nhanh VirtualBox xấu xí, bạn có thể sử dụng lệnh tạo đĩa vdisk để tạo một đĩa khác biệt với đĩa hiện có (cũng có thể là đĩa khác biệt, v.v.), cũng có thể tạo một cây khổng lồ.

Đối với tất cả những người còn lại: Người đăng đang sử dụng VHD (không phải VDI), vì vậy có thể sử dụng các công cụ gốc như DiskPart và Quản lý đĩa để truy cập các đĩa đó ra khỏi Guest (trên Host, nếu Host là Windows).

Đối với bạn, người đăng: Hãy nhớ rằng mọi lúc đều có BackUp đầy đủ trước khi Hợp nhất, bản sao VirtualBox không hoạt động, nó tạo một tệp mới (sao chép trên ghi), nhưng hợp nhất DiskPart hoạt động tại chỗ (sửa đổi tệp, không tạo một cái mới).

Hy vọng rằng có thể cung cấp một aproach khác vì VHD / VHDX đang được sử dụng (không hợp lệ cho VMDK, VDI, v.v., chỉ dành cho Windows Host).

Lưu ý: Windows 7 trở lên, XP và Vista có thể gắn VHD với công cụ M $ bên ngoài nhưng DiskPart không hỗ trợ VHD trên XP & Vista ... tất cả điều này cũng hoạt động trên các phiên bản Windows HOME (7 trở lên), không cần Phiên bản SERVER.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.