成都诗和远方网站建设,旅游网站定位,欧莱雅旗下品牌,网络推广方案文案#!/bin/sh# 通过 qemu-nbd 实现 vhd 的挂载 ,事先需要安装 qemu-utils , name:vhd5.sh# 需要事先 sudo apt-get install qemu-utils# 在vhd所在目录新建名为 v_disk.vhd文件名 的目录# 把 vhd 文件 虚拟到 /dev/nbdX ,并把虚拟硬盘的各分区 /dev/nbdXpY 挂载到目录…#!/bin/sh# 通过 qemu-nbd 实现 vhd 的挂载 ,事先需要安装 qemu-utils , name:vhd5.sh# 需要事先 sudo apt-get install qemu-utils# 在vhd所在目录新建名为 v_disk.vhd文件名 的目录# 把 vhd 文件 虚拟到 /dev/nbdX ,并把虚拟硬盘的各分区 /dev/nbdXpY 挂载到目录 vhd文件名.v_disk/nbdXpY#用法 vhd5.sh vhd文件名#判断是否存在vhd文件if ! [ -f $1 ] ;thenecho 文件没找到!exitfi#根据vhd文件路径和名称 确定变量 VhdPath 用于建立挂载目录 和分区VhdPath$(realpath $1).v_disk#判断虚拟硬盘文件是否已经被挂载了if [ df --outputtarget | awk -v pl${VhdPath} -v a0 $0~^ pl /nbd[0-9]p[0-9]$ {a1} END {print a} -ge 1 ] ; thenecho 不可重复挂载!exitfi#找出16个nbd设备中第一个可用于虚拟 vhd 的设备 赋值给变量 x#如果16个设备 均已被占用 ,那么 x16for x in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; dozjdf --outputsource | awk -v x${x} -v atrue $1~^/dev/nbd[0-9]p[0-9]$ {if (substr($1,9,length(x))x) { afalse }} END {print a}if [ $zj true ] ; thenbreakfidone#如果 变量 x 不等于 16 就将第一个可用的 nbd 设备 挂载 vhd 文件.if [ $x -ne 16 ] ;thenecho 正在挂载......echo realpath $1 /dev/nbd${x}sudo modprobe nbdsudo qemu-nbd -c /dev/nbd${x} realpath $1#10秒内 循环判断 虚拟硬盘可用分区数量用已明确 虚拟硬盘是否已经被挂载且有可用于挂载的分区如果否就卸之并退出。#挂载需要时间而且15秒 都不能 挂上也就可以不用挂了。for n in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; doecho -n .sleep 1pxsudo fdisk -l /dev/nbd${x}|awk -v a0 $1~^/dev/nbd[0-9]p[0-9]$$6!~^[5f]$$6!85 {a1} END {print a}if [ ${px} -ge 1 ] ;thenbreakfidoneif [ $px -eq 0 ] ;thenecho 虚拟硬盘文件不可用或者没有可用分区sudo qemu-nbd -d /dev/nbd${x}exitelseecho 发现可用分区! $pxfi#创建挂载目录sudo mkdir $VhdPath -p#找出虚拟硬盘的各个 可用分区并 逐一挂载。for x in sudo fdisk -l /dev/nbd${x}|awk $1~^/dev/nbd[0-9]p[0-9]$$6!~^[5f]$$6!85 {print substr($1,6)} ; dosudo mkdir ${VhdPath}/${x} -pecho /dev/${x} ${VhdPath}/${x}#循环判断分区是否成功挂载 挂载成功就进行下一分区的挂载。while [ df --outputtarget | awk -v a0 -v pl${VhdPath}/${x} $0~^pl$ {a1} END {print a} -eq 0 ] ; doecho -n ..sudo mount /dev/${x} ${VhdPath}/${x}sleep 1doneecho .doneelseecho 没有可用的qemu-nbd设备来挂载虚拟硬盘!fiecho End ....