北京SEO

在KVM或Xen下挂载一个镜像文件(how to mount an image file)的两种方

2019/10/10/17:46:44  阅读:1762  来源:谷歌SEO算法  标签: 发外链

在使用KVM或Xen虚拟化的情况下,经常需要使用镜像文件(image file),我们可以将Guest系统启动起来,然后对镜像文件进行修改,不过这样有时也是比较麻烦,其实也是可以将镜像文件直接进行mount的,可以用如下两种办法.

方法一:找出分区开始的开始位置,使用mount命令的offset参数偏移掉前面不需要的,即可得到真正的分区,其具体步骤如下.

1.用“fdisk -lu my.img”查询image信息;

2.计算image内分区开始的地方(计算offset),用从N号sector(扇区)开始,则offset=N*M (M为一个sector的大小,一般为512).

3.使用mount命令挂载为loop设备即可,如LVM分区,则会较复杂,请见本文最后的介绍).

在Linux系统上具体操作演示如下:

  1. [root@jay-linuximage]#fdisk-lurhel6u2.img
  2. Youmustsetcylinders.
  3. Youcandothisfromtheextrafunctionsmenu.
  4. Diskrhel6u2.img:0MB,0bytes
  5. 255heads,63sectors/track,0cylinders,total0sectors
  6. Units=sectorsof1*512=512bytes
  7. Sectorsize(logical/physical):512bytes/512bytes
  8. I/Osize(minimum/optimal):512bytes/512bytes
  9. Diskidentifier:0x00048b34
  10. DeviceBootStartEndBlocksIdSystem
  11. rhel6u2.img1*2048102604751200083Linux
  12. Partition1doesnotendoncylinderboundary.
  13. rhel6u2.img21026048104857599519157768eLinuxLVM
  14. Partition2hasdifferentphysical/logicalendings:
  15. phys=(1023,254,63)logical=(6527,21,22)
  16. [root@jay-linuximage]#echo$((2048*512))
  17. 1048576
  18. [root@jay-linuximage]#mount-oloop,offset=1048576rhel6u2.img/media/
  19. [root@jay-linuximage]#cd/media/
  20. [root@jay-linuxmedia]#ls
  21. config-2.6.32-220.el6.x86_64initramfs-3.5.0.imgSystem.map-2.6.32-279.el6.x86_64
  22. config-2.6.32-279.el6.x86_64lost+foundSystem.map-3.5.0
  23. efisymvers-2.6.32-220.el6.x86_64.gzvmlinuz
  24. grubsymvers-2.6.32-279.el6.x86_64.gzvmlinuz-2.6.32-220.el6.x86_64
  25. initramfs-2.6.32-220.el6.x86_64.imgSystem.mapvmlinuz-2.6.32-279.el6.x86_64
  26. initramfs-2.6.32-279.el6.x86_64.imgSystem.map-2.6.32-220.el6.x86_64vmlinuz-3.5.0--phpfensi.com
  27. [root@jay-linuxmedia]#echo$((1026048*512))
  28. 525336576
  29. [root@jay-linuxmedia]#umount/media
  30. [root@jay-linuxmedia]#cd/home/image/
  31. [root@jay-linuximage]#umount/media
  32. [root@jay-linuximage]#mount-oloop,offset=525336576rhel6u2.img/media/
  33. mount:unknownfilesystemtype'LVM2_member'

镜像文件中的LVM分区mount的问题,本文最后单独说明,代码如下:

  1. [root@jay-linuximage]#fdisk-lusles11sp2-i386.img
  2. Youmustsetcylinders.
  3. Youcandothisfromtheextrafunctionsmenu.
  4. Disksles11sp2-i386.img:0MB,0bytes
  5. 255heads,63sectors/track,0cylinders,total0sectors
  6. Units=sectorsof1*512=512bytes
  7. Sectorsize(logical/physical):512bytes/512bytes
  8. I/Osize(minimum/optimal):512bytes/512bytes
  9. Diskidentifier:0x0002d3be
  10. DeviceBootStartEndBlocksIdSystem
  11. sles11sp2-i386.img120484208639210329682Linuxswap/Solaris
  12. Partition1doesnotendoncylinderboundary.
  13. sles11sp2-i386.img2*4208640419430391886720083Linux
  14. Partition2hasdifferentphysical/logicalendings:
  15. phys=(1023,254,63)logical=(2610,212,34)
  16. [root@jay-linuximage]#echo$((4208640*512))
  17. 2154823680
  18. [root@jay-linuximage]#mount-oloop,offset=2154823680sles11sp2-i386.img/media
  19. [root@jay-linuximage]#cd/media/
  20. [root@jay-linuxmedia]#ls
  21. bindevhomelost+foundmntprocsbinsrvsysusr
  22. bootetclibmediaoptrootselinuxsuccesstmpvar
  23. [root@jay-linuximage]#umount/media/

方法二:用kpartx建立分区映射后,再mount映射后的设备即可,操作实例如下:

  1. [root@jay-linuximage]#kpartx-avsles11sp2-i386.img
  2. addmaploop3p1(253:2):04206592linear/dev/loop32048
  3. addmaploop3p2(253:3):037734400linear/dev/loop34208640
  4. [root@jay-linuximage]#mount/dev/mapper/loop3p2/media/
  5. [root@jay-linuximage]#ls/media/
  6. bindevhomelost+foundmntprocsbinsrvsysusr
  7. bootetclibmediaoptrootselinuxsuccesstmpvar
  8. [root@jay-linuximage]#umount/media/
  9. [root@jay-linuximage]#mount/dev/mapper/loop3p1/media/
  10. /dev/mapper/loop3p1lookslikeswapspace-notmounted
  11. mount:youmustspecifythefilesystemtype

其中的交换分区,我也还不知道是否可以mount,其实mount交换分区也没意义,使用完成后,卸载挂载点、删除映射关系即可,代码如下:

  1. [root@jay-linuximage]#umount/media/
  2. [root@jay-linuximage]#kpartx-dsles11sp2-i386.img
  3. loopdeleted:/dev/loop3

关于LVM的mount,可以参考文末参考资料中的vpsee的文章,我也是试多次没做成功,才偶然看到这篇文章的,我对镜像文件中LVM分区的mount操作如下供参考.

  1. [root@jay-linuximage]#fdisk-lurhel6u2.img
  2. Youmustsetcylinders.
  3. Youcandothisfromtheextrafunctionsmenu.
  4. Diskrhel6u2.img:0MB,0bytes
  5. 255heads,63sectors/track,0cylinders,total0sectors
  6. Units=sectorsof1*512=512bytes
  7. Sectorsize(logical/physical):512bytes/512bytes
  8. I/Osize(minimum/optimal):512bytes/512bytes
  9. Diskidentifier:0x00048b34
  10. DeviceBootStartEndBlocksIdSystem
  11. rhel6u2.img1*2048102604751200083Linux
  12. Partition1doesnotendoncylinderboundary.
  13. rhel6u2.img21026048104857599519157768eLinuxLVM
  14. Partition2hasdifferentphysical/logicalendings:
  15. phys=(1023,254,63)logical=(6527,21,22)
  16. [root@jay-linuximage]#echo$((1026048*512))
  17. 525336576
  18. [root@jay-linuximage]#losetup/dev/loop0rhel6u2.img-o525336576
  19. [root@jay-linuximage]#pvscan
  20. PV/dev/loop0VGVolGrouplvm2[49.51GiB/0free]
  21. Total:1[49.51GiB]/inuse:1[49.51GiB]/innoVG:0[0]
  22. [root@jay-linuximage]#vgchange-ayVolGroup
  23. 2logicalvolume(s)involumegroup"VolGroup"nowactive
  24. [root@jay-linuximage]#lvs
  25. LVVGAttrLSizePoolOriginData%MoveLogCopy%Convert--phpfensi.com
  26. lv_rootVolGroup-wi-a---45.57g
  27. lv_swapVolGroup-wi-a---3.94g
  28. [root@jay-linuximage]#mount/dev/VolGroup/lv_root/media/
  29. [root@jay-linuximage]#ls/media/
  30. bincgroupetcliblost+foundmiscnetprocsbinsrvtmpvar
  31. bootdevhomelib64mediamntoptrootselinuxsysusr

使用完后的卸载操作,代码如下:

  1. [root@jay-linuximage]#umount/media/
  2. [root@jay-linuximage]#vgchange-anVolGroup
  3. 0logicalvolume(s)involumegroup"VolGroup"nowactive
  4. [root@jay-linuximage]#losetup-d/dev/loop0

广告内容

在KVM或Xen下挂载一个镜像文件(how to mount an image file)的两种方 在KVM或Xen下挂载一个镜像文件(how to mount an image file)的两种方 在KVM或Xen下挂载一个镜像文件(how to mount an image file)的两种方

相关阅读

热门评论

爱互踩 爱互踩

爱互踩流量交换~

总篇数175

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法