xenserver虚拟机批量添加磁盘脚本,此方法添加完成后,需要登录windows系统进入磁盘管理对磁盘进行格式化后才能使用
如需批量实现批量对磁盘进行格式化,推荐如下方法:
1 在windows系统执行磁盘初始化计划任务脚本,检查新添加磁盘并格式化处理。
2 手动新添加一块磁盘,在windows系统格式化磁盘后,后续通过此磁盘批量克隆后再挂载给对应虚拟机。
#!/bash/bin
pdd=3 #虚拟机后缀占位符,例如01,001,默认值为3显示001开始
while true; do
echo "你正在运行Citrix脚本程序,有如下功能可选择"
echo "1 显示当前系统虚拟机列表"
echo "2 批量添加虚拟机磁盘"
echo "3 批量设置防鼠标漂移"
echo "4 退出程序运行"
read -p "请输入你要选择的序号:" num
vm_list() {
xe vm-list | awk '/name-label/||/power-state/{print $NF}' | xargs -n2 | sort | sed '/ng$/s/running/已开机/g' | sed '/ed$/s/halted/已关机/g' | cat -n
read -p "请输入要启动或者关闭的虚拟机前缀:" vmname
read -p "请输入虚拟机开始编号:" num01
read -p "请输入虚拟机结束编号:" num02
read -p "请输入start|stop:" set
echo “确认是否要执行如下虚拟机$set操作”
printf "$vmname-%0"$pdd"d\n" $(seq $num01 $num02)
read -p “确认请输入:y否则:n” num04
[ $num04 = y ] && echo "开始批量操作虚拟机" || exit
for i in $(seq $num01 $num02); do
num03=$(printf "%0"$pdd"d\n" $i)
vm=$vmname-$num03
if [ $set = start ]; then
xe vm-start name-label=$vm
echo "已启动虚拟机$vm"
elif [ $set = stop ]; then
xe vm-shutdown name-label=$vm
else
echo "输入指令错误,请输入start或stop"
fi
echo "已完成虚拟机$vm关闭"
done
}
add_disk() {
echo "你的存储存储信息如下"
dispaly=$(xe sr-list | awk -F ":" '/name-label/{print $NF}' | cat -n)
echo "$dispaly"
read -p "请输入你选择的序号:" num
name=$(xe sr-list | awk -F ":" '/name-label/{print $NF}' | sed "$num"p -n | sed -e 's/^[[:space:]]*//')
uid=$(xe sr-list name-label="$name" params=uuid --minimal)
echo "已选出存储$name $uid"
read -p "请输入你要添加的虚拟磁盘大小GB:" size
read -p "磁盘已完成创建,请将此磁盘挂载给虚拟机并格式化,已完成格式化请按y,否则n:" format
[ $format = y ] && echo "将以此磁盘克隆并挂载给输入的虚拟机" || exit
read -p "请输入虚拟机前缀:" vmname
read -p "请输入虚拟机开始编号:" num01
read -p "请输入虚拟机结束编号:" num02
read -p "请输入虚拟机未添加磁盘前,磁盘数量" num05
for i in $(seq $num01 $num02); do
num03=$(printf "%0"$pdd"d\n" $i)
vm01=$vmname-$num03
num04=$(xe vm-disk-list name-label=$vm01 | grep VBD | wc -l)
if [ $num04 -eq $num05 ]; then
Nvdi=$(xe vdi-create name-label=$vm01-date type=user virtual-size="$size"GiB sr-uuid=$uid)
vm=$(xe vm-list name-label=$vmname-$num03 --minimal)
vbd=$(xe vbd-create device=$num04 vdi-uuid=$Nvdi vm-uuid=$vm type=Disk mode=RW)
xe vbd-plug uuid=$vbd &>/dev/null
echo "已完成虚拟机$vm01磁盘添加,添加大小为"$size"GB"
else
echo "虚拟机$vm01磁盘已存在,无需再次添加"
fi
done
}
set_mouse() {
read -p "请输你要设置鼠标防漂移的虚拟机前缀:" vmname
read -p "请输入虚拟机开始编号:" num01
read -p "请输入虚拟机结束编号:" num02
for i in $(seq $num01 $num02); do
num03=$(printf "%0"$pdd"d\n" $i)
vm01=$vmname-$num03
uid=$(xe vm-list name-label=$vm01 --minimal)
xe vm-param-set uuid=$uid platform:usb=true platform:usb_tablet=true
echo "已完成虚拟机$vm鼠标防漂移设置"
done
}
quit() {
exit
}
if [ $num -eq 1 ]; then
vm_list
elif [ $num -eq 2 ]; then
add_disk
elif [ $num -eq 3 ]; then
set_mouse
elif [ $num -eq 4 ]; then
quit
else
echo "输入错误,请重新输入"
fi
done