貧者のハイパーコンバージドインフラ構築記〜 FreeNAS + VMWare ESXi で作る自作コンバージドインフラ 〜

株式会社 鉄飛テクノロジー
http://www.teppi.com/

貧者のハイパーコンバージドインフラ構築記

目
従来の仮想基盤­次

VMWareESXi ホスト 3 台で運用

従来の仮想インフラ
従来の仮想インフラの課題
新仮想環境の要件

自作 HCI 環境の概要
概要
ハードウェア構成

構築のポイント（苦労した点）
FreeNAS によるストレージ構築
起動ディスクを SSD として光学ベイに収納
起動ディスクに USB メモリは危険です
10Gbps ネットワークカードを装着
RAID 構成をどうするか？
NFS として公開するか？iSCSI として公開するか？

VMWare ESXi 2 台を vcenter で集中管理
NFS の性能問題（ESXi との相性）
vcenter の導入
仮想マシンのバックアップ自動運用
PowerCLI を使う
NFS を使うもう一つの理由
バックアップスクリプト実行を定期実行
稼働イメージ
参考（バックアップスクリプト）

1(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

概要•

コンバージド・インフラストラクチュアとは、ストレージ・ネットワーク・コンピューティングリソース・仮想化ソフトウェアなどを垂直統合的に組み合わせた、サーバ・PC 仮想化基盤です。

•HCI（ハイパーコンバージド・インフラ）とは、ハーフラックに収まる程度の躯体に、コンバージドインフラ構築に必要なハードウェアを収容し、ネットワーク仮想化ソフトウェア、統合管理ソフトウェアと組み合わせてパッケージ化した製品につけられる呼び名です。

•

もともと仮想化基盤を自前で構築するにはそれなりの技術スキル・運用スキルが必要でしたが、HCI ソリューションを採用すれば、要素技術の選定や、組み合わせの相性問題を気にする必要が無く、手軽に仮想化基盤を構築できるようになりました。

•

しかし、HCI はまだまだ予算に乏しい中小企業にとっては高嶺の花です。

•

鉄飛テクノロジーでは、比較的安価で入手できる 1U サーバ 4 台で仮想化基盤を自作して、30 台程度の仮想サーバを運用しています。本記事ではその構築の実際について明かします。

従来の仮想基盤 ー VMWareESXi ホスト 3 台で運用
私たちの会社では、ファイルサーバ全文検索・ファイル共有システム「FileBlog」を開発・販売・サポートしています。パッケージソフトウェアの動作を各種 OS で確認するために、実際にそれぞれの OS をインストールしたテスト環境が必要です。また、カスタマイズしたプログラムをお客様に納品する場合には、お客様向けのカスタムサポートを継続するために、客先環境を模した開発環境を構築し、半永久的に社内で維持する必要があります。

そのために私たちは、多数の仮想マシンを構築し、複数のテスト環境を常時利用して製品のテストを繰り返すとともに、個別のお客様向けカスタム環境も多くを維持し、時々起動してはテストを繰り返しています。

2(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

10 数年前までは、実際に複数台の物理マシンを並べてテストを実行していましたが、VMWareハイパーバイザを導入することで、1 つのホストサーバマシンで、複数の仮想マシンを実行できるようになったため、３台ほどの PC サーバ上にそれぞれ VMWare ESXi をインストールして、数年ほど前から、20 台程度の仮想マシンを運用するようになりました。

サーバはクラウドで動かせばいいという考え方もありますが、この規模になるとクラウドの利用費用もばかにならないので、ミッションクリティカルでないサーバについては、社内で運用を行いたくなります。

従来の仮想インフラ
鉄飛テクノロジーは今でこそ黒字化を達成していますが、決して豊かな会社ではありません。
10 年ほど前はなおさらでしたので、下記のような構成で、安価に構築しました。

・ PC サーバとしては、１万９８００円で投げ売りされるような、デスクトップ躯体の PC サーバ（FUJITSU PRIMERGY TX-100 シリーズ)や、中古１U サーバを調達し、HDD とメモリだけは後日追加してフルに載せていました。

・ ホームセンターで売られている「メタルラック」に PC サーバを並べていました。

・ ハイパーバイザとしては、無料で使える VMWare ESXi をそれぞれのマシンにインストールしていました。

従来の仮想インフラの課題
・ 独立の仮想ホストが 3 台であるため、リソースの利用効率が下がってしまいます。 たとえば一台ではメモリが不足してディスクが余っていて、もう一台ではメモリが余ってディスクが不足しているような場合でも、余っているマシンから不足しているマシンに融通することができません。

・ バックアップ運用の自動化が難しい。
仮想マシンのバックアップを定期的に自動取得して、ディスク障害などに備えたかったので

3(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

すが、独立のマシンが 3 台あると、それぞれのマシンでバックアップの操作を行う必要がありますし、バックアップデータを書き出す先のディスクについてもそれぞれのマシンに接続する必要がありました。

2 年に一度ぐらい停電でサーバが停止することがあったのですが、起動しないかどうか冷や冷やするというのは精神衛生上よくありません。

新仮想環境の要件
従来の環境のデメリットを解消する新環境には、下記の要件を満たすことが期待されました。

1、 十分な容量のディスクスペースを、複数台の仮想ホスト間で共有できるようにしたい。

2、 仮想ホスト間で仮想マシンを移動したり、仮想マシンの複製を作ったりすることを簡単にできるようにしたい。

3、仮想マシンの複製（バックアップ）をスケジュールにもとづいて自動実行できるようにした
い4、なるべくコンパクトに納めたい

4(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

自作 HCI 環境の概要
概要

4 台の（中古）1U サーバで構成します。

・ うち 2 台は、3.5 インチ HDD を 4 台収納できるエントリクラス（メモリ・CPU はしょぼくて OK）サーバ。
Øこの 2 台には、FreeNAS をインストールして、NAS サーバにします。

Ø光学ドライブベイに、起動用 SSD を装着して、4 本の HDD をすべてデータ領域にします。

・ あとの 2 台は、8 コア CPU を 2 ソケットに装着したエンタープライズ向け 1U サーバで、メモリをなるべく増量して（128GB 程度）装着し、これを VMWare ESXi ホストとします。
Ø2.5 インチドライブベイに、起動用を含めた SSD を複数搭載します。

・ NAS と VMWare ホストの間は、10 ギガビットイーサネットで接続しますØ各 PC サーバに 10GBASE-T ネットワークカードを挿してØ

10GBASE-T

8 ポートを備えたハブで接続します

5(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

・ VMWare vSphere Essentials Kit を購入して、2 台の ESXi ホストを vcenter でブラウザから集中管理できるようにします。
ØvSphere Essentials Kit は、約 7 万 7 千円ほど。これまで ESXi は無償版をさんざん使ってきましたが、これで vcenter が使えるようになります。上位の Essentials Plus
Kit が 74 万円以上することを考えると、破格です。

ハードウェア構成

サーバラック（キャスタ付きハーフサイズ）

今回は、中古１U サーバ 4 台をキャスタ付きの小型 12U サーバラックに組み付けました

10Gbit ハブ

NETGEAR XS708E

1Gbit ハブ

NETGEAR GS116

6(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

NAS 用 1U サーバ

２

FUJITSU PRIMERGY RX1330 M1

Ø

CPU : Xeon E3-1231v3@3.4GHz(4core 8threads)ØMemory : 16GB

Ø

HDD : 4TB SATA * 4

Ø

SSD : 100GB SSD を光学ドライブにマウントØ

光学ドライブ HDD マウントキット

ESXi サーバ１

ESXi サーバ２

7(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

構築のポイント（苦労した点）
FreeNAS によるストレージ構築

4 台のサーバのうち、2 台を NAS サーバに仕立てて、NFS ボリュームを公開するようにします。

PC サーバを NAS として利用するために、FreeNAS を採用しました。FreeNAS は FreeBSD
系の OS に、OpenZFS の実装を組み合わせた NAS 用の OS です。ZFS ファイルシステムは、エンタープライズ向けに開発されたファイルシステムで、データが破損しにくい性質を持っています。

起動ディスクを SSD として光学ベイに収納

安価に手に入る一般的な１U サーバは、3.5 インチ HDD を 4 本組み込めるようになっています。
3.5 インチ HDD は、現時点で最も容量単価の安いストレージです。4TB ハードディスクを 4本組めば 16TB の大容量を確保できることになります。

ここで問題となるのが OS（FreeNAS）の起動ディスクです。FreeNAS の起動ドライブに必要なディスク容量はわずか数十ギガバイトにすぎません。そのために 3.5 インチ HDD の 1 本を占有してしまうのは勿体ないことです。だからといって、パーティションを切って 1 本のディスクにシステムドライブ部分とデータドライブ部分を分けるのは面倒です。

そこで今回は、1U サーバにもともと備わっていた CD/DVD-ROM ドライブを取り外し、光学ベイに 2.5 インチサイズの SSD を格納することとしました。

・ 光学ベイとマザーボードをつなぐ電源・SATA ケーブルのコネクタは、光学ベイ用の小型コネクタを利用していました。このコネクタは小さいだけあって強い力を加えると簡単に壊れてしまいます。慎重に引き抜けばよかったのですが、ケーブルについていたコネクタを壊してしまったため、同等品を調達するのに手間取ってしまいました。

・ FreeNAS の起動に必要な SSD は、64GB〜100GB 程度の小さなもので十分です。

・ PC サーバの BIOS 画面で起動ディスクを指定しますが、十分なドキュメントがないためなかなか思ったドライブから起動してくれず、試行錯誤を繰り返しました。

8(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

この辺は中古サーバハンターとしていつも苦労するところです。
（すんなり行きたければ、素直に新品を買って販売店に相談しましょう）

起動ディスクに USB メモリは危険です

・ 容量だけでいえば、USB ポートに USB メモリスティックを挿して、そこに FreeNAS をインストールすることもできます。しかし、長期の安定運用をするには、USB メモリからのOS 起動は危険です。

・ USB メモリは一時的に PC に挿入してデータをコピーし、通常は PC から切り離されてデータを携帯するという目的を想定して設計されています。常時通電しつづけ、データの読み書きが繰り返される状況は、想定されていないように思われます。

・ 特に、ラックマウントサーバの背面コネクタ付近は、熱風が吹き付ける過酷な環境です。こ
こに USB メモリを挿したまま数か月放置すると、携帯用の USB メモリは、熱に負けてデータを失ってしまう恐れが高いのです。
（過去、鉄飛では 4 回トライして 4 回データ消失に見舞われましたので、確率 100％です）

・ 鉄飛テクノロジーではかつて、FreeNAS や VMWare ESXi を USB メモリから起動する構成のマシンを運用したことがありますが、100％の確率で再起動不能に陥ってしまいました。

・ 2 年に一度か二度の停電などで、サーバをシャットダウンした後に、OS が起動できなかった時のショックは計り知れません。
（インストーラディスクから OS を入れ直して、ZFSRAID を復旧させるのに何時間もかかってしまいます）

・ SSD は、腐っても PC に内蔵して常時通電環境に置かれることを想定されて設計されており、プラスチックケースに入った USB メモリと比較して、はるかに信頼性が高いと考えます。

10Gbps ネットワークカードを装着

・ 基本的には挿すだけです。ラックマウントサーバの内部は狭いので、物理的に他の部品と干渉しないように気を付けましょう。
（サーバの現物が届いて、実物の拡張スロットを確認してから、ネットワークカードの調達をするほうが無難です。
）

9(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

・ FreeNAS が対応している NIC というポイントも重要ですが、一般的な Intel の NIC なら、まあ大丈夫です。

RAID 構成をどうするか？

・ NAS を構成するとなると、RAID 構成をどうするかは迷うところでしょう。

・ マザーボードに組み込まれたハードウェア RAID を使って、RAID1、RAID5 にするという選択肢もありますが、私たちは、FreeNAS の標準機能をつかって、ZFS RAID-Z （4 本のディスクのうち一本分をパリティディスクとする構成）で構築することにしました。

ØRAID1 は、わかりやすさとデータの安全のためにはよいのですが、容量が半分になるため、今回は見送りました。
（今回は、同一ハードウェア構成の NAS を二台構築して、相互にデータのバックアップを取り合う予定です。RAID1＋相互ミラーリングの組み合わせは、冗長にすぎると判断しました。
）

Ø

RAID5 が使える RAID カードは相対的にハードウェアが高価であり、安い中古１U サーバとして調達できないので、今回は見送りましたØZFS Raid-z を快適に使うには、それなりに CPU パワー・メモリを必要とします。これを見越して、NAS サーバのメモリは少し多めに搭載してあります

NFS として公開するか？iSCSI として公開するか？

・ RAID-z ボリューム全体にデータセットを作成し、これを NFS で公開することにしました。

・ 一般的には、VMWare のバックエンドストレージは iSCSI で構築する例が多いと思います
が、iSCSI ボリュームは同時に複数のクライアントからマウントできないという点で、NFSに比較して運用上の制約が大きくなってしまいます。

・ NFS ボリュームを VMWare ESXi からマウントすると、ディスク IO 性能が劣悪であるという問題に見舞われましたが、これについては別途後述（NFS の性能問題）の方法で高速化を実現しました。

10(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

VMWare ESXi 2 台を vcenter で集中管理
2 台の１U サーバ（２CPU モデル）を、VMWare ホストとして仕立てました
VMWare ホストに必要なのは、有り余るメモリと有り余る CPU パワーです。ディスク領域は原則として NAS からネットワーク経由で供給されるので、内蔵ディスクの役割は限られます。
起動ディスク・スワップ領域として、起動ディスクとなる SSD を利用します。

なお、最優先で稼働させたい仮想マシン１、２のためにも、内蔵 SSD を割り当てます

NFS の性能問題（ESXi との相性）

仮想マシンのディスクとして、FreeNAS が公開する NFS ストレージを割り当てたところ、極めて劣悪なディスク IO 性能に悩まされました。データのコピーがとにかく遅いのです。
これは、ESXi サーバが NFS ストレージに対する書き込み要求を、毎回同期要求とともに行うためです。

FreeNAS 側で ZFS プールの属性に、「sync=standard」となっていると遅いのですが、これを「sync=disabled」に変更することで、劇的に（10 倍から 100 倍に）高速化できることがわかりました。

そこで、私たちは FreeNAS 上で下記のように設定しました

zfs set sync=disabled POOL1
zfs set atime=off POOL1

sync=disabled の状態では、書き込みの最中に電源切断などが発生すると、データが破損するようになります。私たちは、データ破損のリスクをあえて冒しても、10 倍から 100 倍の高速化のメリットがそれを上回ると考えて、確信犯でこの設定を行っています。

鉄飛テクノロジーでは、製品のビルド環境並びに、テスト環境として、ここで構築した仮想マシン群を活用しています。開発環境・テスト環境は、万が一のトラブルで時々システムが稼働できない状態になったとしても、即座にお客様へのサービス提供が困難になることはありません。復旧に 24 時間ぐらいかかっても問題はないという割り切りがあっての判断です。

11(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

お客様に 24 時間 365 日公開している Web サーバや、重要データを保持するファイルサーバ、業務システムのデータベースなどは、ここで構築している仮想インフラとは別に、稼働させていることに留意してください。

sync=disabled の設定を行うことは、データを危険にさらすという脅し文句を、さんざん読みましたが、 それでも通常、5 秒に一回はデータがディスクに書き出されていることもわかりました。

電源切断などが発生した場合、おそらく単純に 5 秒前の状態に戻る、というのが一番ありえる症状ですが、最悪の場合には ZFS ファイルシステムが破損して読み出しができなくなります。

そこで、FreeNAS の機能で、30 分おきに ZFS プールのスナップショップをとるように設定し、3 日間保持することとしました。こうすると、ZFS が破損してしまった最悪のケースでも、最後のスナップショットを復元することで、最悪でも 30 分前の状態に復元することができるのです。

開発・テスト環境であること、また、弊社の立地（東京都目黒区）では予期せぬ停電などが 5年に 1 回程度しか発生していない実績があることもあって、これで十分と考えています。

vcenter の導入

VMWare ESXi をそれぞれにインストールした上で、2 台の ESXi ホストを Web ブラウザで集中管理するために、vcenter サーバを導入しました。vcenter サーバを稼働させるために、有償の VMWare Essentials ライセンスを購入しています。

1 か所で 2 台の ESXi ホスト上のすべての仮想マシンを管理できることは、もちろん vcenterのメリットです。
しかし、それだけが決め手ではありません。

vcenter を用いることで、仮想マシンのスナップショット作成や、仮想マシンの複製が可能になります。この「仮想マシンの複製」を応用して、仮想マシンのバックアップ運用の自動化ができるのです。

12(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

vcenter サーバのバックアップ

vcenter サーバは、ESXi ホスト上の仮想マシンアプライアンスとして用意され、通常はどちらか一方の ESXi ホスト上で稼働します。この仮想マシンの複製を作成して、もう一方の ESXi ホスト上に置いておけば、万が一ホストマシンに障害が起きた場合でも、無事だったもう一方のESXi ホスト上の vcenter サーバを起動すれば大丈夫です。

仮想マシンのバックアップ自動運用

VMWare 仮想マシンのバックアップをどう運用するか、エンタープライズ環境の場合には、Veeam Bacup などのサードパーティ製のバックアップソリューションを購入するのが一般的ではないかと思います。

貧しいながらも技術で勝負する私たちとしては、多少面倒でも安い方法が無いかと探してみた
結果、よい方法を見つけました。

PowerCLI を使う

PowerCLI とは、VMWare が無償で提供する WindowsPowerShell 向けのライブラリであり、vcenter API を PowerShell スクリプトで利用可能にするものですhttps://code.vmware.com/web/tool/vmware-powercli

これを使って、vcenter サーバにログインし、仮想マシンのスナップショットを作成し、スナップショットをコピーするが可能になります。ESXi ホストに接続された二つの NFS ボリュームにまたがるコピーができることによって、いずれか一方の NAS サーバに障害が発生したときにも、生き残った方で運用を継続できることが可能になります。

NFS を使うもう一つの理由

ESXi ホストにまたがる仮想マシンのコピーは、”VMotion" と呼ばれていて、VMWareEssentials Kit のライセンスでは実行ができません。
（VMWare Essentials「Plus」が必要です）

しかし、NFS に仮想マシンイメージをバックアップしておけば、この NFS ボリュームは両方のESXi ホストから参照できます。コピー元と異なる ESXi ホストから参照できてしまうということは、実質的には ESXi ホストにまたがった仮想マシンのコピーができたようなものです。

13(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

いずれか一方の ESXi サーバに障害が発生したときは、生き残った方の ESXi ホストから NFSボリューム上のバックアップ仮想マシンイメージを参照してマウントすれば稼働させることができるのです。

バックアップスクリプト実行を定期実行

PowerCLI は、今回の仮想インフラとは別に、弊社の別サーバ上にインストールして、バックアップジョブを定期実行するようにタスクスケジューラに登録しました

苦労した点は下記となります・ タスクスケジューラから PowerCLI スクリプトを実行したとき、vcenter に自動ログインできるようにするのに苦労しました。

・ あらかじめ下記コマンドで VMWare の Credential Store にログオン情報を保存しておきます。

New-VICredentialStoreItem -Host "vcenter.teppi.net" -User"administrator@vsphere.local" -Password "password"

Credential Store はユーザプロファイルフォルダの中にあり、上記コマンドを Administratorで実行すれば、下記に保存されます。

C:\Users\Administrator.TEPPI\AppData\Roaming\VMWare\credstore\vicredstore.xml

これを使うには、タスクスケジューラで PowerCLI スクリプトを（ユーザがログインしているかどうかにかかわらず、Administrator 権限、かつ最上位特権付き）で実行せねばなりません。

14(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

稼働イメージ

たとえば、ESXi ホスト olive.teppi.net 上では avocado2/avocado3/avocado5/papaya3/support̲private/vcenter の 6 台の仮想マシンを常時稼働させています。

zz̲avocado2-02-201909250241 は、9 月 25 日 2 時 41 分に取得した avocado2 のスナッ
プショットのバックアップで、世代番号 02 です、各サーバについて、バックアップは最大 3世代まで取るようになっていて、世代番号は 01->02->03->04->01…. とローテーションしつつ、次回取得分世代のファイルは欠番となるようにしています。

15(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記

参考（バックアップスクリプト）

動作保証一切無し！動かす前に自己責任でよく読んで理解してください。

Function Teppi-Backup-VM{
Param([Parameter(Mandatory=$true)][string]$vmNameKey,[Parameter(Mandatory=$false)][int]$maxBackupIdx = 3,
[string]$backupDataStoreName = "NFS̲durian") #end Param$clonePrefix="zz̲"$hostnamePattern = $vmNameKey+"*"#Connect-VIServer が成功するためには、あらかじめ#

New-VICredentialStoreItem -Host "vcenter.teppi.net" -User "administrator@vsphere.local" -Password "password"#のようなコマンドラインを実行して#VMWare の CredentialStore ファイル（たとえば TEPPI\Administrator の場合）#

C:\Users\Administrator.TEPPI\AppData\Roaming\VMWare\credstore\vicredstore.xml に暗号化した情報を書き込んでおきます。

#

タスクスケジューラから呼び出す場合、スクリプトの実行アカウントを一致させる必要があることに注意！

$dummy = Connect-VIServer -Server "vcenter.teppi.net"
try {$vm = Get-VM |Where-Object {$̲.Name -like "$hostnamePattern*" }If ($vm.Count -ne 1){$msg = "hostname("+$hostnamePattern+") not unique."Write-Error -Message $msg -Category:ResourceUnavailable -ErrorId:9# Teppi-SendStartMail $vmNameKey $clonePrefix $msg
$backupDataStoreName

16(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記}else{$vmName = $vm.Name
Write-Output "-- Creating backup of $vmName"# 削除する旧クローンの世代番号と、次に取得する世代番号を決定する$currentCloneIdx = 0
For ($i=1; $i -le $maxBackupIdx; $i++){$cloneName = GetBackupVMName $clonePrefix $i $vmNameKey$cloneVm = Get-VM | Where-Object {$̲.Name-like "$cloneName*"}$cloneAlreadyExists = ($cloneVm.Count -ge 1)# Write-Output $cloneName $cloneAlreadyExists.ToString()
If ($cloneAlreadyExists -eq $false) {$currentCloneIdx = $i # 最初の欠番を見つけるBreak}}
If ($currentCloneIdx -le 1){$currentCloneIdx = 1$prevCloneIdx = 2}Else{
If ($currentCloneIdx -eq $maxBackupIdx){$prevCloneIdx = 1}else{$prevCloneIdx = $currentCloneIdx+1}}
Write-Output "-- Current:$currentCloneIdx, Prev:$prevCloneIdx,
Max:$maxBackupIdx"

17(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記# スナップショットを作る$cloneSnap = $vm | New-SnapShot -Name "Clone Snapshot"# Teppi-SendStartMail $vmNameKey $clonePrefix $vm.Name$backupDataStoreName$vmView = $vm | Get-View# Build clone specification$cloneSpec = new-object Vmware.Vim.VirtualMachineCloneSpec$cloneSpec.Snapshot = $vmView.Snapshot.CurrentSnapshot# Make linked disk specification$cloneSpec.Location = new-object
Vmware.Vim.VirtualMachineRelocateSpec$cloneSpec.Location.Datastore = (Get-Datastore -Name$backupDataStoreName | Get-View).MoRef$cloneSpec.Location.Transform =[Vmware.Vim.VirtualMachineRelocateTransformation]::sparse$cloneBaseName = GetBackupVMName $clonePrefix $currentCloneIdx$vmNameKey$datetime = Get-Date -Format "yyyyMMddHHmm"$cloneName = "$cloneBaseName-$datetime"
Write-Output "-- Creating new clone: $cloneName"$oldCloneVM = Get-VM | Where-Object { $̲.Name -like"$cloneBaseName*" }If ($oldCloneVM.Count -eq 1) {#if $cloneVM already exists, delete it$oldCloneVMName = $oldCloneVM.Name$oldCloneVM | Remove-VM -DeletePermanently -Confirm:$false
Write-Output "-- Deleted existing clone: $oldCloneVMName"

18(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記}$vmView.CloneVM( $vmView.parent, $cloneName, $cloneSpec )# move clone VM to backup folder in the VM Inventory$cloneFolder =Get-Folder -Type VM -Name $cloneFolderName |Get-View | Get-VIObjectByVIView
Move-VM $cloneName -InventoryLocation $cloneFolder# Remove Snapshot created for clone
Get-Snapshot -VM (Get-VM -Name $hostnamePattern) -Name$cloneSnap | Remove-Snapshot -confirm:$False$prevCloneName = GetBackupVMName $clonePrefix $prevCloneIdx$vmNameKey$prevCloneVM = Get-VM | Where-Object { $̲.Name -like"$prevCloneName*" }If ($prevCloneVM.Count -eq 1) {#Delete old generation backup clone VM$prevCloneVMName = $prevCloneVM.Name$prevCloneVM | Remove-VM -DeletePermanently -Confirm:$false
Write-Output "-- Deleted existing old clone: $prevCloneVMName"}#Teppi-SendCompletedMail $vmNameKey $cloneName $backupDataStoreName}}finally{
Disconnect-VIServer -Server vcenter.teppi.net -Confirm:$false}}

19(c)2000-2020 鉄飛テクノロジー

貧者のハイパーコンバージドインフラ構築記#How to use#下記のように使う#Teppi-Backup-VM "okn̲demo02" "zz1̲" "mangoNFS"

2020 年 2 月発行

株式会社 鉄飛テクノロジー

http://www.teppi.com〒153-0064 東京都目黒区下目黒 1-4-6 ロイヤル目黒 1F
TEL：03-3491-1812

20

E-Mail：sales@teppi.com(c)2000-2020 鉄飛テクノロジー