nakato’s memo

個人的メモを蓄える場所

VMware Esxi7 仮想マシンが起動中でもコピーする方法

掲題のメモ

 

環境

  • VMware Hypervisor (ESXi) 7.0 u1

ESXi へ SSH ログインを実施しますので、事前に SSH と ESXi Shell のサービスを起動しておきましょう。

 

作成の流れ

ESXi へ SSH 接続

Teratermを起動し対象のesxiのIPアドレスを入力し、SSHでOKを選択します。

TCP port 22, SSH version SSH2, IP version AUTO 

ユーザー名(今回はroot)を入力後、”キーボードインタラクティブ認証を使う”のラジオボタンを選択し”OK”を押します。パスワードを入力してログインします。

認証方式:プレインパスワードを使う

ログイン後に対象の仮想マシンがある階層まで移動します。(datastore1内のcenos7を今回は対象にしています)

cd /vmfs/volumes/<データストア名>/<仮想マシン名>

 

[root@localhost :¯] cd /vmfs//volumes/datastore1/centos7/

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7]

 

スナップショットを取得(ロックを外す)

仮想マシンのスナップショットを取得するために、仮想マシンのID、vmidを以下のコマンドで取得します。(今回はgrepcentosのみを表示させています)

vim-cmd vmsvc/getallvms

 

[root@localhost :/vmfs/volumes/f7654b0e-41d92a65] vim-cmd vmsvc/getallvms |grep cent Skipping invalid VM '14'

16  centos7  [datastore1] centos7/centos7.vmx

 

[root@localhost :/vmfs/volumes/f7654b0e-41d92a65]

 

確認したvmidを指定して、スナップショットを作成します。スナップショット名は任意です。(スナップショット名をtest123としています)

vim-cmd vmsvc/snapshot.create <仮想マシン ID (vmid)> <スナップショット名>

 

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7] vim-cmd vmsvc/snapshot.create 16 test123 ]Create Snapshot:

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7]  ] 

 

スナップショットの管理: centos7

centos7

L test123

   L 現在点

スナップショット作成後、”centos7-000001.vmdk”と”centos7-000001-sesparse.vmdk”が作成されます。仮想マシンはこのディスクで稼働していることになるため、”centos7.vmdk”のロックが外れるためコピーできる状態となります。

 

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7] ls -l

で確認

仮想ディスク (vmdk)のコピー

以下のコマンドで仮想ディスク (vmdk) をバックアップします。-d thin でシンプロビジョニングままコピーします。

vmkfstools -i コピー元.vmdk -d thin コピー先.vmdk

 

実際に使用したコマンド

vmkfstools -i /vmfs/volumes/datastore1/centos7/centos7.vmdk -d thin /v
mfs/volumes/USB-Datastore/copy/centos7.vmdk

 

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7] vmkfstools -i /vmfs/volumes/datastore1/centos7/centos7.vmdk -d thin /vmfs/volumes/USB-Datastore/copy/centos7.vmdk

Destination disk format: VMFS thin-provisioned

Cloning disk '/vmfs/volumes/datastore1/centos7/centos7.vmdk' ...

Clone: 25% done.

Clone: 100% done.

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7] 

 

スナップショットを削除

バックアップが完了したらスナップショットは不要になるので、スナップショットを削除し、仮想ディスクを統合します。(スナップショットを削除せずvmxファイルをコピーして起動しようとするとcentos7-000001.vmdkがありませんとエラーが発生します)

スナップショットを削除するためにスナップショット ID を確認します。

vim-cmd vmsvc/snapshot.get <仮想マシン ID (vmid)>

 

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7]   vim-cmd vmsvc/snapshot.get 16

Get Snapshot:

|-Root

--Snapshot None         : test123

--Snapshot Id        :  1

--Snapshot Descrption    : 

--Snapshot Created On   :  6/10/2021 15:42:25

--Snapshot State             :  powered off

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7]   

確認したスナップショット ID を指定し、スナップショットを削除します。

vim-cmd vmsvc/snapshot.remove <仮想マシン ID (vmid)> <スナップショット ID>

 

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7] vid-cmd vmsvc/snapshot.remove 16 1

Remove Snapshot:

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7] 

仮想ディスク(vmdk)以外のファイルのバックアップ

find コピー元ディレクトリ -not -name “*.vmdk” -exec cp {} コピー先ディレクトリ \;

今回使用したコマンド
centos7以下のvmdkファイル以外のものをcopy以下にコピーしています。(スワップファイル (vswp) やロックファイル (vmx.lck) などがコピーされませんが問題ありません)

find /vmfs/volumes/datastore1/centos7/* -not -name “*.vmdk” -exec cp {
} /vmfs/volumes/USB-Datastore/copy/  \;

 

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7]  find /vmfs/volumes/datastore1/centos7/* -not -name "*vmdk" -exec cp {} /vmfs/volumes/USB-Datastore/copy/  \:

cp: can't open '/vmfs/volumes/datastore1/centos7/centos7.vmdk.lck' : Device or resourve busy

[root@localhost :/vmfs/volumes/60952c01-ca0484f2-1176-90b11c807be2/centos7] 

最後に

copy以下にコピーされたvmxファイルを登録後に起動すれば問題なく立ち上がると思います。(以下出てきてもコピーしましたで大丈夫です)

 

質問への回答: centos7

コピーしました

 

 

otomosa.com