操作系统 百分网手机站

linux下挂载VHD等虚拟磁盘文件的方法

时间:2020-10-07 15:49:55 操作系统 我要投稿

linux下挂载VHD等虚拟磁盘文件的方法

  linux下挂载VHD等虚拟磁盘文件的方法有哪些?今天小编为大家带来的是linux下挂载VHD等虚拟磁盘文件的方法,希望对大家会有帮助,有需要的朋友一起去看看吧

  1、RAW格式虚拟磁盘

  linux下可以直接挂载raw格式的虚拟磁盘镜像文件。

  例如,这里先用dd命令创建一个文件,然后将其格式化为ext4格式(只有一个分区),然后挂载到/mnt目录。

  下面的raw.img磁盘镜像文件就一个分区,所以没有使用offset=来指定偏移。如果有多个分区,则可以通过指定偏移来挂载。具体的可以查阅mount命令的'相关参数信息。

  > dd if=/dev/zero of=raw.img bs=1M count=512

  记录了512+0 的读入

  记录了512+0 的写出

  536870912 bytes (537 MB, 512 MiB) copied, 0.207045 s, 2.6 GB/s

  /home/o [o@o-pc] [10:29]

  > mkfs.ext4 -q raw.img

  /home/o [o@o-pc] [10:30]

  > sudo mount -o loop raw.img /mnt

  /home/o [o@o-pc] [10:30]

  > df -h

  2、VHD/VHDX磁盘文件挂载

  linux不能直接支持挂载VHD磁盘镜像文件。可以通过vmware的vmware-mount等工具来挂载。vmware没有直接提供这个工具,但在vmware player和vmware workstation中都有提供。但这里不打算使用这种方式。

  这里使用qemu-nbd来挂载磁盘镜像文件。

  a)安装qemu

  首先要安装一下qemu-kvm,我这里使用的是Fedora 25,安装命令如下

  sudo dnf install qemu-kvm

  如果你是用的debian/ubuntu等,可以使用sudo apt-get install qemu-kvm进行安装。

  archlinux可以使用sudo pacman -S qemu进行安装。

  b)加载nbd驱动

  NBD(Network Block Device)是网络块设备的缩写。这个模块可以将一个远程主机的磁盘空间(与挂载nfs有区别),当作一个本地块设备来使用。

  NBD是一个内核模块,大部分Linux发行版都已经包含它,这里不需要再安装了。

  使用modprobe来加载nbd驱动

  /media/o/data [o@o-pc] [11:04]

  > sudo modprobe nbd max_part=8

  加载完成后,可以使用modinfo命令来查看模块信息

  /media/o/data [o@o-pc] [11:05]

  > modinfo nbd

  filename: /lib/modules/4.9.6-200.fc25.x86_64/kernel/drivers/block/nbd.ko.xz

  license: GPL

  description: Network Block Device

  depends:

  intree: Y

  vermagic: 4.9.6-200.fc25.x86_64 SMP mod_unload

  signat: PKCS#7

  signer:

  sig_key:

  sig_hashalgo: md4

  parm: nbds_max:number of network block devices to initialize (default: 16) (int)

  parm: max_part:number of partitions per device (default: 0) (int)

  上面的信息说,初始化网络块设备的数目为16,说明其在/dev/下创建16个nbd设备。

  /media/o/data [o@o-pc] [11:05]

  > ls /dev/nbd*

  /dev/nbd0 /dev/nbd0p1 /dev/nbd1 /dev/nbd10 /dev/nbd11 /dev/nbd12 /dev/nbd13 /dev/nbd14 /dev/nbd15 /dev/nbd2 /dev/nbd3 /dev/nbd4 /dev/nbd5 /dev/nbd6 /dev/nbd7 /dev/nbd8 /dev/nbd9

  c)将vhdx文件连接到nbd设备

  这里使用qemu-nbd来进行连接(使用-c参数为连接,使用-d参数断开连接)

  /media/o/data [o@o-pc] [11:05]

  > sudo qemu-nbd -c /dev/nbd0 VS2017RC-offline.vhdx

  连接上之后使用fdisk查看一下设备信息。

  /media/o/data [o@o-pc] [11:05]

  > sudo fdisk -l /dev/nbd0

  Disk /dev/nbd0:100 GiB,107374182400 字节,209715200 个扇区

  单元:扇区 / 1 * 512 = 512 字节

  扇区大小(逻辑/物理):512 字节 / 512 字节

  I/O 大小(最小/最佳):512 字节 / 512 字节

  磁盘标签类型:dos

  磁盘标识符:0xa373e501

  实际上磁盘只有一个分区,分区格式为exFAT,磁盘大小为动态增长。

  d)挂载分区

  直接使用mount命令挂载nbd0p1即可

  /media/o/data [o@o-pc] [11:36]

  > sudo mount -t exfat -o rw /dev/nbd0p1 /mnt

  [sudo] o 的密码:

  FUSE exfat 1.0.1

  /media/o/data [o@o-pc] [12:05]

  > ls /mnt/

  '$RECYCLE.BIN' 'System Volume Information' vs2017rc 安装说明.txt

  安装exFAT支持

  因为分区是exFAT格式的,不能直接挂载。

  先安装一下fuse-exfat和exfat-utils。

  具体的安装过程简要的说一下

  先下载两个rpm源码包。

  wget http://download1.rpmfusion.org/free/el/updates/6/SRPMS/exfat-utils-1.0.1-2.el6.src.rpm

  wget http://download1.rpmfusion.org/free/el/updates/6/SRPMS/exfat-utils-1.0.1-2.el6.src.rpm

  然后安装fuse-devel和rpmbuild,并解压src.rpm包。

  sudo dnf install fuse-devel rpmbuild

  sudo dnf install scons # 构建exfat-utils需要

  rpm -ivh exfat-utils-1.0.1-2.el6.src.rpm exfat-utils-1.0.1-2.el6.src.rpm

  解压完成之后可以在当前用户的home目录下看到rpmbuild目录,进入该目录下的SPECS目录。

  然后使用rpmbuild构建rpm包。

  rpmbuild -ba exfat-utils.spec

  rpmbuild -ba fuse-exfat.spec

  构建完成之后进入rpmbuild/RPMS/x86_64目录(这里x86_64与你的系统构架有关),安装生成的rpm包。

  /home/o/rpmbuild/RPMS/x86_64 [o@o-pc] [12:04]

  > sudo rpm -ivh exfat-utils-1.0.1-2.fc25.x86_64.rpm fuse-exfat-1.0.1-1.fc25.x86_64.rpm

  准备中... ################################# [100%]

  正在升级/安装...

  1:fuse-exfat-1.0.1-1.fc25 ################################# [ 50%]

  2:exfat-utils-1.0.1-2.fc25 ################################# [100%]

  ubuntu上可以直接使用apt来安装sudo apt install exfat-utils exfat-fuse

  3、其它虚拟磁盘文件的挂载

  其它的就不再说了,与上面的VHD挂载是一样的,前提是要是支持的磁盘映像格式才行。


【linux下挂载VHD等虚拟磁盘文件的方法】相关文章:

1.Linux系统文件系统优化及磁盘检查的方法

2.Linux系统重新挂载var分区的方法

3.关于linux系统下分割大文件的方法

4.Linux下批量修改文件名的方法

5.linux磁盘清理方法介绍

6.Linux磁盘管理

7.linux查看磁盘io的方法是什么

8.简单地讲解Linux的文件系统及相关的挂载命令