Di chuyển từ máy ảo (VM) sang hệ thống vật lý


124

Aka: Làm cách nào tôi có thể chuyển đổi .vdi hoặc .vmdk thành cài đặt thực trên đĩa vật lý?

Có thể / khả thi khi di chuyển bản cài đặt Ubuntu của Máy ảo sang máy vật lý không? Nếu có thể, việc này sẽ khó thực hiện như thế nào và tôi cần phải thực hiện những bước nào để chuẩn bị cho việc di chuyển.

Tôi muốn thực hiện một số thử nghiệm trên máy ảo và nếu nó hoạt động, hãy chuyển hệ thống đó sang phần cứng vật lý thay vì cài đặt lại mọi thứ. Điều này có thể không?


Câu trả lời:


98

Vâng nó có thể. Nó thậm chí không khó khăn, nó chỉ mất một thời gian, một Ubuntu LiveCD, dính-back-nhựa, và một đĩa USB bên ngoài (nếu bạn không có nhiều hơn một ổ đĩa nội bộ).

Bước sơ bộ: Chuyển đổi đĩa thành một cái gì đó hữu ích

Cả VMWare và VirtualBox (trong số những người khác) đều sử dụng các định dạng đĩa không cho vay tốt để được ghi trực tiếp vào đĩa. Bạn có thể nhưng cá nhân tôi cảm thấy thuận tiện hơn khi viết nó lên một hình ảnh trung gian, tiêu chuẩn trước tiên. Bạn có thể làm điều này từ hệ thống hiện tại của bạn mà không phải khởi động vào LiveCD.

  • Tải một thiết bị đầu cuối và bắn vào:

    cd /media/wherever-the-image-is/
    
    # for VMWare
    sudo apt-get install qemu-kvm
    qemu-img convert your-vmware-disk.vmdk -O raw disk.img
    
    # For VirtualBox
    VBoxManage clonehd your-virtualbox-disk.vdi disk.img --format RAW
    
  • Di chuyển đến /media/wherever-the-image-is/disk.imgmột nơi mà bạn không định viết thư. Nếu bạn dự định ghi nó vào đĩa mà nó hiện đang ngồi, bạn sẽ muốn dán nó vào một đĩa bên trong riêng biệt, hoặc, tệ nhất đến tệ nhất là một đĩa bên ngoài.

  • Các hướng dẫn sau đây giả sử bạn đã chuyển nó sang /media/dave/disk.img( davelà đĩa USB ngoài)

  • Trước khi bạn thực hiện bất kỳ văn bản nghiêm túc nào, hãy chắc chắn rằng bạn có bản sao lưu . Đó là một điều sáo rỗng để nói nhưng một lỗi đánh máy và có khả năng rất thực là bạn sẽ nuke hệ thống của bạn. Giả sử rằng mọi thứ sẽ đi sai và được chuẩn bị. CloneZilla có thể giúp bạn thực hiện sao lưu toàn bộ đĩa nếu bạn có nơi nào đó để dữ liệu đó được lưu trữ.

Viết hình ảnh vào đĩa của chính nó

Bạn sẽ muốn làm một cái gì đó như thế này. Điều này giả định rằng bạn sẽ ghi đè lên toàn bộ đĩa. Nếu bạn muốn thực hiện cài đặt cùng với Windows, đừng làm theo các hướng dẫn sau! Bỏ qua sau khi đạn.

  • Khởi động vào Ubuntu Live CD và nhấp vào Thử Ubuntu.

  • Gắn kết vị trí của bạn nơi lưu trữ hình ảnh vmdk của bạn (ví dụ: đĩa USB bên ngoài như /media/dave). Đừng không gắn kết nơi mà bạn muốn ghi vào.

  • Sau đó chúng tôi đi làm:

    sudo dd if=/media/dave/disk.img of=/dev/sdX
    

    Bạn muốn thay thế sdXbằng đường dẫn chính xác đến đĩa đích của bạn. Các sudomật khẩu là trống, chỉ cần ấn Enter.

  • Sau đó, bạn có thể mở gpartedhoặc một cái gì đó khác và bạn sẽ thấy phân vùng Ubuntu của mình nằm trên đĩa. Bạn sẽ có thể mở rộng nó ra.

Ghi hình ảnh vào đĩa cùng với hệ điều hành khác

Đây có lẽ là một cách an toàn hơn để làm việc. Ý tưởng này rất giống với việc bạn cài đặt Ubuntu đúng cách và sau đó chỉ cần đồng bộ hóa các tệp từ đó disk.img.

  • LiveCD của bạn lần này sẽ cần phải là phiên bản Ubuntu giống như cài đặt ảo của bạn. Khởi động vào Live CD và, một lần nữa, nhấp Cài đặt.

  • Thực hiện theo trình cài đặt thông qua, phân vùng lại những thứ bạn thấy phù hợp. Khoảng 10 phút sau, bạn sẽ được cài đặt và nó sẽ yêu cầu bạn khởi động lại. Đừng khởi động lại. Không quan trọng nếu bạn vô tình làm, chỉ cần đảm bảo rằng bạn quay lại LiveCD để biết hướng dẫn tiếp theo.

  • Gắn kết phân vùng cài đặt mới của bạn và đĩa bên ngoài nơi bạn đã lưu trữ disk.imgtừ trước đó (chỉ cần nhấp đúp vào chúng trong nautilus).

  • Gắn đĩa ISO.img của bạn vào một thiết bị đầu cuối:

    sudo mkdir /media/oldinstall
    sudo mount -o loop /media/dave/disk.img /media/oldinstall
    

    -Lưu ý - Sau khi tạo tệp .img mong muốn, đôi khi khi bạn cố gắn nó dưới dạng thiết bị lặp, bạn có thể gặp lỗi sau

    "Chữ ký NTFS bị thiếu. Không thể gắn kết '/ dev / loop0': Đối số không hợp lệ Thiết bị '/ dev / loop0' dường như không có NTFS hợp lệ."

    Tệp .img đôi khi chứa bản ghi khởi động chính và bảng phân vùng trước phân vùng thực mà bạn có thể muốn gắn kết. Do đó bạn cần tìm ra phần bù của phân vùng cần thiết. Để làm điều này, người ta có thể sử dụng công cụ chia tay . Để biết ví dụ, hãy xem câu trả lời của sisco311 trong liên kết này http://ubuntuforums.org/archive/index.php/t-1576011.html

    Vì vậy, nếu bạn đã xác định phần bù của mình là 'xxx' thì bạn có thể gắn kết phân vùng của mình bằng cách sử dụng

    sudo mount -o loop,offset=xxx /media/dave/disk.img /media/oldinstall
    
  • Từ đó, bạn có thể chọn các tệp cherry-pick hoặc chỉ sao chép mọi thứ trên đầu cài đặt Ubuntu mới của mình bằng cách sử dụng một cái gì đó như:

    sudo rsync /media/oldinstall/ /media/my-new-install/
    
  • Khởi động lại và bạn sẽ được chào đón với bản cài đặt VMWare cũ của mình, nhưng trên kim loại trần. Nếu bạn gặp phải các vấn đề khó chịu, bạn có thể khắc phục bằng cách quay lại Live CD, chroot và sửa chữa mọi thứ .


7
Bạn có biết về một công cụ tự động làm điều này?
the_drow

1
Đối với các thiết lập trên Windows / VirtualBox, VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXlệnh vẫn sẽ hoạt động. Tất cả những gì cần thiết là cd vào Program Files\Oracle\VirtualBoxtrước khi chạy lệnh đầu tiên.
Áo

2
@Aust Tôi nghi ngờ đó /dev/sdXlà mục tiêu hợp lệ trong Windows. AFAIK nó sẽ \\Device\Harddisk0hoặc một cái gì đó như thế này.
Danatela

3
VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXkhông hoạt động. Trong Linux, nó đưa ra lỗi : VBoxManage: error: Cannot create destination file "/dev/sdX": VERR_ALREADY_EXISTS. Trước tiên, cần sử dụng VBoxManagelệnh để gửi nó đến hình ảnh. Sau đó sử dụng DD để đưa hình ảnh vào đĩa vật lý.
LD James

8

Có thể đó không chính xác là những gì bạn đang yêu cầu, nhưng nó có thể hoàn thành những gì bạn muốn làm.

Vì tất cả các cài đặt của bạn được lưu trữ trong thư mục chính của bạn, bạn chỉ có thể tạo một bản sao lưu của nó vào một phân vùng khác trên một đĩa thực. Sau khi bạn cài đặt Ubuntu mới trên đĩa thực, chỉ cần chạy lại chương trình sao lưu để khôi phục thư mục chính của bạn với tất cả các cài đặt nguyên vẹn.

Bạn có thể sử dụng một chương trình sao lưu thực sự gọn gàng được gọi là Déjà Dup .

Thông tin từ trung tâm phần mềm Ubuntu:

Déjà Dup là một công cụ sao lưu đơn giản. Nó che giấu sự phức tạp của việc sao lưu Đúng cách (được mã hóa, ngoài trang web và thường xuyên) và sử dụng tính trùng lặp làm phụ trợ.

Đặc trưng:

  • Hỗ trợ cho các vị trí sao lưu cục bộ, từ xa hoặc đám mây, chẳng hạn như Amazon S3 hoặc Rackspace Cloud Files

  • Mã hóa và nén an toàn dữ liệu của bạn

  • Sao lưu liên tục, cho phép bạn khôi phục từ bất kỳ bản sao lưu cụ thể nào

  • Lịch trình sao lưu thường xuyên

  • Tích hợp tốt vào máy tính để bàn Gnome của bạn

nhập mô tả hình ảnh ở đây

Bạn sẽ được thực hiện trong ít hơn hai giờ!

chúc may mắn!


1
Nghe có vẻ dễ dàng. Có thể xác nhận nó thực sự hoạt động theo cách đó?
Mateng

trong số những thứ khác .... UID (số người dùng) có thể khác nhau tại thời điểm đó.
Tomachi

5

Hãy thử UDPCast

Ý tưởng là truyền toàn bộ vmdk của bạn ra khỏi Máy ảo của nó sang máy vật lý, nơi nó được ghi vào hdd vật lý.

Thủ tục được nêu dưới đây.

Vì bạn có tệp vmdk, bạn có thể có Máy trạm VMWare theo ý của bạn, thậm chí hoàn thành Máy ảo mà vmdk này được đính kèm. Chạy Máy ảo của bạn với vmdk cụ thể này được đính kèm, nhưng thay vì khởi động thông thường, hãy sử dụng PartedMagic liveCD để khởi động từ.

Khi liveCD được bắt đầu, điều hướng đến menu chính và tìm UDPCast Disk Cloning. Các hộp thoại của nó là tự giải thích (xem ảnh chụp màn hình) Màn hình bắt đầu nhân bản đĩa UDPCast

Sau khi chọn Máy ảo này làm sender, bạn nên chọn ổ đĩa bạn muốn phát (sử dụng ký hiệu Unix, như / dev / sda).

Sau khi bạn bắt đầu sender, bạn cũng cần phải bắt đầu receiver. Vì bạn có một hdd vật lý, tôi giả sử, bạn cũng có một PC hoàn chỉnh với hdd này được gắn vào nó. Điều tương tự ở đây: bạn cần bắt đầu liveCD với UDPCast Disk Cloningviệc chọn receiverthời điểm này cũng như hdd vật lý phù hợp.

Đáng lưu ý, bạn nên thực hiện tất cả các sắp xếp cần thiết để có kết nối mạng giữa Máy ảo và phần cứng vật lý. Bạn nên thực hiện các biện pháp phòng ngừa cần thiết nếu vmdk của bạn chứa dữ liệu riêng tư, vì nội dung của nó sẽ được truyền trực tuyến hiệu quả qua mạng của bạn. Một điều nữa là hdd mục tiêu của bạn nên có dung lượng lưu trữ không kém, so với dung lượng vmdk của bạn. Rõ ràng, nhưng cũng đáng lưu ý rằng hình ảnh của bạn được đặt từng cái một trên hdd mục tiêu của bạn và bạn cần thực hiện các thao tác phù hợp với gparted hoặc muốn sử dụng dung lượng lớn hơn của hdd mới của bạn.


Tôi muốn lưu ý rằng phương pháp này thực sự đơn giản và tương đối dễ thực hiện. Cụ thể, bước chuẩn bị duy nhất bạn cần thực hiện là chuẩn bị LiveCD với UDPCast trên nó hoặc bất kỳ LiveCD nào khác, đủ để tải xuống và chạy UDPCast. Nếu bạn có một số hình ảnh hd ảo, bạn chắc chắn đã sử dụng nó trong Máy ảo, đã được thiết lập và sẵn sàng, mặt khác bạn đã chuẩn bị hệ thống vật lý của mình và nó cũng đã sẵn sàng cho nhiệm vụ.
PF4Public 17/2/2016

Còn nữa: UDPCast có thể được chạy trực tiếp từ PXE. udpcast.linux.lu/bootloader.html#pxe
PF4Public 17/2/2016

4

Nếu bạn đã cài đặt VirtualBox, thì bạn có thể chuyển đổi tệp VDI (hình ảnh ổ đĩa VirtualBox) sang định dạng IMG bằng cách sử dụng VBoxManagelệnh, sau đó sao chép vào đĩa vật lý, ví dụ:

VBoxManage clonehd --format RAW file.vdi file.img

Sau đó, bạn có thể sử dụng ddlệnh để sao chép tệp vào phân vùng vật lý:

dd if=./file.img of=/dev/<partition_here>

Lưu ý: Sử dụng sudo nếu được yêu cầu. Hãy cẩn thận khi chỉ định đúng thiết bị trong / dev.


0

Nếu bạn có đĩa vật lý mới được gắn vào máy thì đĩa ảo VM đang bật, bạn có thể chuyển đổi VDI thành vật lý mà không cần chuyển đổi trung gian, có thể tiết kiệm rất nhiều thời gian & dung lượng đĩa. Điều này giả sử đĩa vật lý của bạn bằng hoặc lớn hơn kích thước tối đa của đĩa ảo. Trong trường hợp của tôi, mục tiêu là chuyển đổi VDI thành ZFS zvol, nhưng cách tiếp cận nên giống với bất kỳ thiết bị khối nào.

Trước tiên, tạo tệp VMDK trỏ đến thiết bị khối của bạn:

VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sdX

Sau đó (với việc tắt VM!) Bạn có thể sao chép VDI sang VMDK:

VBoxManage clonemedium --existing virtual.vdi physical.vmdk

Điều đó sẽ mất một lúc ... Khi hoàn tất, bạn có thể xóa tệp VMDK vì nó chỉ được sử dụng làm con trỏ cho VirtualBox để tìm thiết bị vật lý.

Trong trường hợp của tôi, zvol mới có cùng kích thước với đĩa ảo. Vì đĩa vật lý của bạn có thể khác, bạn cần sử dụng một số loại cơ chế thay đổi kích thước phân vùng để lấp đầy đĩa. Gparted hoặc một cái gì đó có lẽ. Bạn có thể chỉ ra rằng tại thiết bị vật lý / dev / sdX trong khi vẫn được gắn vào máy VM để bạn không phải dùng đến máy chủ vật lý để khởi động CD.

Sau khi thay đổi kích thước xong, hãy bật ổ đĩa trong máy vật lý của bạn, bắt chéo ngón tay của bạn và bật nguồn.

Trong trường hợp bạn muốn tiếp tục sử dụng ổ đĩa vật lý với VirtualBox, hãy giữ VMDK xung quanh và sử dụng VBoxManage storageattachđể kết nối nó với VM.


Có vẻ như nó hoạt động, nhưng dữ liệu bị hỏng theo cách nào đó và HĐH sẽ không khởi động đúng cách.
Sange Borsch
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.