Xenserver批量添加虚拟机磁盘
  WrKbzYIY5GyU 2023年11月02日 45 0

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
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  lh6O4DgR0ZQ8   2023年11月22日   26   0   0 Memory字段sed
  ILwIY8Berufg   2023年11月02日   52   0   0 idesedmaven
  87GpfEheVoVF   2023年11月13日   25   0   0 htmlsed
  zLxnEsMLk4BL   2023年11月19日   27   0   0 升序数据sed
  BPI26WEjHJmG   2023年11月02日   82   0   0 链表等待队列sed
WrKbzYIY5GyU