概要
過去に golang で QueryChangedDiskAreas をコールしました
今回は rbvmomi からコールしてみました
環境
- CentOS 7.5.1840
- Ruby 2.5.0p0
- rbvmomi 2.0.1
サンプルコード
事前に changeTrackingEnabled は有効にしておきましょう
また snapshot も作成しておきます
vCenter などの接続情報は適宜変更してください
require 'rbvmomi'
vim = RbVmomi::VIM.connect(
host: '192.168.100.30',
user: 'administrator@vsphere.local',
password: 'xxxxxxxxxx',
insecure: 'true'
)
dc = vim.serviceInstance.find_datacenter('dc') || fail('datacenter not found')
vm = dc.find_vm('vm') || fail('VM not found')
params = {
snapshot: RbVmomi::VIM.VirtualMachineSnapshot(vim, "snapshot-100"),
deviceKey: 2000,
startOffset: 0,
changeId: "*"
}
ret = vm.QueryChangedDiskAreas(params)
puts ret.startOffset
puts ret.length
ret.changedArea.each { |area|
puts "start => #{area.start}, length => #{area.length}"
}
少し解説
params の 4 つの項目はすべて必須です
スナップショットの moref と HDD のデバイス番号、探索を開始するオフセット、そしてスナップショットと差分を取得する開始地点の ID です
すべて mob から取得できます
QueryChangedDiskAreas
の戻り値は RbVmomi::VIM::DiskChangeInfo
になります
アクセス可能な属性は startOffset
, length
, changedArea
になります
さらに changedArea
は RbVmomi::VIM::DiskChangeExtent
になっておりこれをループすることで実際にディスクの差分箇所を確認することができます
最後に
rbvmomi で QueryChangedDiskAreas
を実行してみました
今回の手順の場合は事前に CBT とスナップショットを取得しておく必要があります
QueryChangedDiskAreas
に渡らすパラメータの構造が少しわかりにくいくらいであとは簡単にコールできると思います
0 件のコメント:
コメントを投稿