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 [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 設備 啟動 起點 末尾 扇區 大小 Id 類型 /dev/nbd0p1 2048 209711103 209709056 100G 7 HPFS/NTFS/exFAT

實際上磁盤只有一個分區,分區格式為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-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 [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掛載是一樣的,前提是要是支持的磁盤映像格式才行。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM