首頁  >  文章  >  系統教程  >  在linux中如何掛載VHD和其他虛擬磁碟文件

在linux中如何掛載VHD和其他虛擬磁碟文件

王林
王林轉載
2024-01-09 10:17:381411瀏覽

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

在linux中如何掛載VHD和其他虛擬磁碟文件

# 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/devd15  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 位元組

在linux中如何掛載VHD和其他虛擬磁碟文件磁碟標籤類型: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和其他虛擬磁碟文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除