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?
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?
Câu trả lời:
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!
Đây là trên Ubuntu 16.04 .
apt-get install afflib-tools
affuse /path/file.vmdk /mnt/vmdk
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
echo 2048*512 | bc
1048576
mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk
mount -o ro,loop,offset=1048576 ./foo.raw /mnt/foo
khô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
.
Bạn cũng có thể sử dụng qemu:
.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
.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 nbd1
vì nbd0
đôi khi cho 'mount: thiết bị đặc biệt / dev / nbd0p1 không tồn tại'
tar -tf image.ova
tar -xvf image.ova
Ở trên sẽ giải nén .vmdk
đĩa và sau đó gắn kết đó.
Đối với vmdk
và vhd
các tệp, tôi chỉ gặp may mắn với kpartx
lệ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 blkid
phâ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/vmdk
nế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>
vhd
, nó hoạt động!