Linux怎么删除虚拟硬盘,2017.05.10 qemu-nbd 全自动挂载/卸载 虚拟硬盘中所有可用分区 的 脚本...
#!/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" ] ;then
echo 文件沒找到!
exit
fi
#根據vhd文件路徑和名稱 確定變量 VhdPath 用于建立掛載目錄 和分區
VhdPath=$(realpath "$1").v_disk
#判斷虛擬硬盤文件是否已經被掛載了
if [ `df --output=target | awk -v pl="${VhdPath}" -v a=0 '$0~"^" pl "/nbd[0-9]+p[0-9]+$" {a+=1} END {print a}'` -ge 1 ] ; then
echo 不可重復掛載!
exit
fi
#找出16個nbd設備中第一個可用于虛擬 vhd 的設備 賦值給變量 x
#如果16個設備 均已被占用 ,那么 x=16
for x in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15??16 ; do
zj=`df --output=source | awk -v x=${x} -v a="true" '$1~"^/dev/nbd[0-9]+p[0-9]+$" {if (substr($1,9,length(x))==x) { a="false" }} END {print a}'`
if [ "$zj" = "true" ] ; then
break
fi
done
#如果 變量 x 不等于 16 就將第一個可用的 nbd 設備 掛載 vhd 文件.
if [ $x -ne 16 ] ;then
echo 正在掛載......
echo "`realpath "$1"` ==> /dev/nbd${x}"
sudo modprobe nbd
sudo 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??; do
echo -n .
sleep 1
px=`sudo fdisk -l /dev/nbd${x}|awk -v a=0 '$1~"^/dev/nbd[0-9]+p[0-9]+$"&&$6!~"^[5f]$"&&$6!="85" {a+=1} END {print a}'`
if [ ${px} -ge 1 ] ;then
break
fi
done
if??[ $px -eq 0 ] ;then
echo 虛擬硬盤文件不可用,或者沒有可用分區!
sudo qemu-nbd -d /dev/nbd${x}
exit
else
echo 發現可用分區! $px
fi
#創建掛載目錄
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)}'` ; do
sudo mkdir "${VhdPath}/${x}" -p
echo "/dev/${x} ==> ${VhdPath}/${x}"
#循環判斷分區是否成功掛載 掛載成功就進行下一分區的掛載。
while [ `df --output=target | awk -v a=0 -v pl="${VhdPath}/${x}" '$0~"^"pl"$" {a+=1} END {print a}'` -eq 0 ] ; do
echo -n ..
sudo mount /dev/${x} "${VhdPath}/${x}"
sleep 1
done
echo .
done
else
echo 沒有可用的'"qemu-nbd"'設備來掛載虛擬硬盤!
fi
echo End ....
總結
以上是生活随笔為你收集整理的Linux怎么删除虚拟硬盘,2017.05.10 qemu-nbd 全自动挂载/卸载 虚拟硬盘中所有可用分区 的 脚本...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ug编程内公差和外公差是什么_工厂老师傅
- 下一篇: ie11不识别html5影片,IE11无