天天看點

使用loop裝置挂載映像檔案

loop裝置介紹

   在類 UNIX 系統裡,loop 裝置是一種僞裝置(pseudo-device),或者也可以說是仿真裝置。它能使我們像塊裝置一樣通路一個檔案。

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

   上面說的檔案格式,我們經常見到的是 CD 或 DVD 的 ISO CD光牒鏡像檔案或者是軟碟(硬碟)的 *.img 鏡像檔案。通過這種 loop mount (回環mount)的方式,這些鏡像檔案就可以被 mount 到目前檔案系統的一個目錄下。

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

1.建立一個100M大小的映像檔案

[root@Server ~]# df -h

Filesystem                    Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root   14G  2.7G   11G  21% /

tmpfs                         940M   72K  940M   1% /dev/shm

/dev/sda1                     485M   39M  421M   9% /boot

[root@Server ~]# dd if=/dev/zero of=test.img bs=10M count=100

100+0 records in

100+0 records out

1048576000 bytes (1.0 GB) copied, 3.2612 s, 322 MB/s

[root@Server ~]# du -sh test.img

1001M   test.img

/dev/mapper/VolGroup-lv_root   14G  3.7G  9.4G  29% /

[root@Server ~]# 

2.查找空閑的loop裝置

[root@Server ~]# losetup -f

/dev/loop0

[root@Server ~]#

3.将映像檔案挂接到loop0中。

[root@Server ~]# losetup /dev/loop0 test.img

[root@Server ~]# fdisk -l /dev/loop0

Disk /dev/loop0: 1048 MB, 1048576000 bytes

255 heads, 63 sectors/track, 127 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

4.對loop4進行分區

[root@Server ~]# fdisk -cu /dev/loop0 

[root@Server ~]# partprobe /dev/loop0

[root@Server ~]# fdisk -l /dev/loop0 

Disk identifier: 0x38d505d4

      Device Boot      Start         End      Blocks   Id  System

/dev/loop0p1               1           4       32098+  83  Linux

/dev/loop0p2               5          11       56227+  83  Linux

5.使用kpartx将分區裝載到映像檔案中

[root@Server ~]# kpartx -av test.img

add map loop1p1 (253:3): 0 64197 linear /dev/loop1 63

add map loop1p2 (253:4): 0 112455 linear /dev/loop1 64260

6.格式化分區

mkfs.ext4 /dev/loop0p1 

這時,我們已經可以在/dev/mapper下看到loop4的映射,然後挂載之:

mount /dev/mapper/loop0p1 /mnt

解除安裝:

umount /mnt

kpartx -dv /dev/loop4

losetup -d /dev/loop4

如果挂載的映像檔案,本身有分區,通過空間的loop裝置挂接以後,可通過kpartx -av直接進行裝載。

losetup -f

losetup /dev/loop4 test.img

kpartx -av /dev/loop4

mount /dev/loop4p1 /mnt

本文轉自 dengaosky 51CTO部落格,原文連結:http://blog.51cto.com/dengaosky/1852755,如需轉載請自行聯系原作者

繼續閱讀