linux下掛載VHD等虛擬磁盤文件的方法

1、RAW格式虛擬磁盤
linux下可以直接掛載raw格式的虛擬磁盤鏡像文件。
例如,這里先用dd命令創(chuàng)建一個文件,然后將其格式化為ext4格式(只有一個分區(qū)),然后掛載到/mnt目錄。
下面的raw.img磁盤鏡像文件就一個分區(qū),所以沒有使用offset=來指定偏移。如果有多個分區(qū),則可以通過指定偏移來掛載。具體的可以查閱mount命令的相關(guān)參數(shù)信息。
> 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驅(qū)動
NBD(Network Block Device)是網(wǎng)絡(luò)塊設(shè)備的縮寫。這個模塊可以將一個遠程主機的磁盤空間(與掛載nfs有區(qū)別),當(dāng)作一個本地塊設(shè)備來使用。
NBD是一個內(nèi)核模塊,大部分Linux發(fā)行版都已經(jīng)包含它,這里不需要再安裝了。
使用modprobe來加載nbd驅(qū)動
/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)
上面的信息說,初始化網(wǎng)絡(luò)塊設(shè)備的數(shù)目為16,說明其在/dev/下創(chuàng)建16個nbd設(shè)備。
/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設(shè)備
這里使用qemu-nbd來進行連接(使用-c參數(shù)為連接,使用-d參數(shù)斷開連接)
/media/o/data [o@o-pc] [11:05]
> sudo qemu-nbd -c /dev/nbd0 VS2017RC-offline.vhdx
連接上之后使用fdisk查看一下設(shè)備信息。
/media/o/data [o@o-pc] [11:05]
> sudo fdisk -l /dev/nbd0
Disk /dev/nbd0:100 GiB,107374182400 字節(jié),209715200 個扇區(qū)
單元:扇區(qū) / 1 * 512 = 512 字節(jié)
扇區(qū)大小(邏輯/物理):512 字節(jié) / 512 字節(jié)
I/O 大小(最小/最佳):512 字節(jié) / 512 字節(jié)
磁盤標(biāo)簽類型:dos
磁盤標(biāo)識符:0xa373e501
實際上磁盤只有一個分區(qū),分區(qū)格式為exFAT,磁盤大小為動態(tài)增長。
d)掛載分區(qū)
直接使用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支持
因為分區(qū)是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 # 構(gòu)建exfat-utils需要
rpm -ivh exfat-utils-1.0.1-2.el6.src.rpm exfat-utils-1.0.1-2.el6.src.rpm
解壓完成之后可以在當(dāng)前用戶的home目錄下看到rpmbuild目錄,進入該目錄下的SPECS目錄。
然后使用rpmbuild構(gòu)建rpm包。
rpmbuild -ba exfat-utils.spec
rpmbuild -ba fuse-exfat.spec
構(gòu)建完成之后進入rpmbuild/RPMS/x86_64目錄(這里x86_64與你的系統(tǒng)構(gòu)架有關(guān)),安裝生成的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
準(zhǔn)備中... ################################# [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掛載是一樣的,前提是要是支持的磁盤映像格式才行。
相關(guān)文章
- 這篇文章主要介紹了在Windows中創(chuàng)建VHD文件的方法,VHD(Microsoft Virtual Hard Disk)是一種虛擬磁盤的實現(xiàn)方式,即通過文件來模擬物理磁盤的方式來存儲數(shù)據(jù),實現(xiàn)如同正常的2014-08-13
- VHD文件全名叫做Virtual Hard Disk,也就是虛擬磁盤,是微軟推出的一種磁盤的格式,下面為大家講解下Win8系統(tǒng)快速掛載VHD的方法2014-06-10
- 本文為大家介紹下以管理員身份打開命令提示符并輸入diskpart進入DISKPART管理,下面是具體的操作步驟2014-03-17
- LINUX系統(tǒng)怎么使用命令清理磁盤空間?LINUX系統(tǒng)中磁盤空間滿了,想要清除一下,該怎么清理呢?下面我們就來看看linux使用命令清理磁盤空間的教程,需要的朋友可以參考下2016-12-19
- 騰訊云Linux系統(tǒng)怎么掛載磁盤?騰訊云默認Linux只有8GB系統(tǒng)盤,怎么把剩下的剩余空間給掛載呢?下面我們來看看騰訊云Linux系統(tǒng)掛載磁盤的教程,需要的朋友可以參考下2016-02-23
Linux系統(tǒng)中開起和關(guān)閉用戶的磁盤空間限制的命令
這篇文章主要介紹了Linux系統(tǒng)中開起和關(guān)閉用戶的磁盤空間限制的命令,需要的朋友可以參考下2016-01-14- 今天上班的時候,發(fā)現(xiàn)訪問網(wǎng)站的時候出現(xiàn)了502錯誤。排除了配置和異常問題后,猜測是磁盤滿的問題造成的。用df看了下,果然磁盤滿了,切換到對應(yīng)的目錄里面,刪除運行日志2016-01-11
linux系統(tǒng)磁盤分區(qū)及把磁盤掛載到系統(tǒng)中的方法
本文給大家介紹linux系統(tǒng)磁盤分區(qū)及把磁盤掛載到系統(tǒng)中的方法,涉及到linux磁盤分區(qū)掛載相關(guān)知識,對本文感興趣的朋友一起學(xué)習(xí)吧2016-01-04- 這篇文章主要介紹了Linux常用的磁盤管理及文件目錄管理命令總結(jié),包括對文件的壓縮和解壓等通常的操作方法,需要的朋友可以參考下2015-12-28