天天看點

linux 硬碟是loop格式,Linux中loop裝置和kpartx挂載虛拟檔案系統詳解

Linux的dev目錄之loop裝置詳解

一、簡單介紹

首先我們在指令行終端中輸入man

loop

出現如下内容:

摘要:

Loop裝置是一種塊裝置,但是它并不指向硬碟或者光驅,而是指向一個檔案塊或者另一種塊裝置。

一種應用的例子:将另外一種檔案系統的鏡像檔案儲存到一個檔案中,例如iso檔案,然後将一個Loop裝置指向該檔案,緊接着就可以通過mount挂載該loop裝置到主檔案系統的一個目錄下了,我們就可以正常通路該鏡像中的内容,就像通路一個檔案系統一樣。

二、詳細介紹

loop裝置是一種僞裝置,是使用檔案來模拟塊裝置的一種技術,檔案模拟成塊裝置後, 就像一個磁盤或CD光牒一樣使用。在使用之前,一個

loop

裝置必須要和一個檔案進行連接配接。這種結合方式給使用者提供了一個替代塊特殊檔案的接口。是以,如果這個檔案包含有一個完整的檔案系統,那麼這個檔案就可以像一個磁盤裝置一樣被

mount 起來。之是以叫loop裝置(回環),其實是從檔案系統這一層來考慮的,因為這種被 mount

起來的鏡像檔案它本身也包含有檔案系統,通過loop裝置把它mount起來,它就像是檔案系統之上再繞了一圈的檔案系統,是以稱為

loop。

回環裝置( 'loopback device')允許使用者以一個普通磁盤檔案虛拟一個塊裝置。設想一個磁盤裝置,對它的所有讀寫操作都将被重定向到讀寫一個名為 disk-image 的普通檔案而非操作實際磁盤或分區的軌道和扇區。(當然,disk-image 必須存在于一個實際的磁盤上,而這個磁盤必須比虛拟的磁盤容量更大。)回環裝置允許你這樣使用一個普通檔案。

回環裝置以 /dev/loop0、/dev/loop1 等命名。每個裝置可虛拟一個塊裝置。注意隻有超級使用者才有權限設定回環裝置。

三、簡單使用

一般在linux中會有8個loop裝置,一般是/dev/loop0~loop7,可用通過losetup

-a檢視所有的loop裝置,如果指令沒有輸出就說明所有的loop裝置都沒有被占用,你可以按照以下步驟建立自己的loop裝置。

指令losetup可以對loop裝置進行操作。

下面簡單的說明loop裝置映射或者指向一個檔案的簡單步驟:

建立一個檔案

1、dd

if=/dev/zeroof=/var/loop.img bs=1M count=10240

使用losetup将檔案轉化為塊裝置

2、losetup

/dev/loop0/var/loop.img

通過lsblk檢視剛剛建立的塊裝置

lsblk|grep

loop0

losetup –a

3、2步驟過後,我們就獲得了一個磁盤,在這磁盤上我們可以建構任何檔案系統,通常來說,使用預設的檔案系統(即作業系統的目前的檔案系統格式)就行了。如何建立一個檔案系統,需要另外了解。

4、挂載該磁盤到主檔案系統下的一個目錄。

首先建立一個目錄:

Mkdir/myloopdev

接着挂載:

Mount/dev/loop0

/myloopdev

5、就可以進入myloopdev目錄,對該虛拟磁盤進行操作了。就像使用真實磁盤一樣,例如:echo “hello world!”

> hello_world.txt

6、使用結束,我們解除安裝該磁盤,umount /myloopdev

7、接着删除該loop裝置,losetup –d  /dev/loop0

四、使用loop裝置完成一些功能

上面三簡單介紹了如何使用Loop指向一個檔案,接下介紹使用loop的一些場景。

利用Loop裝置作為一個虛拟光驅或者虛拟軟驅

1、回環裝置關聯檔案。

losetup/dev/loop0

a.iso

losetup指令用來實作回環裝置和檔案的關聯。這個指令還可以實作檔案系統的加密,有興趣的朋友可以檢視手冊。

2、挂載回環裝置到特定目錄,我們假設要挂載到/mnt/下面。

mount/dev/loop0

/mnt/

這樣/mnt/下面就是a.iso的内容了。可以通過shell去通路它了。

3、用完之後,需要解除安裝會換裝置。

umount/mnt/

這樣裝置就解除安裝,/mnt/下面就不是a.iso的檔案了。

4、回環裝置和關聯檔案分離。雖然已經在系統中解除安裝了回環裝置,但是這個裝置和檔案的關聯還存在。假如你還要用這個裝置關聯其他的檔案,系統會提示這個裝置正在忙。是以需要讓回環裝置和關聯檔案分離。

losetup-d

/dev/loop0

這樣一個CD光牒鏡像的使用就完成了。當然同理也可以通過回環裝置挂載其他的虛拟檔案,比如虛拟軟碟img等。