linux下挂载VHD等虚拟磁盘文件的方法
1、RAW格式虚拟磁盘
linux下可以直接挂载raw格式的虚拟磁盘镜像文件。
例如,这里先用dd命令创建一个文件,然后将其格式化为ext4格式(只有一个分区),然后挂载到/mnt目录。
下面的raw.img磁盘镜像文件就一个分区,所以没有使用offset=来指定偏移。如果有多个分区,则可以通过指定偏移来挂载。具体的可以查阅mount命令的相关参数信息。
>ddif=/dev/zeroof=raw.imgbs=1Mcount=512 记录了512+0的读入 记录了512+0的写出 536870912bytes(537MB,512MiB)copied,0.207045s,2.6GB/s /home/o[o@o-pc][10:29] >mkfs.ext4-qraw.img /home/o[o@o-pc][10:30] >sudomount-oloopraw.img/mnt /home/o[o@o-pc][10:30] >df-h 文件系统容量已用可用已用%挂载点 tmpfs3.9G79M3.8G2%/dev/shm /dev/sda430G6.6G24G22%/ tmpfs3.9G136K3.9G1%/tmp /dev/sda269G26G41G39%/home tmpfs794M36K794M1%/run/user/1000 /dev/loop0488M780K452M1%/mnt
2、VHD/VHDX磁盘文件挂载
linux不能直接支持挂载VHD磁盘镜像文件。可以通过vmware的vmware-mount等工具来挂载。vmware没有直接提供这个工具,但在vmwareplayer和vmwareworkstation中都有提供。但这里不打算使用这种方式。
这里使用qemu-nbd来挂载磁盘镜像文件。
a)安装qemu
首先要安装一下qemu-kvm,我这里使用的是Fedora25,安装命令如下
sudodnfinstallqemu-kvm
如果你是用的debian/ubuntu等,可以使用sudoapt-getinstallqemu-kvm进行安装。
archlinux可以使用sudopacman-Sqemu进行安装。
b)加载nbd驱动
NBD(NetworkBlockDevice)是网络块设备的缩写。这个模块可以将一个远程主机的磁盘空间(与挂载nfs有区别),当作一个本地块设备来使用。
NBD是一个内核模块,大部分Linux发行版都已经包含它,这里不需要再安装了。
使用modprobe来加载nbd驱动
/media/o/data[o@o-pc][11:04] >sudomodprobenbdmax_part=8
加载完成后,可以使用modinfo命令来查看模块信息
/media/o/data[o@o-pc][11:05] >modinfonbd filename:/lib/modules/4.9.6-200.fc25.x86_64/kernel/drivers/block/nbd.ko.xz license:GPL description:NetworkBlockDevice depends: intree:Y vermagic:4.9.6-200.fc25.x86_64SMPmod_unload signat:PKCS#7 signer: sig_key: sig_hashalgo:md4 parm:nbds_max:numberofnetworkblockdevicestoinitialize(default:16)(int) parm:max_part:numberofpartitionsperdevice(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] >sudoqemu-nbd-c/dev/nbd0VS2017RC-offline.vhdx
连接上之后使用fdisk查看一下设备信息。
/media/o/data[o@o-pc][11:05] >sudofdisk-l/dev/nbd0 Disk/dev/nbd0:100GiB,107374182400字节,209715200个扇区 单元:扇区/1*512=512字节 扇区大小(逻辑/物理):512字节/512字节 I/O大小(最小/最佳):512字节/512字节 磁盘标签类型:dos 磁盘标识符:0xa373e501 设备启动起点末尾扇区大小Id类型 /dev/nbd0p12048209711103209709056100G7HPFS/NTFS/exFAT
实际上磁盘只有一个分区,分区格式为exFAT,磁盘大小为动态增长。
d)挂载分区
直接使用mount命令挂载nbd0p1即可
/media/o/data[o@o-pc][11:36] >sudomount-texfat-orw/dev/nbd0p1/mnt [sudo]o的密码: FUSEexfat1.0.1 /media/o/data[o@o-pc][12:05] >ls/mnt/ '$RECYCLE.BIN''SystemVolumeInformation'vs2017rc安装说明.txt
安装exFAT支持
因为分区是exFAT格式的,不能直接挂载。
先安装一下fuse-exfat和exfat-utils。
具体的安装过程简要的说一下
先下载两个rpm源码包。
wgethttp://download1.rpmfusion.org/free/el/updates/6/SRPMS/exfat-utils-1.0.1-2.el6.src.rpm wgethttp://download1.rpmfusion.org/free/el/updates/6/SRPMS/exfat-utils-1.0.1-2.el6.src.rpm
然后安装fuse-devel和rpmbuild,并解压src.rpm包。
sudodnfinstallfuse-develrpmbuild sudodnfinstallscons#构建exfat-utils需要 rpm-ivhexfat-utils-1.0.1-2.el6.src.rpmexfat-utils-1.0.1-2.el6.src.rpm
解压完成之后可以在当前用户的home目录下看到rpmbuild目录,进入该目录下的SPECS目录。
然后使用rpmbuild构建rpm包。
rpmbuild-baexfat-utils.spec rpmbuild-bafuse-exfat.spec
构建完成之后进入rpmbuild/RPMS/x86_64目录(这里x86_64与你的系统构架有关),安装生成的rpm包。
/home/o/rpmbuild/RPMS/x86_64[o@o-pc][12:04] >sudorpm-ivhexfat-utils-1.0.1-2.fc25.x86_64.rpmfuse-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来安装sudoaptinstallexfat-utilsexfat-fuse
3、其它虚拟磁盘文件的挂载
其它的就不再说了,与上面的VHD挂载是一样的,前提是要是支持的磁盘映像格式才行。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。