Linux loop裝置

來源:互聯網
上載者:User

為了自己編譯打包一個能從vbox啟動啟動並執行Linux liveCD, 這兩天狠狠的惡補了Linux的知識。下面是loop裝置的概念。我想wiki上已經講的很清楚,就直接貼出來了,以便後續索引尋找。

 

/dev/loop維基百科,自由的百科全書  漢漢▼

在類Unix系統中,/dev/loop(或稱vnd (vnode disk)、lofi(迴圈檔案介面))是一種偽裝置,這種裝置使得檔案可以如同塊裝置一般被訪問。

在使用之前,迴圈裝置必須與現存檔案系統上的檔案相關聯。這種關聯將提供給使用者一個應用程式介面,介面將允許檔案視為塊特殊檔案(參見裝置檔案系統)使用。因此,如果檔案中包含一個完整的檔案系統,那麼這個檔案就能如同磁碟裝置一般被掛載。

這種裝置檔案經常被用於光碟片或是磁碟鏡像。通過迴圈掛載來掛載包含檔案系統的檔案,便使處在這個檔案系統中的檔案得以被訪問。這些檔案將出現在掛載點目錄。

一個迴圈裝置或許能允許在重新導向過程中進行一些資料處理。例如,裝置可能是一個被加密檔案的解密形式。在這種情況下,與迴圈裝置相關的檔案可能是另一種偽裝置。當裝置包含加密檔案系統時,這種資料處理十分有用。如果資料處理得到支援且原檔案被加密,迴圈裝置將是此加密檔案的解密形式並且裝置可以如同普通檔案系統一般被掛載。

目錄

  [隱藏] 

  • 1 迴圈掛載的使用
  • 2 可用性
  • 3 執行個體
  • 4 參見
  • 5 引用
  • 6 外部連結
[編輯]迴圈掛載的使用

在掛載了含有檔案系統的檔案之後,儲存於該檔案系統中的檔案不需要特殊函數的支援便可以被常規的檔案系統介面或是系統訪問。例如在應用程式中讀寫光碟片鏡像檔案。

應用程式套件括管理與編輯檔案系統鏡像以提供日後使用(尤其是CD、DVD鏡像或是安裝系統)或是在實際應用中永久隔離一些資料(例如在抽取式媒體上類比一個更快,更方便的硬碟或封裝加密的檔案系統)。

迴圈裝置提供了在單個檔案中安裝作業系統一種便捷方法,使得安裝作業系統不必為磁碟機重新分區。

[編輯]可用性

在各種作業系統中迴圈裝置的命名存在著一些混亂。各種類Unix作業系統中,功能性的迴圈裝置被以不同的名字命名。

在Linux中,裝置名稱按照相應裝置驅動程式的符號表項進行命名。這些裝置被叫做”loop“裝置,裝置節點通常命名為/dev/loop0, /dev/loop1之類。 靜態裝置目錄可以用makedev指令碼建立,或者動態地由裝置檔案系統(udev)設施建立。 迴圈裝置的管理介面是 losetup,這是util-linux軟體包的一部分。

有時,迴圈裝置被錯誤地認為是迴環裝置,但是這個術語在Linux核心中是為網路裝置保留的(參見迴環裝置)。迴圈裝置的概念和迴環裝置不同,雖然在名字上有相似的地方。

在NetBSD和OpenBSD等BSD所派生的系統中,迴圈裝置被稱為“虛擬節點裝置”或“vnd”,並且裝置被置於 /dev/vnd0, /dev/rvnd0 或 /dev/svnd0等處。在檔案系統中,使用vnconfig程式來進行配置。

FreeBSD在發行版5之前和其他BSD系統一樣遵守約定,之後迴圈裝置便被納入記憶磁碟裝置("md")。目前使用mdconfig[1]程式進行配置。

在Solaris/OpenSolaris中,迴圈裝置被稱為 "迴環檔案介面" 或 lofi,[2] 位於 /dev/lofi/1等處。SunOS 擁有 lofiadm 配置程式。"lofi"驅動程式支援唯讀壓縮和可讀寫的加密。 自從1988年夏季開始更有SunOS/Solaris平台的第三方驅動 "fbk"[3] (檔案類比塊裝置,英文:File emulates Blockdevice)

Mac OS X實現了一個本地的鏡像掛載機制並作為其隨機訪問磁碟裝置的抽象。這些裝置如同普通裝置一樣出現在 /dev 中,讀寫操作被送往一個使用者模式的輔助進程,並由輔助進程負責讀取和寫入的操作。在使用者介面中當開啟磁碟鏡像的時候自動被啟用。這可以處理多種格式的碟片、CD-ROM 或 DVD 鏡像。

在Microsoft Windows作業系統上並不能原生支援迴圈掛載(直到Windows 7,這個功能才被原生實現,並通過工具diskpart進行工作)。 [4] 然而,這項能力經常通過第三方程式得以實現,例如Daemon Tools 和 Alcohol 120% VMware的免費工具以及LTR Data (ImDisk)都可以實作類別似的功能。

[編輯]執行個體

在目錄上掛載包含檔案系統的檔案一般需要兩步:

  1. 用一個迴圈裝置節點串連檔案。
  2. 在目錄上掛載該迴圈裝置

這兩個操作既可以用兩條命令來完成,也可以通過加上特殊的掛載符號的掛載命令來完成。第一個操作可以通過如Linux平台下的losetup[5]或者是SunOS上的lofiadm[6]命令完成。

例如,如果 example.img 是一個包含檔案系統的常規檔案,並且 /home/you/dir 是 Linux使用者的目錄,超級使用者(root)或許可以通過執行如下的命令來將檔案掛載在目錄上:

losetup /dev/loop0 example.imgmount /dev/loop0 /home/you/dir

其中第二條命令將裝置掛載於目錄 /home/you/dir。執行上述語句的效果便是檔案被作為檔案系統掛載,檔案的內容出現在被掛載的目錄中(以被掛載的目錄作為根目錄)。

此外 mount 工具常常可以勝任整個掛載的程式:

mount -o loop example.img /home/you/dir

之後裝置便能用下列命令實現卸載:

umount /home/you/dir# 或者通過諸如 mount | grep "/home/you/dir" # 或是 losetup -a | grep example.img 的尋找找到與檔案相關聯的loop裝置號碼# 並執行下列命令:(<N>代表裝置號)umount /dev/loop<N> 

在較底層的應用程式介面中,檔案的關聯與解除關聯通過在迴圈裝置上的ioctl 系統調用來實現。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.