天天看點

loopback檔案系統

回環裝置(loop-back devices)

實驗環境 centos7.2

回環裝置( 'loopback device')允許使用者以一個普通磁盤檔案虛拟一個塊裝置。(磁盤檔案 --> 塊裝置)

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

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

回環裝置的使用與其它任何塊裝置相同。特别是,你可以在這個裝置上建立檔案系統并像普通的磁盤一樣将它挂載在系統中。這樣的一個将全部内容儲存在一個普通檔案中的檔案系統,被稱為虛拟檔案系統(virtual file system)(譯者注:這個用法并不常見。VFS 通常另有所指,如指代 Linux 核心中有關檔案系統抽象的代碼層次等)。

可以通過下列步驟建立一個虛拟檔案系統并通過回環裝置挂載:

建立一個用于承載虛拟檔案系統的空檔案。這個檔案的大小将成為挂載後檔案系統的大小。

建立指定大小檔案的簡單方法是通過 dd 指令。這個指令以塊為機關(通常為 512 位元組)從一個檔案向另一個檔案複制資料。/dev/zero 檔案則是一個很好的資料來源。

要建立一個 10 MB 大的名為 disk-image 的檔案可以通過以下指令:

檢視該檔案

這個建立立的檔案被填滿了 0 位元組。在挂載之前,必須在其上建立一個檔案系統。這個過程會建立許多用于組織和存儲檔案的控制單元并構造根目錄結構。

在這個磁盤映像之上可以建構任何類型的檔案系統。以建立 ext4 檔案系統為例,用 mkfs.ext4 可以完成這個操作。因為這個指令通常是針對塊裝置進行操作,當對一個普通檔案操作時它會要求确認:

現在 disk-image 檔案包含了一個建立立的檔案系統,正如一個被剛剛初始化完畢的 10 MB 大小的磁盤。

以一個環回裝置挂載這個檔案系統。方法是使用 mount 指令,指定磁盤檔案為被挂載的裝置。同時指定 loop=loopback-device 作為 -o 選項的參數,告訴 mount 指令使用哪個回環裝置。

下面例子中的指令可用于挂載我們的 disk-image 檔案系統。要記住的是隻有超級使用者可以使用環回裝置。第一個指令将建立一個目錄 /tmp/virtual-fs,這個目錄将被用于挂載我們的檔案系統。

這時,這個裝置應該已經被挂載,就如同一個普通的 10M 空間的磁盤一樣。

你可以向任何其它磁盤一樣使用這個裝置:

請注意 lost+found 是一個由 mke2fs 自動建立的檔案夾一旦檔案系統被破壞,部分資料被回複但沒有與任何檔案關聯起來,将被放置在這個檔案夾中。。

結束使用後,解除安裝這個檔案系統:

你可以删除 disk-image,或者之後再次挂載并使用其中的檔案。你甚至可以将這個檔案複制到遠端主機并在那裡挂載、使用——檔案系統的内容完全不會受到影響。

除了從新建立一個檔案系統,還可以從一個現有的檔案系統複制而得到一份映像。例如,可以通過普通的複制操作為一個 CD-ROM 建立一份映像。

如果系統中有一個 IDE 接口的 CD-ROM 驅動器,使用前面說過的裝置名如 /dev/hda。如果 CD-ROM 是 SCSI 接口的話,裝置檔案名可能是 /dev/scd0 之類。系統中也可能包含一個符号連結 /dev/cdrom 指向實際的光驅。請參考 /etc/fstab (譯者注: 手冊)檢視系統實際使用的光驅對應的裝置。

接下來要做的僅僅是将這個裝置複制為一個檔案——得到的檔案将是被存在硬碟上的、這個 CD-ROM 内容的完整映像。例如:

取決于裝置的速度和 CD-ROM 的容量,這個操作可能需要幾分鐘的時間。最終的檔案将會相當大,它的體積與這個 CD-ROM 的容量相同。

這時,你可以在系統中挂載這個CD光牒而無須插入原始的 CD-ROM 盤片。要挂載在 /mnt/cdrom 目錄下:

mount -o loopback=/dev/loop0 /tmp/cdrom-image /mnt/cdrom

因為映像位于磁盤上,這個檔案系統的速度将遠勝于直接挂載自實際光驅的時候。請注意多數CD光牒使用的檔案系統類型都是   iso9660。

http://blog.csdn.net/babyfans/article/details/6155754

繼續閱讀