linux kvm虛擬機器img檔案掛載到宿主機

2021-07-23 17:48:11 字數 2819 閱讀 4289

在使用虛擬化的過程中,難免會遇到虛擬機器異常導致無法啟動等故障,這時候如何從虛擬機器的img中將重要檔案或資料拷貝出來顯得尤為重要,今天介紹一下利用qemu-nbd的方式將img檔案掛載到宿主機。

需要注意的是,目前僅針對於img檔案型別為qcow2的做過測試。

1. 檢測img檔案的型別:

file test.img

test.img: qemu image, format: qcow , version: 2

qemu-nbd方式依賴於核心級別的nbd模組,簡單介紹一下nbd。

nbd(network block device)

簡介:tools for the linux kernel's network block device, allowing you to use remote block devices over a tcp/ip network,也就是說可以實現ip-san的功能資料共享。

相關**:

2. 由於centos裡面預設沒有編譯nbd到核心裡,需要重新編譯kernel的原始碼,具體步驟如下:

yum install kernel-devel kernel-headers

cd /tmp

wget

rpm -ivh kernel-2.6.32-279.22.1.el6.src.rpm

cd ~/rpmbuild/sources

#解壓tar包到kernel原始碼的位置

tar jxf linux-2.6.32-279.22.1.el6.tar.bz2 -c /usr/src/kernels/

cd /usr/src/kernels

#備份原有的kernel source

mv $(uname -r) $(uname -r)-old

#有時候不排除核心的版本與實際的source包不一致,所以應以實際為準

mv 2.6.32-431.3.1.el6.x86_64 2.6.32-431.3.1.el6.x86_64-old

mv  linux-2.6.32-279.22.1.el6 2.6.32-431.3.1.el6.x86_64

chown -r root:root 2.6.32-431.3.1.el6.x86_64

#開始進入編譯階段

cd /usr/src/kernels/2.6.32-431.3.1.el6.x86_64

#make mrproper去先刪除之前編譯所生成的檔案和配置檔案等

make mrproper

cd /usr/src/kernels/2.6.32-431.3.1.el6.x86_64-old

#module.symvers檔案用於:1.列出vmlinux和所有模組的匯出函式    2.列出所有符號的crc校驗值

cp  module.symvers /usr/src/kernels/2.6.32-431.3.1.el6.x86_64

cd /usr/src/2.6.32-431.3.1.el6.x86_64

cp /boot/config-2.6.32-358.el6.x86_64 ./.config

#所有問題都基於已有的.config檔案,只對新特性和新設定提出詢問,避免需要重新設定整個核心的配置

make oldconfig

make prepare

make scripts

make config_blk_dev_nbd=m m=drivers/block

#在 /usr/src/kernels/2.6.32-431.3.1.el6.x86_64目錄下

cp drivers/block/nbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/

#probe all modules

depmod -a

#載入模組,預設nbd的增加分割槽的功能是關閉的,需要指定max_part這個引數。這個引數指定了乙個nbd裝置可以有多少個分割槽。

modprobe nbd max_part=63

#是否載入可以用 lsmod 命令檢視

3.利用qemu-nbd實現虛擬機器映象的掛載

#需要安裝以下軟體

rpm -ivh  --replacefiles --nodeps seabios-bin-0.6.2-3.el6.noarch.rpm

rpm -ivh  --replacefiles --nodeps seabios-0.6.2-3.el6.x86_64.rpm

rpm -ivh  --replacefiles --nodeps qemu-common-0.12.3-8.el6.x86_64.rpm

rpm -ivh  --replacefiles --nodeps qemu-img-0.12.3-8.el6.x86_64.rpm

rpm -ivh  --replacefiles --nodeps qemu-kvm-0.12.3-8.el6.x86_64.rpm

rpm -ivh  --replacefiles --nodeps qemu-system-x86-0.12.3-8.el6.x86_64.rpm

#檢視當前與nbd相關的裝置

ls /dev/ | grep nbd

#將檔案鏈結到本地的nbd裝置上

qemu-nbd -c /dev/nbd0 test01.img

#再次檢視與nbd相關的裝置,會發現在/nbd0 下多了三個分割槽nbd0p1 nbd0p2 nbd0p3,這是虛擬機器img檔案中的分割槽

ls /dev/ | grep nbd

#掛載到宿主機,就可以訪問img的內部了,其中會有乙個swapspace是不能掛載的

mount nbd0p1 /mnt/test

大功告成

Linux kvm 建立 虛擬機器 的方法

通常情況下,複製別人的硬碟檔案vmharddisck.qcow2,制定記憶體,網絡卡就可以啟動虛機了,當然這個是硬碟中的作業系統是別人已經安裝好的了。那如何建立乙個空的硬碟,然後自己通過作業系統映象 linux 或者 unix 安裝自己的作業系統呢?其實最關鍵的就是通過 boot d指定從光碟啟動,...

Linux KVM虛擬機器設定

kvm是乙個基於linux核心的虛擬機器解決方案。本文介紹kvm的使用方法,以及注意要點。參考資料 kvm虛擬機器和qemu linux brctl 先決條件 硬體環境 cpu硬體虛擬化 32位與64位 安裝kvm 虛擬機器連網 brctl橋接 安裝以及執行虛擬機器 kvm常用命令 安裝虛擬作業系統...

使用mount掛載虛擬機器所在的img檔案

使用mount掛載ubuntu虛擬機器所在的img檔案的時候,執行 sudo mount o loop img mnt mount you must specify the filesystem type 加上 t ext3 後仍然報錯 mount wrong fstype,bad option,b...