首页 > 代码库 > linux下使用kpartx挂载虚拟文件系统

linux下使用kpartx挂载虚拟文件系统

在linux中,如果映像文件(.img)含有分区表的话,那么用losetup这个程序来加载文件系统就有点力不从心了。因为losetup只能加载无分区的文件系统映像文件。不过有一个好东西配合losetup却可以来挂载带有分区表的映像文件。这就是kpartx了。

废话不多说,进入正题(其中X和Y要看你的挂接的情况而看了):


#先创建一个1G大小的映像文件来做实验 dd bs=4096 if=/dev/zero of=~/hd.img count=262144 #将映像文件挂接到loopX中去
losetup /dev/loopX ~/hd.img 

#对loopX进行分区
fdisk /dev/loopX

#我这里分了两个区,每个去512M大小
      Device Boot      Start         End      Blocks   Id  System
/dev/loopXpY 2048 1050623 524288 83 Linux
/dev/loopXpY 1050624 2097151 523264 83 Linux

#正戏来了,使用kpartd装载映像,使用kpartx是需要root用户的,因为是用root登录的,所以不用使用sudo。从前面的命令就可以看出来...
kpartx -av ~/hd.img

#装载之后,就可以在/dev/mapper/目录下看到两个loopXpY的文件了。

#接下来对loopXpY进行格式化了。
mkfs.vfat /dev/mapper/loopXpY

#然后挂载文件系统。 mount /dev/mapper/loop1p1 /media/hd1

使用完映像文件的文件系统后,想退出的话,可以使用 kpartx -dv /dev/loopX 写卸载刚才挂接的东西。然后再使用losetup -d /dev/loopX断掉和映像文件的挂接关系。

其中,kpartx -a指定去添加哪个映像文件(add),-v是指挂到loop设备(verbose),-d就是delete的意思了。


linux LVM分区查看dm设备
 
在linux中iostat -d查看磁盘状态时,有的会有如下dm-0,dm-1的条目. 
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn 
sda               0.19         0.57         2.92     341228    1753052 
dm-0              0.27         0.56         2.88     334673    1729848 
dm-1              0.00         0.00         0.00        876          0 
 
如果在分区时利用了LVM,则一般会生成dm-N 逻辑卷(LogicVolume).它类似于普通分区时的一个分区如sda0之类的.只不过它利用了Mapper Device机制,在PysicalVolume上虚拟出来的分区信息. 
 
查找dm-N对应的挂载点 
1.sar -d 1 
  02:53:06 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     s vctm     %util 
02:53:07 PM    dev8-0      8.00      0.00     72.00      9.00      0.06      7.00      7.00      5.60 
02:53:07 PM  dev252-0      9.00      0.00     72.00      8.00      0.06      6.22      6.22      5.60 
02:53:07 PM  dev252-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 
  
显示dev252-0,dev252-1,即主设备号为dev252(sda设备号为dev8,这是linux为设备生成的内部设备号),次设备号为0,1 
 
2.cd /dev/mapper; ll 
lrwxrwxrwx  1 root root       7 Apr  3 16:12 yinbeiweb1-root -> ../dm-0 
lrwxrwxrwx  1 root root       7 Apr  3 16:12 yinbeiweb1-swap_1 -> ../dm-1 
  
 可看到软链到 /dev/dm-N上. 
3.ll /dev/dm-* 
  brw-rw---- 1 root disk 252, 0 Apr  3 16:12 ../dm-0 
  brw-rw---- 1 root disk 252, 1 Apr  3 16:12 ../dm-1 
 
可看到两者的主设备号都是252
cat /proc/partitions