LoginSignup
2
2

More than 5 years have passed since last update.

vCloud Director1.5管理下の仮想マシンをvCloud APIを使用してストレージ移行する手順

Posted at

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&amp;page=4&amp;pageSize=25&amp;format=records&amp;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'
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2