The Linux Newbie Guide  ⇒    Fundamentals     Advanced     Supplement   Command Index   ENG⇒中
All rights reserved, please indicate the source when citing
  

kpartx 虛擬裝置設置

kpartx 很像 losetup 的進階版,例如用指令 dd 備份了一整顆硬碟成一個映像檔(內有許多分割表),這一映像檔利用 kpartx 就可讀取原硬碟內容,不用真的把映像檔還原為實體硬碟。

kpartx  用法和 losetup 很像,用法為 kpartx [-adv] image-file。選項〝-a〞把映像檔和 loop-device 產生連結,選項〝-d〞為解除 loop-device 的連結而選項〝-v〞會顯示詳細的 loop-device 對應情況。

下列實驗模擬還原硬碟的映像檔:

# dd if=/dev/zero of=1g-image bs=1G count=1 ←產生一個 1G 大小的映像檔〝1g-image〞
# losetup /dev/loop0 1g-image ←將映像檔指定給虛擬設備檔〝/dev/loop0〞
#
# (下例操作把虛擬設備檔〝/dev/loop0〞當硬碟來分割)
# parted /dev/loop0 mklabel gpt ←指定用 gpt 分割表
# parted /dev/loop0 mkpart par1 0% 40% ← 前 40% 分割第一 partition,標籤名為〝par1〞
# parted /dev/loop0 mkpart par2 40% 100% ← 後 60% 分割第二 partition,標籤名為〝par2〞
#
# mkfs -t ext3 /dev/loop0p1 ←格式化第一個分割區(partition)
# mkfs -t ext3 /dev/loop0p2 ←格式化第二個分割區
#
# dd if=/dev/loop0 of=hd_img ←將虛擬設備檔〝/dev/loop0〞當硬碟備份成一個映像檔〝hd_img〞

# kpartx -av hd_img ←將映像檔指定給虛擬設備檔〝/dev/loop1〞
add map loop1p1 (253:0): 0 1046528 linear /dev/loop1 2048
add map loop1p2 (253:1): 0 1046528 linear /dev/loop1 1048576

上面操作的最後一步驟演繹如何把一個映像檔用 kpartx 來讀取原硬碟內容,往後操作〝/dev/loop1p1〞就是原硬碟第一個 partition,操作〝/dev/loop1p2〞就是原硬碟第二個 partition 。

更多操作和範例和說明可參考連結