檔案作為塊裝置訪問

2021-09-08 17:35:05 字數 1337 閱讀 6905

1. loop裝置介紹

在類 unix 系統裡,loop 裝置是一種偽裝置(pseudo-device),或者也可以說是**裝置。它能使我們像塊裝置一樣訪問乙個檔案。

在使用之前,乙個 loop 裝置必須要和乙個檔案進行連線。這種結合方式給使用者提供了乙個替代塊特殊檔案的介面。因此,如果這個檔案包含有乙個完整的檔案系統,那麼這個檔案就可以像乙個磁碟裝置一樣被 mount 起來。

上面說的檔案格式,我們經常見到的是 cd 或 *** 的 iso 光碟映象檔案或者是軟盤(硬碟)的 *.img 映象檔案。通過這種 loop mount (回環mount)的方式,這些映象檔案就可以被 mount 到當前檔案系統的乙個目錄下。

至此,順便可以再理解一下 loop 之含義:對於第一層檔案系統,它直接安裝在我們計算機的物理裝置之上;而對於這種被 mount 起來的映象檔案(它也包含有檔案系統),它是建立在第一層檔案系統之上,這樣看來,它就像是在第一層檔案系統之上再繞了一圈的檔案系統,所以稱為 loop。

2. losetup命令

losetup [ -e encryption ] [ -o offset ] loop_device file

losetup [ -d ] loop_device

說明

此命令用來設定迴圈裝置。迴圈裝置可把檔案虛擬成塊裝置,籍此來模擬整個檔案系統,讓使用者得以將其視為硬碟驅動器,光碟機或軟碟機等裝置,並掛入當作目錄來使用。

上面,命令格式中的選項與引數名:

-e 表示加密的方式

-o 設定資料偏移量

-d 解除安裝裝置

loop_device 迴圈裝置名,在 linux 下如 /dev/loop0 , /dev/loop1 等。

file 要與迴圈裝置相關聯的檔名,這個往往是乙個磁碟鏡象檔案,如 *.img

3. 使用舉例

(1)建立空的磁碟映象檔案,這裡建立乙個1.44m的軟盤

$ dd if=/dev/zero of=floppy.img bs=512 count=2880

(2)使用 losetup將磁碟映象檔案虛擬成快裝置

$ losetup /dev/loop1 floppy.img

(3)掛載塊裝置

$ mount /dev/loop0 /tmp

經過上面的三步之後,我們就可以通過/tmp目錄,像訪問真實快裝置一樣來訪問磁碟映象檔案floppy.img。

(4) 解除安裝loop裝置

$ umount /tmp

$ losetup -d /dev/loop1

或者可以使用qemu自帶的乙個工具qemu-nbd來掛載乙個客戶機。

映像檔案如何作為塊裝置操作

假如先有乙個磁碟映像檔案,其中包含了分割槽,檔名為 test.img 首先,建立乙個loop檔案,假如是loop99 sudo mknod dev loop99 b 7 99將 test.img 與 loop99 繫結,並掃瞄其分割槽表,建立各分割槽的loop檔案 如果 test.img 包含了兩個...

塊裝置簡介

裝置分為塊裝置和字元裝置 ll rw blk.c是其他程式呼叫裝置所用到的程式。對硬碟和軟盤裝置上資料的讀寫是通過中斷處理程式進行 核心每次讀寫的資料量是邏輯塊 1024位元組 而裝置的儲存是扇區 512位元組 當程式讀取裝置資料時,首先向緩衝區管理程式提出申請,程式的程序進入睡眠狀態,緩衝區管理程...

塊裝置驅動

若塊裝置驅動程式也按以下字元裝置驅動程式的簡單思想來寫 1.硬碟 磁碟的讀寫其實非常快,慢在機械結構讀寫裝置的定位上面,從乙個 磁頭 的某 柱面 某 扇區 讀到資料後 步驟 r0 跳到另乙個 磁頭 的某 柱面 的某 扇區 去寫 步驟 w 接著再跳回原 磁頭 相同柱面的下乙個 扇區 去讀 步驟r1 慢...