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
文件系统        容量  已用  可用 已用% 挂载点
tmpfs           3.9G   79M  3.8G    2% /dev/shm
/dev/sda4        30G  6.6G   24G   22% /
tmpfs           3.9G  136K  3.9G    1% /tmp
/dev/sda2        69G   26G   41G   39% /home
tmpfs           794M   36K  794M    1% /run/user/1000
/dev/loop0      488M  780K  452M    1% /mnt

2、VHD/VHDX磁盘文件挂载

linux不能直接支持挂载VHD磁盘镜像文件。可以通过vmware的vmware-mount等工具来挂载。vmware没有直接提供这个工具,但在vmware playervmware 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 [[email protected]] [11:04]
> sudo modprobe nbd max_part=8

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

/media/o/data [[email protected]] [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 [[email protected]] [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 [[email protected]] [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
设备        启动  起点       末尾      扇区   大小 Id 类型
/dev/nbd0p1      2048 209711103 209709056  100G  7 HPFS/NTFS/exFAT

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

d)挂载分区

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

/media/o/data [[email protected]] [11:36]
> sudo mount -t exfat -o rw  /dev/nbd0p1 /mnt
[sudo] o 的密码:
FUSE exfat 1.0.1

/media/o/data [[email protected]] [12:05]
> ls /mnt/
‘$RECYCLE.BIN‘  ‘System Volume Information‘  vs2017rc  安装说明.txt

安装exFAT支持

因为分区是exFAT格式的,不能直接挂载。
先安装一下fuse-exfatexfat-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-develrpmbuild,并解压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 [[email protected]] [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挂载是一样的,前提是要是支持的磁盘映像格式才行。

http://www.cnblogs.com/oloroso/p/6385398.html

时间: 2024-10-05 22:00:12

linux下挂载VHD等虚拟磁盘文件的相关文章

Linux下挂载iscsi存储

1. 检查系统是否安装iSCSI initiator [[email protected] ~]# rpm -qa|grep iscsi [[email protected] ~]#  [[email protected] ~]# mount /dev/cdrom /mnt/ mount: block device /dev/sr0 is write-protected, mounting read-only [[email protected] ~]# cd /mnt/ [[email pro

在Linux下挂载Windows系统共享目录

在Linux下挂载Windows系统共享目录 默认情况下,Linux服务器会装有samba-client,但是没有装samba-server.但是访问Windows系统共享,安装有samba-client就可以了. [[email protected] ~]# rpm -qa | grep samba samba-3.6.23-14.el6_6.x86_64 samba-client-3.6.23-14.el6_6.x86_64 samba-common-3.6.23-14.el6_6.x86_

Linux下挂载Windows共享目录

$ sudo mount.cifs //windows-ip/shared  /media/ -o user=username password=password 该命令挂载Windows下的shared共享目录到本地/media目录下. Windows的用户名是username, 密码是password (作相应的修改) 这里的CIFS(Common Internet File System)协议是SMB协议的后续版本. Linux下挂载Windows共享目录,布布扣,bubuko.com

linux下挂载NTFS分区错误修复

今天在linux下打开win的NTFS硬盘总是提示出错了,而且是全部的NTFS盘都出错,其中sda1错误显示如下: Error mounting /dev/sda1 at /media/wangbo/24F02EECF02EC3C0: Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177" "/dev/sd

linux下挂载方案总结(centos 6.5)

1.前言 因为笔者在阿里云采用一种前端代理服务器,后端服务器没有公网的架构.笔者公司的程序猿们需要上传源代码时需要把源代码直接送到后端的服务器,故而笔者需要采用挂载技术,把后端的应用程序目录挂载到前端的服务器,然后由前端的vsftp提供上载代码服务,故而整理此文,以便后查. 2.环境 前端主机: ipaddress=10.161.0.133 hostname=aSer 后端主机(linux) ipaddress=10.171.0.222 hostname=bSer 后端主机(windows) i

Linux下挂载光盘和U盘

Linux下挂载光盘和U盘 挂载 linux下硬盘.U盘.软盘.移动硬盘都必须挂载后才能使用,不过硬盘的挂载是系统自动进行的. linux中每一个硬件都有一个设备文件名,就是将U盘什么的设备文件名与挂载点(盘符)关联起来,这样就可以通过访问挂载点就可以访问硬件设备. 查询与自动挂载 查询系统中已经挂载的设备,-l会显示卷标名称 mount [-l] 依据配置文件/etc/fstab的内容,自动挂载 mount -a 挂载命令格式 mount [-t 文件系统] [-L 卷标名] [-o 特殊选项

Azure上如何在Linux下挂载数据磁盘

在Azure上创建了虚拟机之后,我们在一些情况下会需要添加更多的数据磁盘来存储持久化数据,本文介绍如何快速的在Azure Linux的虚拟机上添加数据磁盘并初始化: 登陆Azure的管理界面,并创建虚拟机,本文使用CentOS 6.5作为示例操作系统,其他Linux操作系统类似 我们先使用SSH登录到改Linux操作系统,检查下当前系统的磁盘状态: 我们可以看到,目前的Linux系统下只有/sda和/sdb设备,其中/dev/sdb1是系统自动分配的临时磁盘,请不要将重要数据存储在上面,重要的数

linux 下apache搭建和虚拟主机的配置

apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一. Linux 下apache服务器的搭建 安装并更新apache yum install httpd 启动服务 默认情况下 apache在/var/www/html存放web页面 在该目录下新建一个index.html网页 编辑html文件 此时在客户机浏览器输入服务器地址,简单的搭建完成!

Linux下进入single模式与Linux下挂载U盘

老大lg安排个任务,将hzc服务器里某年某月某天的录音文件打包并且拷贝出来.后经同事yh了解到:这台机器有问题,只能通过安全模式进入--闲话少说,进入正题. 一.Linux下进入single模式 1.开机之后,连击数字1键,在grub 启动后,移动键盘到Linux的启动项(grub页面选择下面这个选项): 2.按e键,然后再移动键盘到类似下面的一行,也就是kernel的那行: kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb