ESXi6.5上の仮想マシンをクローンしようと思ったらクローンという機能がありませんでした。
どうやらvCSAがないと使えないみたいですね。
うーん、もったいない。
普段、Oracle Virtual Boxで検証していますが、クローンは便利だったので重宝しておりました。
今回はIntel NUCにSSDを装着しているので尚更。。
という事で今回はコピーを手動で実施します。
やり方は、ESXホストにSSHで接続して直接設定を書き換えていきます。
但し、本番環境で実施する場合は自己責任でお願い致します。
仮想マシンのコピー手順
ESXホストへSSH接続しディレクトリを移動します。
そして、mkdirコマンドでnode02ディレクトリを作成します。
[root@nuc:~] cd /vmfs/volumes/datastore1/ [root@nuc:/vmfs/volumes/59747db8-37156abe-20d5-94c69111766e] mkdir node02 [root@nuc:/vmfs/volumes/59747db8-37156abe-20d5-94c69111766e] ls DNS media node01 node02 rac_share_disk
各仮想マシンのディレクトリが見えています。
まずは、node01のvmdkファイルをクローンします。
間違ってもcpやmvでコピー・変更しないように。
[root@nuc:/vmfs/volumes/59747db8-37156abe-20d5-94c69111766e] vmkfstools -i ./node01/node01.vmdk ./node02/node02.vmdk Destination disk format: VMFS zeroedthick Cloning disk './node01/node01.vmdk'... Clone: 100% done.
このまま待ちます。
3分程度で完了しました。
次に、vmxファイルを新しいnode02.vmxという名前でコピーしてviで編集します。
[root@nuc:/vmfs/volumes/59747db8-37156abe-20d5-94c69111766e/node02] cp ../node01/node01.vmx ./node02.vmx [root@nuc:/vmfs/volumes/59747db8-37156abe-20d5-94c69111766e/node02] vi node02.vmx
node01になっているファイル名をすべてnode02へ変更していきます。
.encoding = "UTF-8" config.version = "8" virtualHW.version = "13" vmci0.present = "TRUE" floppy0.present = "FALSE" numvcpus = "2" memSize = "8192" bios.bootRetry.delay = "10" sched.cpu.units = "mhz" sched.cpu.affinity = "all" powerType.suspend = "soft" tools.upgrade.policy = "manual" scsi0.virtualDev = "pvscsi" scsi0.present = "TRUE" sata0.present = "TRUE" usb.present = "TRUE" ehci.present = "TRUE" scsi0:0.deviceType = "scsi-hardDisk" scsi0:0.fileName = "node02.vmdk" sched.scsi0:0.shares = "normal" sched.scsi0:0.throughputCap = "off" scsi0:0.present = "TRUE" ethernet0.virtualDev = "vmxnet3" ethernet0.networkName = "VM Network" ethernet0.addressType = "generated" ethernet0.wakeOnPcktRcv = "FALSE" ethernet0.uptCompatibility = "TRUE" ethernet0.present = "TRUE" sata0:0.deviceType = "atapi-cdrom" sata0:0.fileName = "emptyBackingString" sata0:0.present = "TRUE" displayName = "node02" guestOS = "oraclelinux7-64" toolScripts.afterPowerOn = "TRUE" toolScripts.afterResume = "TRUE" toolScripts.beforeSuspend = "TRUE" toolScripts.beforePowerOff = "TRUE" tools.syncTime = "FALSE" uuid.bios = "56 4d c4 80 a0 4b 55 82-bd 87 af 4a c3 07 66 e2" uuid.location = "56 4d c4 80 a0 4b 55 82-bd 87 af 4a c3 07 66 e2" vc.uuid = "52 1f 6c 8a 6e 0f 93 1d-4d 23 00 50 2b 26 4b c4" sched.cpu.min = "0" sched.cpu.shares = "normal" sched.mem.min = "0" sched.mem.minSize = "0" sched.mem.shares = "normal" ethernet0.generatedAddress = "00:0c:29:07:66:e2" vmci0.id = "-1022925086" cleanShutdown = "TRUE" extendedConfigFile = "node02.vmxf" ethernet1.virtualDev = "vmxnet3" ethernet1.networkName = "interconnect1" ethernet1.addressType = "generated" ethernet1.wakeOnPcktRcv = "FALSE" ethernet1.uptCompatibility = "TRUE" ethernet1.present = "TRUE" ethernet2.virtualDev = "vmxnet3" ethernet2.networkName = "interconnect2" ethernet2.addressType = "generated" ethernet2.wakeOnPcktRcv = "FALSE" ethernet2.uptCompatibility = "TRUE" ethernet2.present = "TRUE" ethernet1.generatedAddress = "00:0c:29:07:66:ec" ethernet2.generatedAddress = "00:0c:29:07:66:f6" sata0:0.startConnected = "FALSE" sata0:0.allowGuestConnectionControl = "FALSE" sata0:0.clientDevice = "TRUE" tools.guest.desktop.autolock = "FALSE" nvram = "node02.nvram" pciBridge0.present = "TRUE" svga.present = "TRUE" pciBridge4.present = "TRUE" pciBridge4.virtualDev = "pcieRootPort" pciBridge4.functions = "8" pciBridge5.present = "TRUE" pciBridge5.virtualDev = "pcieRootPort" pciBridge5.functions = "8" pciBridge6.present = "TRUE" pciBridge6.virtualDev = "pcieRootPort" pciBridge6.functions = "8" pciBridge7.present = "TRUE" pciBridge7.virtualDev = "pcieRootPort" pciBridge7.functions = "8" hpet0.present = "TRUE" sched.cpu.latencySensitivity = "normal" numa.autosize.vcpu.maxPerVirtualNode = "2" numa.autosize.cookie = "20001" sched.swap.derivedName = "/vmfs/volumes/59747db8-37156abe-20d5-94c69111766e/node02/node02-c5044047.vswp" pciBridge0.pciSlotNumber = "17" pciBridge4.pciSlotNumber = "21" pciBridge5.pciSlotNumber = "22" pciBridge6.pciSlotNumber = "23" pciBridge7.pciSlotNumber = "24" scsi0.pciSlotNumber = "160" usb.pciSlotNumber = "32" ethernet0.pciSlotNumber = "192" ehci.pciSlotNumber = "33" vmci0.pciSlotNumber = "34" sata0.pciSlotNumber = "35" scsi0.sasWWID = "50 05 05 60 a0 4b 55 80" ethernet0.generatedAddressOffset = "0" monitor.phys_bits_used = "43" vmotion.checkpointFBSize = "4194304" vmotion.checkpointSVGAPrimarySize = "4194304" softPowerOff = "TRUE" usb:1.speed = "2" usb:1.present = "TRUE" usb:1.deviceType = "hub" usb:1.port = "1" usb:1.parent = "-1" tools.remindInstall = "FALSE" toolsInstallManager.lastInstallError = "21004" toolsInstallManager.updateCounter = "4" disk.locking = "FALSE" diskLib.dataCacheMaxSize = "0" diskLib.dataCacheMaxReadAheadSize = "0" diskLib.dataCacheMinReadAheadSize = "0" diskLib.dataCachePageSize = "4096" diskLib.maxUnsyncedWrites = "0" ethernet1.pciSlotNumber = "224" ethernet2.pciSlotNumber = "256" ethernet1.generatedAddressOffset = "10" ethernet2.generatedAddressOffset = "20" svga.guestBackedPrimaryAware = "TRUE" usb:0.present = "TRUE" usb:0.deviceType = "hid" usb:0.port = "0" usb:0.parent = "-1" migrate.hostLog = "./node01-c5044047.hlog"
最後に、logファイル以外をすべてnode02ディレクトリへコピーします。
コピー後にファイル名を編集します。
[root@nuc:/vmfs/volumes/59747db8-37156abe-20d5-94c69111766e/node02] cp -rp ../node01/node01.nvram ../node01/node01.vmsd ../node01/node01.vmxf ./
全て完了したら仮想マシンとして登録します。
[root@nuc:/vmfs/volumes/59747db8-37156abe-20d5-94c69111766e/node02] vim-cmd solo/registervm /vmfs/volumes/datastore1/node02/node02.vmx 7
戻り値で”7″が返って来れば正常に登録が完了です。
それ以外が返ってきた場合はvmdkを読み込めず仮想マシンのサイズが0GBになっているので、ディレクトリを削除してやり直しましょう。