在vRO实现将已有虚拟机磁盘添加到另外的虚拟机上,以为vRA发布Oracle/SQL集群做准备:

// 脚本需要两个输入 vm_obj和diskPath
System.log("Attempting to attach " + diskPath + " to " + vcVM.name);
// Max number of vmdks attached to a single scsi controller
var MAX_NUMBER_ATTACHED_VMDKS = ; var devices = vcVm.config.hardware.device;
var diskFilePath = diskPath; // sample: [sharedata]abc/abc_1.vmdk
var controllerKey;
var unitNumber;
var usedUnitNumbers = [];
for each (controller in devices) {
var isScsi = controller instanceof VcVirtualBusLogicController || controller instanceof VcVirtualLsiLogicController
|| controller instanceof VcParaVirtualSCSIController || controller instanceof VcVirtualLsiLogicSASController;
if (!isScsi) {
continue;
} System.log("SCSI controller found: " + controller.deviceInfo.label);
for each (device in devices) {
if (device.controllerKey == controller.key) {
System.log("Device found: '" + device.deviceInfo.label + "' 'SCSI (" + controller.busNumber + ":" + device.unitNumber + ")'");
controllerKey = controller.key;
usedUnitNumbers.push(device.unitNumber);
}
}
break;
} if (usedUnitNumbers.length >= MAX_NUMBER_ATTACHED_VMDKS) {
throw "SCSI controller is full, the VMDK can not be attached!";
} var backing = new VcVirtualDiskFlatVer2BackingInfo();
backing.fileName = diskFilePath;
backing.diskMode = VcVirtualDiskMode.persistent; var connectable = new VcVirtualDeviceConnectInfo();
connectable.startConnected = true;
connectable.allowGuestControl = false;
connectable.connected = true; // Find the first available SCSI id
for (i = ; i < MAX_NUMBER_ATTACHED_VMDKS; i++) {
if (usedUnitNumbers.indexOf(i) == -) {
unitNumber = i;
System.log("Found available SCSI unit numebr '" + unitNumber + "'");
break;
}
} var device = new VcVirtualDisk();
device.backing = backing;
device.connectable = connectable;
device.controllerKey = controllerKey;
device.unitNumber = unitNumber; var deviceChange = new VcVirtualDeviceConfigSpec();
deviceChange.operation = VcVirtualDeviceConfigSpecOperation.add;
deviceChange.device = device;
var deviceChangeArray = [deviceChange]; var spec = new VcVirtualMachineConfigSpec();
spec.deviceChange = deviceChangeArray; var task = vcVm.reconfigVM_Task(spec);
System.log("Initiating reconfigure...");
System.getModule("com.vmware.library.vc.basic").vim3WaitTaskEnd(task,true,);
System.log("Reconfigure of VM '" + vcVm.name + "' successful.");

vRO 添加已有磁盘到VM的更多相关文章

  1. 分布式监控系统Zabbix3.2添加自动发现磁盘IO并注册监控

     zabbix并没有给我们提供这么一个模板来完成在Linux中磁盘IO的监控,所以我们需要自己来创建一个,在此还是在Linux OS中添加. 由于一台服务器中磁盘众多,如果只一两台可以手动添加,但服务 ...

  2. Azure上采用Json Template从已有的VHD创建VM

    从已有的VHD创建VM是使用Azure中经常要操作的内容. 本文将介绍如何采用Json Template从已经有的VHD创建VM. 一.准备VHD 在我的Azure账户中选择一台VM,如下图: 查看其 ...

  3. IIS:错误: 无法提交配置更改,因为文件已在磁盘上更改

    文件名: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config 错误: 无法提交配置更改,因为文件已在磁盘上更改 通过 Micro ...

  4. (转)淘淘商城系列——VMware添加已配置好的虚拟机

    http://blog.csdn.net/yerenyuan_pku/article/details/72802323 我们有时候会碰到虚拟机环境搭建特别麻烦,很容易出错的问题,而这时我们又刚好有别人 ...

  5. 图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作

    图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作 什么是tabBar? 顶部或者底部tab栏如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以 ...

  6. 自定义配置文件读取产生的“无法添加已属于该配置的 ConfigurationSection”异常解决办法

    最近在编写一个读写自定义配置文件的功能时遇到一个问题,在初始化的时候读入配置显示出来,修改后把配置回存到配置文件,在回存的时候,先移除配置节,再添加,在添加的时候遇到如下的异常: {"无法添 ...

  7. 给KVM添加新的磁盘

    给KVM添加新的磁盘 两种方案 1 添加虚拟磁盘文件 2 添加物理磁盘 硬件配置: 物理主机(宿主机):foundation 物理主机磁盘情况: 我们有三块物理磁盘,sda.sdb和sdc(这里都是S ...

  8. oracle 11gR2 ASM添加和删除磁盘

    一.环境 oracle 11gR2 RAC + Oracle Linux Server release 5.9 二.实施 备注:安全起见,操作之前停数据库实例.ASM实例 1.节点1.2磁盘信息 -- ...

  9. Android 调用系统联系人界面的添加联系人,添加已有联系人,编辑和修改。

    一.添加联系人 Intent addIntent = new Intent(Intent.ACTION_INSERT,Uri.withAppendedPath(Uri.parse("cont ...

随机推荐

  1. thinkPHP3.2.2中支持的URL的四种模式

  2. [ACM] hdu 3923 Invoker (Poyla计数,高速幂运算,扩展欧几里得或费马小定理)

    Invoker Problem Description On of Vance's favourite hero is Invoker, Kael. As many people knows Kael ...

  3. std::condition_variable(3)复习

    #include <iostream> // std::cout #include <thread> // std::thread #include <mutex> ...

  4. docker学习笔记(2) 构建镜像

    一.手动构建一个简单镜像 我们以构建nginx的docker镜像为例:手动构建镜像 docker pull centos    安装基础镜像docker run --name mynginx -it ...

  5. 巨蟒python全栈开发数据库前端9:bootstrap

    1.bootstrap的主网站: http://www.bootcss.com/ (1)bootstrap的CSS样式 (2)bootstrap组件 (3)JavaScript插件 (4)阿里图标库的 ...

  6. MySQL错误日志提示innodb_table_stats和innodb_index_stats不存在故障处理

    查看MySQL error日志,发现有如下报错 7efbc586f700 InnoDB: Error: Table "mysql"."innodb_table_stats ...

  7. 1、Python request(爬虫-百度翻译)

    #encoding=utf-8 import requests def fanyi(): while True: context = input("请输入翻译的内容(退出q):") ...

  8. su: warning: cannot change directory to : Permission denied ;-bash: bash_profile: Permission denied

    一.查看主目录权限对不对 1:问题描述 [root@ser6-52 ~]# su - mongodb su: warning: cannot change directory to /home/mon ...

  9. android studio DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs

    DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs 参考https://stackoverflow.com/questions/38892 ...

  10. 解决后台无法进入提示DedeCMS Error: (PHP 5.3 and above) Please set 'request_order' ini value

    最近小美眉的网站被盯上了,被添加了非常多的dubo页面,删除了5w多个文件,但还是不停的增加,因为网站权重还可以,很多都被收录了,结果可想而知,ytkah帮她迁移,在迁移网站时遇到了一些问题,后台登录 ...