vCloud Director1.5環境下での動作のみ確認
vCloud Director1.5の管理コンソールでは仮想マシンのストレージvMotionの機能が用意されていないため、ストレージの移行にはvCloud APIを利用する必要があります。
vCloud Directorでは、仮想マシンはvAppもしくはvAppテンプレートの一部として構成されていますが、どちらの場合も、仮想マシンが保存されているデータストアの情報は、vCloud Directorが独自で持つデータベース内にもメタデータとして情報が記録されており、vSphere上から直接ストレージvMotionを実行してしまうと、メタデータに不整合が発生してしまいます。
vCloud Directorでは、仮想マシンの作成方法に応じて、初期配置されるデータストアが自動的に決定されます。vCloud APIを利用することにより、仮想マシンのディスクファイルを別のデータストアに移動することができます。
また、高速プロビジョニングの機能を使って仮想マシンを作成した場合、リンククローン機能を利用した親子関係のツリー構造を持ったディスクが作成されますが、APIを利用したデータストアの再配置をおこなった場合でも、このツリー構造とトータルのストレージ使用量はそのまま保持されます。
手順
手順1: vCloud APIにログイン
curlLコマンド等を利用し、vCloud APIにアクセスします。まずはじめに、ログイン処理を行い、以後の手順に必要なアクセス用トークンを取得します。administratorのパスワードがpassword
で接続先のvCloudホストがyour_vcloud_host
とした場合、以下のような記述例になります。接続先ホスト名は、正確にはvCloud DirectorのWebコンソールにシステム管理者でログインし、システム
>管理
>公開アドレス
のページにVCD公開 REST APIベース URL:
という項目で設定された値になります。
# curl -i -k -H "Accept:application/*+xml;version=1.5" -u administrator@system:password -X POST https://your_vcloud_host/api/sessions
成功すると、下記のようなトークンを含んだレスポンスが返ってくるので、そのトークンをメモしておきます。x-vcloud-authorization:
の後に続く文字列がトークンです。
HTTP/1.1 200 OK
Date: Fri, 26 Aug 2016 05:20:50 GMT
x-vcloud-authorization: u0+daukop+PlVs4yQ5/eceLe3EVM6lIbUaB6LyhOCqU=
Set-Cookie: vcloud-token=u0+daukop+PlVs4yQ5/eceLe3EVM6lIbUaB6LyhOCqU=; Secure; Path=/
Content-Type: application/vnd.vmware.vcloud.session+xml;version=1.5
Date: Fri, 26 Aug 2016 05:20:50 GMT
Content-Length: 963
手順2: 移行対象の仮想マシンを取得
仮想マシンとその仮想マシンが格納されているデータストアを一覧で取得します。
# curl -i -k -H "Accept:application/*+xml;version=1.5" -H "x-vcloud-authorization: u0+daukop+PlVs4yQ5/eceLe3EVM6lIbUaB6LyhOCqU=" -X GET 'https://your_vcloud_host/api/query?type=adminVM&fields=name,datastoreName'
成功すると、以下のような結果が表示されます。vMotionしたい仮想マシンを探し、該当する行のhref=
の後に続く値をメモします。
<?xml version="1.0" encoding="UTF-8"?>
<QueryResultRecords xmlns="http://www.vmware.com/vcloud/v1.5" total="86" pageSize="25" page="1" name="adminVM" type="application/vnd.vmware.vcloud.query.records+xml" href="https://your_vcloud_host/api/query?type=adminVM&page=4&pageSize=25&format=records&fields=name,datastoreName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://your_vcloud_host/api/v1.5/schema/master.xsd">
...
<AdminVMRecord name="my-vApp-TEST" datastoreName="VCD-Development-1" href="https://your_vcloud_host/api/vApp/vm-03405f54-a370-4c6c-8d4d-3df0b4db36c9"/>
<AdminVMRecord name="testsv1" datastoreName="VCD-Development-1" href="https://your_vcloud_host/api/vApp/vm-0c136fd8-e55d-4638-a59c-4fc76281343d"/>
...
vCloud Directorに多くの仮想マシンが登録されている場合、1回のクエリで1ページ分(デフォルトで25台分)までしか表示されません。上記の例では、86台のマシンが登録されており(total="86"
)そのうち1ページ目(page="1"
)の25台分(pageSize="25"
)が表示されます。2ページ目以降を見たい場合は、下の例のようにクエリにページ指定(page=xx
)を追加するか、ページサイズを変更(pageSize=xx
)してください。
# # curl -i -k -H "Accept:application/*+xml;version=1.5" -H "x-vcloud-authorization: u0+daukop+PlVs4yQ5/eceLe3EVM6lIbUaB6LyhOCqU=" -X GET 'https://your_vcloud_host/api/query?type=adminVM&fields=name,datastoreName&pageSize=30&page=3'
手順3: vCloud上のデータストア一覧を表示
vCloud上に登録されているデータストアを表示し、その中から移行先のデータストアを探します。
# curl -i -k -H "Accept:application/*+xml;version=1.5" -H "x-vcloud-authorization: u0+daukop+PlVs4yQ5/eceLe3EVM6lIbUaB6LyhOCqU=" -X GET 'https://your_vcloud_host/api/query?type=datastore&fields=name'
一覧の取得に成功すると、以下のようにデータストアの一覧が表示されます。移行先のデータストアを見つけ、href=
に続く値をメモします。
...
<DatastoreRecord name="Production-1" href="https://your_vcloud_host/api/admin/extension/datastore/1047c4b4-8696-4e0a-9652-8f0876cc2231"/>
<DatastoreRecord name="Development-1" href="https://your_vcloud_host/api/admin/extension/datastore/9a0f7971-702f-459d-a711-f4c1e4ace6ec"/>
<DatastoreRecord name="Production-2" href="https://your_vcloud_host/api/admin/extension/datastore/bbdf7bf0-e2be-40aa-b922-736e5adb58af"/>
...
手順4: ストレージvMotionの実行
取得した仮想マシンおよびデータストアの情報をもとに、vMotionを実行します。
curl -i -k -H "Accept:application/*+xml;version=1.5" -H "x-vcloud-authorization: u0+daukop+PlVs4yQ5/eceLe3EVM6lIbUaB6LyhOCqU=" -H "Content-Type:application/vnd.vmware.vcloud.relocateVmParams+xml" -X POST https://your_vcloud_host/api/vApp/vm-0332975f-394f-49d2-baf9-b222d126b942/action/relocate -d '<RelocateParams xmlns="http://www.vmware.com/vcloud/v1.5"><Datastore href="https://your_vcloud_host/api/admin/extension/datastore/a5d6bf25-7916-45cb-a65a-5dfa14d2ba38"/></RelocateParams>'
手順5: ログオフ
最後に、vCloud Directorからログオフします。
curl -i -k -H "Accept:application/*+xml;version=1.5" -H "x-vcloud-authorization: u0+daukop+PlVs4yQ5/eceLe3EVM6lIbUaB6LyhOCqU=" -X DELETE 'https://your_vcloud_host/api/session'