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等。