Làm thế nào để gắn một đĩa cứng ảo?


23

Có thể gắn một đĩa cứng ảo (VHD, HDD, VDI, VMDK) trên Ubuntu không? Điều này có thể giải quyết như thế nào?


1
Bạn đã tìm kiếm Google? Nó có rất nhiều hướng dẫn về cách gắn VMDK, VDI, VHD và các tệp hình ảnh đĩa thô trên Ubuntu.
SirCharlo

2
Tôi đã tìm kiếm google, nhưng tôi không thấy kết quả của bạn. Cảm ơn :)
Báo tuyết

Liên kết Ubuntugeek cho VHD ở trên không thành công.
K7AAY

Câu trả lời:


16

Theo bài viết này :

Linux và các máy chủ tương tự Unix khác có thể gắn hình ảnh được tạo bằng loại định dạng thô bằng thiết bị loopback. Từ thông tin đăng nhập gốc (hoặc sử dụng sudo), gắn kết vòng lặp với độ lệch là 32.256.

mount -o loop,offset=32256 /path/to/image.img /mnt/mountpoint

Đối với các loại hình ảnh qemu khác, bạn có thể sử dụng qemu-nbd

modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 image.qcow2
partprobe /dev/nbd0
mount /dev/nbd0p1 /mnt/image

Ngoài ra, thông thường, bạn có thể chuyển đổi hình ảnh từ định dạng này sang định dạng khác.

raw - (default) the raw format is a plain binary image of the disc 
       image, and is very portable. 
       On filesystems that support sparse files, 
       images in this format only use the 
       space actually used by the data recorded in them.
cloop -     Compressed Loop format, mainly used for reading Knoppix 
       and similar live CD image formats
cow - copy-on-write format, supported for historical reasons only and
       not available to QEMU on Windows
qcow - the old QEMU copy-on-write format, supported for 
       historical reasons and superseded by qcow2
qcow2 - QEMU copy-on-write format with a range of special features, 
       including the ability to take multiple snapshots, smaller 
       images on filesystems that don't support sparse files, 
       optional AES encryption, and optional zlib compression
vmdk - VMware 3 & 4, or 6 image format, for exchanging images 
       with that product
vdi - VirtualBox 1.1 compatible image format, for exchanging 
       images with VirtualBox.

Hãy thử google, tôi tìm thấy giải pháp cho (VirtualBox) .VDI trong một giây :

modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 /path/to/some.vdi
mount -o loop /dev/nbd0p1 /mnt
# do stuff
umount /mnt
qemu-nbd -d /dev/nbd0
rmmod nbd

Giống như các lệnh "Qemu's way". Không biên giới!


6

Đây là trên Ubuntu 16.04 .

Là gốc:

Cài đặt và gắn kết bằng cách sử dụng.

apt-get install afflib-tools

affuse /path/file.vmdk /mnt/vmdk

Kiểm tra quy mô ngành

fdisk -l /mnt/vmdk/file.vmdk.raw

# example

Disk file.vmdk.raw: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000da525

Device       Boot Start      End  Sectors Size Id Type
/mnt/vmdk/file.vmdk.raw1 *     2048 41943039 41940992  20G 83 Linux

Nhân rộng ngành và khởi đầu. Ví dụ: 2048 * 512

echo 2048*512 | bc
1048576

Gắn kết bằng cách sử dụng bù đó

mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk

Đĩa nên được gắn và có thể đọc được trên / mnt / vmdisk


1
tuyệt quá!!! đã làm điều đó cho tôi trên Ubuntu 17.10
cljk

Điều này không hoạt động với tôi vào ngày 16.04.5 cho .vmdk của tôi ... hoạt động thông qua bước fdisk và phân vùng chính của VM của tôi, cái tôi muốn gắn kết, cũng bắt đầu từ năm 2048, nhưng mount -o ro,loop,offset=1048576 ./foo.raw /mnt/fookhông thành công only root can use "--options" option. Với sudo, nó thất bại với failed to setup loop device: Permission denied.
Theodore Murdock

3

Bạn cũng có thể sử dụng qemu:

Dành cho .vdi

sudo modprobe nbd
sudo qemu-nbd -c /dev/nbd1 ./linux_box/VM/image.vdi

nếu chúng không phải là installe, bạn có thể cài đặt chúng (trên Ubuntu là sự kết hợp này)

sudo apt install qemu-utils

và sau đó gắn kết nó

mount /dev/nbd1p1 /mnt

Dành cho .vmdk

sudo modprobe nbd
sudo qemu-nbd -r -c /dev/nbd1 ./linux_box/VM/image.vmdk

Lưu ý rằng tôi sử dụng tùy chọn -rđó vì VMDK phiên bản 3 phải được đọc chỉ để có thể được gắn kết bởi qemu

và sau đó tôi gắn kết nó

mount /dev/nbd1p1 /mnt

Tôi sử dụng nbd1nbd0đôi khi cho 'mount: thiết bị đặc biệt / dev / nbd0p1 không tồn tại'

Dành cho .ova

tar -tf image.ova
tar -xvf image.ova

Ở trên sẽ giải nén .vmdkđĩa và sau đó gắn kết đó.


2

Đối với vmdkvhdcác tệp, tôi chỉ gặp may mắn với kpartxlệnh bên dưới:

sudo kpartx -a -v <image-flat.vmdk>

Kiểm tra đầu ra cho losetup, nó sẽ chứa thiết bị lặp /dev/loop0; đồng thời kiểm tra sudo blkidphân vùng /dev/mapper/loop0p1, sau đó sử dụng nó trong lệnh mount:

sudo mount -o rw /dev/mapper/loop0p1 /mnt/vmdk

Trong đó / mnt / vmdk là điểm gắn kết của bạn, sẽ được tạo sudo mkdir /mnt/vmdknếu không tồn tại.

nguồn tại Commandlinefu.com (lệnh kpartx và mount)

Bỏ qua với:

sudo umount /mnt/vmdk
sudo kpartx -d -v <image-flat.vmdk>

Chỉ cần thử nghiệm phương pháp này với vhd, nó hoạt động!
N0rbert
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.