Skip navigation
2018

ひきつづき、ネステッド vSAN 環境セットアップの工夫を紹介します。

今回は、vSAN クラスタのセットアップです。PowerCLI も利用していきます。

 

これまでの話は下記をどうぞ。

図解 ネステッド vSAN ラボ。

ネステッド vSAN ラボを構築するための工夫 Part.1。(物理 マシン ESXi ~ VCSA デプロイ)

ネステッド vSAN ラボを構築するための工夫 Part.2。(物理マシン ESXi と ESXi VM の準備)

 

前回までの投稿にて、起動されたネステッド ESXi が用意されているので、

ここからは、クラスタの作成、ESXi の登録、クラスタでの vSAN 有効化

といったことを進めていきます。

1box-vsan-13.png

3-1. クラスタの作成。

vCenter のインベントリに、クラスタ「vSAN-Cluster」を作成します。

PowerCLI は、以前の投稿にて vCenter に接続したままの状態です。

この時点では、まだ vSAN は有効化していません。

PowerCLI> Get-Datacenter LAB-DC | New-Cluster -Name vSAN-Cluster

 

3台のネステッド ESXi (Nest-ESXi)を登録します。

  • PowerCLI の Add-VMHost コマンドを利用。
  • ESXi は、IP アドレスのまま(192.168.1.31 ~ 192.168.1.33)でインベントリ登録。
  • ESXi VM は 1つのテンプレート VM からクローンしているため、
    ID 重複によるエラーをさけたいのでローカルデータストア(datastore1)は ESXi から除去。
  • データストア削除(Remove-Datastore)でエラーになってしまいますが、
    データストアは外せるので、今回はエラーを無視しています。

 

PowerCLI のプロンプトに投入するコマンドラインは、下記のようにします。

"192.168.1.31","192.168.1.32","192.168.1.33" | %{

    $hv_name = $_

    Add-VMHost -Name $hv_name -Location (Get-Cluster vSAN-Cluster) -User root -Password VMware1! -Force

    Get-VMHost $hv_name | Remove-Datastore -Datastore "datastore*" -Confirm:$false -ErrorAction:Ignore

}

 

Nest-ESXi の VMkernel ポートで vSAN トラフィックを有効にします。

設定対象はクラスタ「vSAN-Cluster」配下の、全ホストの vmk0 です。

本番環境では、vSAN トラフィックは( vmk1 などに)分離することが多いはずですが、

ラボ用途なので今回はシンプルに vmk0 に相乗りさせています。

PowerCLI> Get-Cluster vSAN-Cluster | Get-VMHost | Get-VMHostNetworkAdapter -Name vmk0 | Set-VMHostNetworkAdapter -VsanTrafficEnabled:$true -Confirm:$false

 

3-2. vSAN クラスタのセットアップ。

クラスタで、vSAN を有効にします。

PowerCLI> Get-Cluster vSAN-Cluster | Set-Cluster -VsanEnabled:$true -Confirm:$false

 

vSAN ディスクグループを作成します。

「ScsiLun」などから、Nest-ESXi の認識しているデバイス名を確認しておきます。

容量や VMDK の接続順などから、デバイス名を特定できます。

このデバイス名は、Nest-ESXi の vSCSI / VMDK 構成が同じであれば、必ず同じものになります。

PowerCLI> Get-Cluster vSAN-Cluster | Get-VMHost | Get-VMHostDisk | select VMHost,ScsiLun,TotalSectors | Sort-Object VMHost,ScsiLun

 

VMHost       ScsiLun             TotalSectors

------       -------             ------------

192.168.1.31 mpx.vmhba0:C0:T0:L0     33554432

192.168.1.31 mpx.vmhba0:C0:T1:L0     41943040

192.168.1.31 mpx.vmhba0:C0:T2:L0    104857600

192.168.1.31 mpx.vmhba0:C0:T3:L0    104857600

192.168.1.32 mpx.vmhba0:C0:T0:L0     33554432

192.168.1.32 mpx.vmhba0:C0:T1:L0     41943040

192.168.1.32 mpx.vmhba0:C0:T2:L0    104857600

192.168.1.32 mpx.vmhba0:C0:T3:L0    104857600

192.168.1.33 mpx.vmhba0:C0:T0:L0     33554432

192.168.1.33 mpx.vmhba0:C0:T1:L0     41943040

192.168.1.33 mpx.vmhba0:C0:T2:L0    104857600

192.168.1.33 mpx.vmhba0:C0:T3:L0    104857600

 

 

各ホストでディスクグループを作成します。

PowerCLI> Get-Cluster vSAN-Cluster | Get-VMHost | New-VsanDiskGroup -SsdCanonicalName mpx.vmhba0:C0:T1:L0 -DataDiskCanonicalName mpx.vmhba0:C0:T2:L0,mpx.vmhba0:C0:T3:L0

 

ディスクグループ作成が完了すると、その分の

vSAN データストアの容量(CapacityGB)も増加します。

PowerCLI> Get-Cluster vSAN-Cluster | Get-VsanSpaceUsage

 

Cluster              FreeSpaceGB     CapacityGB

-------              -----------     ----------

vSAN-Cluster         295.945         299.953

 

 

これで、vSAN データストアが構成されて、

そこに VM を作成したりできるようになりました。

ネステッド環境上でのポートグループの作成やVM の作成などは、

基本的にネストであることを意識せずに実施します。

 

ちなみに、vSAN クラスタの PowerCLI でのセットアップについては、以前にも投稿しましたが、

こちらは少し前のものなので、現行のハンズオンラボ環境には未対応です・・・

PowerCLI で vSAN セットアップをためしてみる。

 

以上、ネステッド vSAN の環境セットアップについての話でした。

 

まだ続きあり。

ネステッド vSAN ラボを構築するための工夫 Part.4。(スクリプトでの簡素化)

前回に続いて、ネステッド vSAN 環境セットアップの工夫を紹介します。

今回は、特にネスト特有の、物理マシンの ESXi と、ESXi VM の部分についてです。

ひきつづき PowerCLI も利用していきます。

 

これまでの話は下記をどうぞ。

図解 ネステッド vSAN ラボ。

ネステッド vSAN ラボを構築するための工夫 Part.1。(物理 マシン ESXi ~ VCSA デプロイ)

 

ネステッド ハイパーバイザとなる ESXi VM は、下図のように

vCenter(VCSA)と横並びの VM として作成して、ネスト環境特有の設定をします。

今回は最初に、テンプレートにする ESXi VM を作成し、

それをクローンして 3台の ネステッド ESXi にします。

1box-vsan-12.png

2-1. ESXi VM を接続するポートグループの作成。

ESXi にデフォルトで作成される「VM Network」ポートグループは、

今回の構成ではネストではない VM で利用するものとします。

そこで、デフォルトで作成される仮想スイッチ「vSwitch0」に、

ESXi VM を接続する、ネスト環境むけのポートグループ

「Nested-Trunk-Network」を新規作成します。

 

このポートグループには、下記の設定をしています。

  • 無差別モード(プロミスキャスモード)の許可。
  • 「偽装転送」と「MAC アドレス変更」はデフォルト同様に「許可」。
  • VLAN ID 4095。

※ PowerCLI は前回の投稿で vCenter に接続したままの状態です。

PowerCLI> $pg_name = "Nested-Trunk-Network"

PowerCLI> $pg = Get-VMHost | Get-VirtualSwitch -Name vSwitch0 | New-VirtualPortGroup -Name $pg_name -VLanId 4095

PowerCLI> $pg | Get-SecurityPolicy | Set-SecurityPolicy -AllowPromiscuous:$true -ForgedTransmits:$true -MacChanges:$true

 

2-2. ESXi VM の作成。

ESXi をインストールする VM を作成します。

これは、あとで複数台の ESXi をクローンするための、VM テンプレートとして利用する想定です。

 

今回は、下記のような PowerCLI スクリプトで VM を作成します。

末尾の 4行では「ハードウェア アシストによる仮想化をゲスト OS に公開」にあたる

NestedHVEnabled を有効にしています。

また、vNIC は 最低限である 1つだけ作成しています。

 

create-esxi-vm.ps1

$vm_name = "vm-esxi-template-01"

$hv_name = "192.168.1.20"

 

$guest_id = "vmkernel65Guest"

$num_cpu = 2

$memory_gb = 6

$ds_name = "datastore1"

$vmdk_gb = 16

$pg_name = "Nested-Trunk-Network"

 

$vm = New-VM -Name $vm_name -VMHost $hv_name `

    -GuestId $guest_id `

    -NumCpu $num_cpu -CoresPerSocket $num_cpu `

    -MemoryGB $memory_gb `

    -DiskGB $vmdk_gb -Datastore $ds_name -StorageFormat Thin `

    -NetworkName $pg_name

 

$vm = Get-VM -Name $vm_name

$vm_config_spec = New-Object VMware.Vim.VirtualMachineConfigSpec

$vm_config_spec.NestedHVEnabled = $true

$vm.ExtensionData.ReconfigVM($vm_config_spec)

 

スクリプトは、vCenter に接続した状態で、下記のように実行します。

PowerCLI> .\create-esxi-vm.ps1

 

さまざまな vSAN を作成しやすいように、

VMDK の追加や ISO ファイルの接続はクローン後に実施します。

 

2-3. ESXi VM への ESXi インストールとクローン準備。

まず ESXi VM に、ESXi インストーラの ISO イメージファイルを接続してから起動し、

通常どおり ESXi をインストールします。

 

ESXi インストーラの ISO イメージファイルも、PowerCLIで VM に接続します。

ISO イメージファイルは、あらかじめ 物理マシン ESXi のデータストアに配置してあります。

※ESXi を Kickstart でインストールする場合は、この ISO イメージファイル接続は不要です。

PowerCLI> $iso_path = "[datastore1] iso/VMware-VMvisor-Installer-6.7.0.update01-10302608.x86_64.iso"

PowerCLI> Get-VM vm-esxi-?? | New-CDDrive -IsoPath $iso_path -StartConnected:$true

 

ESXi Shell を有効化して、vSphere Client の VM のコンソールからログインします。

この時点では、まだネットワーク設定は不要です。

 

下記の 2つの設定をします。

 

1) クローンによる MAC アドレス変更の対策として、

/Net/FollowHardwareMac を有効化します。

[root@localhost:~] esxcli system settings advanced set -o /Net/FollowHardwareMac -i 1

 

2) クローン後の ESXi VM 初回起動で UUID を再生成するために、

/etc/vmware/esx.conf ファイルから「/system/uuid」をいったん記載削除します。

※ これは vi などの編集でもよいです。

[root@localhost:~] sed -i "/uuid/d" /etc/vmware/esx.conf

 

設定後、ESXi VM をシャットダウンします。

クローン前に ESXi VM を起動した場合は、また /system/uuid を記載削除する必要があります。

 

また、VM テンプレートには、変換しても、しなくても大丈夫です。

 

2-4. ESXi VM のクローン。

ここまでに作成した VM「vm-esxi-template-01」から、3台の VM をクローンします。

  • PowerCLI は、vCenter に接続した状態で 物理マシン ESXi「192.168.1.20」上の VM をクローン。
  • 仮想マシン名は「vm-esxi-XX」とする。

PowerCLI> 1..3 | % {New-VM -VMHost 192.168.1.20 -StorageFormat Thin -VM "vm-esxi-template-01" -Name ("vm-esxi-" + $_.toString("00"))}

 

vSAN Disk として利用する VMDK を追加します。

今回は Cache 用に 20GB x 1、Capacity 用に 50GB x 2 を 各 ESXi に用意します。

PowerCLI> Get-VM vm-esxi-?? | New-HardDisk -SizeGB 20 -StorageFormat Thin

PowerCLI> Get-VM vm-esxi-?? | New-HardDisk -SizeGB 50 -StorageFormat Thin

PowerCLI> Get-VM vm-esxi-?? | New-HardDisk -SizeGB 50 -StorageFormat Thin

 

VMDK は下記のように作成されます。

PowerCLI> Get-VM vm-esxi-?? | Get-HardDisk | select CapacityGB,Parent,Name | Sort-Object Parent,Name

 

CapacityGB Parent     Name

---------- ------     ----

        16 vm-esxi-01 Hard disk 1

        20 vm-esxi-01 Hard disk 2

        50 vm-esxi-01 Hard disk 3

        50 vm-esxi-01 Hard disk 4

        16 vm-esxi-02 Hard disk 1

        20 vm-esxi-02 Hard disk 2

        50 vm-esxi-02 Hard disk 3

        50 vm-esxi-02 Hard disk 4

        16 vm-esxi-03 Hard disk 1

        20 vm-esxi-03 Hard disk 2

        50 vm-esxi-03 Hard disk 3

        50 vm-esxi-03 Hard disk 4

 

 

ESXi VM をまとめてパワーオンします。

PowerCLI> Get-VM vm-esxi-?? | Start-VM

 

このあとの工程に備えて、ネステッド ESXi の VMware Tools が起動したことを確認しておきます。

PowerCLI> Get-VM vm-esxi-?? | select Name,PowerState,@{N="ToolsStatus";E={$_.Guest.ExtensionData.ToolsStatus}}

 

Name       PowerState ToolsStatus

----       ---------- -----------

vm-esxi-03  PoweredOn     toolsOk

vm-esxi-02  PoweredOn     toolsOk

vm-esxi-01  PoweredOn     toolsOk

 

 

2-5. ネステッド ESXi の設定。

ネステッド ESXi が起動したら、普通の ESXi と同様に

vCenter から登録する準備としてネットワーク設定をします。

これは VM コンソール経由で DCUI や esxcli などで設定できます。

 

しかし、ESXi には標準で VMware Tools がインストールされており、

VM にインストールした場合は、vCenter 経由で(ゲスト OS としての)ESXiのコマンドが実行できます。

そして、それを PowerCLI 経由で実行することもできます。

 

そこで、下記の投稿にある PowerCLI のサンプルスクリプトを利用して、

3台の ESXi VM それぞれにむけて esxcli によるネットワーク設定をします。

PowerCLI から Nested ESXi の esxcli を実行してみる。(GuestProcessManager)

 

1台目。

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-01 system hostname set --host esxi-01 --domain go-lab.jp

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-01 network ip interface ipv4 set --interface-name=vmk0 --type=static --ipv4=192.168.1.31 --netmask=255.255.255.0 --gateway=192.168.1.1

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-01 network ip dns server add --server=192.168.1.101

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-01 network ip dns server add --server=192.168.1.102

 

2台目。

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-02 system hostname set --host esxi-02 --domain go-lab.jp

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-02 network ip interface ipv4 set --interface-name=vmk0 --type=static --ipv4=192.168.1.32 --netmask=255.255.255.0 --gateway=192.168.1.1

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-02 network ip dns server add --server=192.168.1.101

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-02 network ip dns server add --server=192.168.1.102

 

3台目。

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-03 system hostname set --host esxi-03 --domain go-lab.jp

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-03 network ip interface ipv4 set --interface-name=vmk0 --type=static --ipv4=192.168.1.33 --netmask=255.255.255.0 --gateway=192.168.1.1

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-03 network ip dns server add --server=192.168.1.101

PowerCLI> ./invoke_nested-esxcli.ps1 -ESXiUser:root -ESXiPass:VMware1! -ESXiVM:vm-esxi-03 network ip dns server add --server=192.168.1.102

 

 

これで、ネステッド ESXi が 3台作成された状態になります。

あとは、vSAN クラスタのセットアップです。

 

つづく・・・

ネステッド vSAN ラボを構築するための工夫 Part.3。(vSAN クラスタ構築)

前回はネステッド vSAN のイメージ(下記)を紹介したので、

今回はセットアップ手順での工夫についての紹介です。

図解 ネステッド vSAN ラボ。

 

一般的には、ESXi の Host Client や vSphere Client / vSphere Web Client といった

GUI のツールを利用することが多いと思います。

しかし、検証環境は様々なバージョン / 構成でセットアップすることが多いはずなので、

ここでは、パラメータ記録や自動化をしやすいように PowerCLI などを積極的に利用します。

 

最初にネステッド vSAN 環境のベースとなる 物理マシンの ESXi と、vCenter Server を用意します。

1box-vsan-11a.png

 

1-1. 物理マシンへの ESXi のインストール。

物理マシンへの ESXi のインストールは、通常どおり ISO イメージから作成した CD ブートです。

マシンの管理ボードなどから ISO ファイルをマウントできる場合は、ISO イメージそのものから、

PXE サーバを用意している場合は、Kickstart でインストールすることができます。

 

一般的には、インストール方法にかかわらず ISO イメージでインストールしたうえで

オフラインバンドル(zip ファイル)のパッチを適用することになります。

今回は ESXi 6.7 U1 の ISO を利用していて、その後のパッチは(まだないので)適用していませんが、

あらかじめ下記のようにオフラインバンドルファイルから

ISO イメージファイルを作成しておくと、インストール直後にパッチ適用された状態になるので便利です。

ESXi のオフライン バンドルから ISO イメージ ファイルを作成してみる。

 

1-2. 物理マシンの設定。

今回、ESXi インストール直後に、下記の ESXi 設定変更のみ実施しておきます。

  • ネットワーク設定。(IP アドレス、サブネットマスク、デフォルトゲートウェイ)
  • 時刻あわせ。NTP を設定して確実に時刻同期をするか、Host Client や esxcli などで手動で設定変更します。
    • ESXi の都合上、UTC(JST マイナス9時間)で設定します。
      これは、VCSA のデプロイ時に時間がずれていると失敗してしまうためです。

 

データストア名や仮想スイッチ / ポートグループの構成は、

この時点ではデフォルトのままです。

これらの設定変更は、この ESXi を vCenter 管理下にしたあとで実施します。

 

1-3. VCSA のデプロイ。

vCenter Server Appliance(VCSA)をデプロイします。

VCSA は、何度もデプロイするような場合は vcsa-deploy による CLI インストール(下記のような)がおすすめです。

VCSA 6.7 を CLI デプロイしてみる。(embedded-PSC x2 の Enhanced Linked Mode)

 

vcsa-deploy コマンドのオプションと、インストールで利用する JSON ファイルは、

VCSA 6.7 以前 / 以降 のバージョンでパラメータが異なります。

ちなみに VCSA 6.5 形式の JSON ファイルは、VCSA 6.7 でも利用できました。

 

本番環境での VCSA のデプロイは、FQDN でのホスト名指定が事実上必須ですが、

ラボのとりまわしをよくするためにホスト名のかわりに IP アドレスを指定して

デプロイすることもあります。(DNS サーバへの vCenter アドレス登録を省略できるので)

 

ちなみに複数、同名の VCSA をデプロイすると、証明書のエラーにより

Chrome などのブラウザで vSphere Web Client / vSphere Client が

表示できなくなることがあります。

その場合は、以前の投稿にも記載しましたが・・・

VCSA 6.5 U1 を CLI デプロイしてみる。(vCenter + embedded-PSC)

下記の要領で解消できることもあります。

ちなみに、何度も同じ名前で vCenter をデプロイしていると Chrome / Microsoft Edge で

証明書のエラーになり HTML5 Client / vSphere Web Client にアクセスできなくなることがありますが、

その場合はデプロイした VCSA の CA 証明書を(Firefox などアクセスできるブラウザで何とかダウンロードして)

インストールするとアクセス可能になります。

※その場合、証明書は「https://vCenterのアドレス/certs/download.zip」からダウンロードできます。

 

1-4. VCSA への物理マシン ESXi の登録。

デプロイした vCenter のインベントリにクラスタを作成して、物理マシンの ESXi を登録します。

せっかくなので PowerCLI 11 を利用します。

 

まず、PowerCLI で ESXi に接続します。

今回の vCenter のアドレスは「192.168.1.30」です。

管理ユーザなどのパスワードは、あえてデモ用としてよく知られているものを利用しています。

vCenter の SSL 証明書を入れ替えていないので、エラー回避のため「-Force」が必要です。

PowerCLI> Connect-VIServer 192.168.1.30 -User administrator@vsphere.local -Password VMware1! -Force

 

vCenter インベントリに、データセンター「LAB-DC」を作成します。

PowerCLI> Get-Folder -Type Datacenter | New-Datacenter LAB-DC

 

物理マシン ESXi を登録するクラスタ「MGMT-Cluster」を作成します。

ここではクラスタは必須ではないですが、せっかくなのでそれっぽく作成しています。

PowerCLI> Get-Datacenter LAB-DC | New-Cluster MGMT-Cluster

 

クラスタ「MGMT-Cluster」に、物理マシン ESXi「192.168.1.20」を登録します。

ここでも SSL エラー回避のため「-Force」が必要です。

PowerCLI> Get-Cluster MGMT-Cluster | Add-VMHost -Name 192.168.1.20 -User root -Password VMware1! -Force

 

次は vCenter からの操作で、物理マシン ESXi のうえに

ネステッド ハイパーバイザむけの ESXi と VM の準備をします。

 

つづく。

ネステッド vSAN ラボを構築するための工夫 Part.2。(物理マシン ESXi と ESXi VM の準備)

vSAN の機能検証などで、ネステッド ハイパーバイザ環境を利用することがあります。

そこで、1台の物理マシンに vSAN 環境をセットアップした様子を紹介します。

 

今回の環境構築の方針。

今回は、下記のような vSAN 環境をセットアップします。

  • 物理マシンは 1台のみ利用する。
  • スペックは下記。
    • CPU: 4コア / 8スレッド(ただし 8スレッド必須というわけではない)
    • メモリ: 32GB
    • ディスク: 500GB SSD x 1つだけ
    • NIC: 1Gbps を 1ポートだけ
  • ネステッド ハイパーバイザ環境のベースになる物理サーバの ESXi も、vCenter に登録する。
    • これは、vCenter に登録したほうが ESXi / VM の管理をしやすいため。
  • vCenter は vSAN クラスタ(vSAN データストア)の外に配置する。
    • vCenter を vSAN データストア上に配置することもできるが、
      まず vSAN そのものを勉強するためには vSAN 外にある方がよいと思うので。
  • vCenter Server 6.7 U1 / ESXi 6.7 U1
    • せっかくなので最新版を利用する。

nest-vsan-01.png

 

物理マシン ESXi / ネステッド ESXi の関係。

この環境では、物理マシンの ESXi 上の VM に ESXi をインストールしています。

前スクリーンショットの vCenter インベントリでのネステッド ESXi(Nest-ESXi)と

VM の関係を図示すると、下記のようになります。

  • 物理マシン ESXi には、下記を配置します。
    • vCenter(仮想アプライアンスである VCSA を利用)
    • ESXi をインストールする VM(ESXi VM)3台
    • ESXi VM のテンプレート
  • 物理マシン ESXi に配置している VM へのリソース割り当ては下記にしました。
    • vCenter: VCSA の「極小」(Tiny)スペック。vCPU: 2、メモリ: 10GB
    • ESXi VM: vCPU: 2、メモリ: 6GB、VMDK: 16GB。(これを 3VM作成)
  • 物理マシン ESXi 1台は MGMT-Cluster に登録します。
    • Nest-ESXi の実体となる ESXi VM は、こちらのクラスタで見えます。
  • Nest-ESXi のインストールは、だいたい下記のいずれかになるはずです。
    • 物理 ESXi のデータストアに格納した ISO ファイルを、
      ESXi VM の仮想 CD/DVD ドライブに接続してインストール。
    • PXE Boot によるネットワーク経由での Kickstart インストール。
  • 物理マシン ESXi 側でインストールした Nest-ESXi 3台は、vSAN-Cluster に登録します。

1box-vsan-01.png

ESXi VM はそれぞれ ESXi をインストールするか、

あらかじめ ESXi をインストールした VM をテンプレート(クローン元 VM)を利用します。

今回の ESXi VM では、下記のような設定をします。

  • ゲスト OS の種類は「ESXi 6.5 以降」を選択。
  • CPU で「ハードウェア アシストによる仮想化をゲスト OS に公開」のチェックを入れる。
  • 起動オプション → ファームウェアは BIOS にする。

nest-vsan-04.png

 

ストレージ(データストア / VMDK)の関係。

Nest-ESXi のローカルディスクで vSAN データストアを構成しますが、

その実体は、ESXi VM に接続された VMDK ファイルです。

(下図では Nest-ESXi が1台ですが、実際は 3台で vSAN データストアを構成します)

 

Nest-ESXi で vSAN 構成後にそのうえで VM (図の Nest-VM)を作成すると、

当然ながら、その VMDK もネストされることになります。

1box-vsan-03.png

ネットワーク(vSwitch / ポートグループ / vNIC)の関係。

Nest-ESXi 上で VM(Nest-VM)を作成した場合、Nest-VM の vNIC では、

自身のものとは異なる MAC アドレス / VLAN の通信が発生します。

 

デフォルトの状態ではそのような通信ができないため、
物理マシン ESXi 側で、下記の設定をします。

  • Nest-ESXi を接続するポートグループを追加します。
    • 今回は Nested-Trunk-Network という名前で作成。
    • シンプルに、標準仮想スイッチ(vSS)の、標準ポートグループで作成。
  • 作成したポートグループで、無差別モードを許可する。
    • これで 自身の MAC アドレス以外の通信も受け取るようになる。
    • MAC アドレス変更 / 偽装転送 は、標準ポートグループでは許可されているので、そのまま。
  • 作成したポートグループで、VLAN ID 4095 を設定する。
    • これで 物理 ESXi のポートグループで VLAN ID を付与したまま通すようになり、
      Nest-ESXi 側のポートグループで VLAN ID を付与できるようになります。

 

Nest-ESXi 側では、とくにネストしていることを意識することなく

ネットワークを構成します。

vSAN では VMkernel(vmk)ポートで vSAN トラフィックを有効にする必要がありますが、
これは Nest-ESXi 側だけで設定します。

1box-vsan-04.png

物理 ESXi で作成したポートグループに、すべての ESXi VM の vNIC を接続します。

nest-vsan-03.png

 

作成したポートグループでは、下記のように

無差別モードを有効化、VLAN ID 4095 を設定しています。

nest-vsan-02.png

 

環境構築自体は、ネストであるかどうかにかかわらず、

一般的な vSphere Client(旧 HTML5 Client)や vSphere Web Client での操作となります。

また、ラボを頻繁に構築するようであれば PowerCLI などによる自動化もできます。

 

構築 Tips につづく・・・

ネステッド vSAN ラボを構築するための工夫 Part.1。(物理 マシン ESXi ~ VCSA デプロイ)

VMSA-2018-0025 にて、 VM の 3D サポート機能にかかわる

セキュリティ脆弱性が公表されました。

 

よい機会なので、PowerCLI で VM の設定状況を確認してみます。

ただし、この「3D サポートを有効化」はデフォルトでは無効になっています。

そこで今回の環境では意図的に有効にしています。

 

まず、今回は 10台の VM を用意しました。

PowerCLI> Get-VM | Sort-Object Name

 

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

test-vm-001          PoweredOn  1        4.000

test-vm-002          PoweredOn  1        4.000

test-vm-003          PoweredOn  1        4.000

test-vm-004          PoweredOn  1        4.000

test-vm-005          PoweredOn  1        4.000

test-vm-006          PoweredOn  1        4.000

test-vm-007          PoweredOn  1        4.000

test-vm-008          PoweredOn  1        4.000

test-vm-009          PoweredOn  1        4.000

test-vm-010          PoweredOn  1        4.000

 

 

このうち1台の VM の設定を確認してみます。

対象の仮想デバイスの設定を確認する専用コマンドが見つけられなかったので、

とりあえず VM「test-vm-010」の ExtensionData からデバイスの情報を探ると

Key = 500 が Video Card だとわかるので、その情報を見てみます。

PowerCLI> $vm = Get-VM test-vm-010

PowerCLI> $vm.ExtensionData.Config.Hardware.Device | select Key,{$_.DeviceInfo.Label}

 

  Key $_.DeviceInfo.Label

  --- -------------------

  200 IDE 0

  201 IDE 1

  300 PS2 controller 0

  100 PCI controller 0

  400 SIO controller 0

  600 Keyboard

  700 Pointing device

  500 Video card

12000 VMCI device

1000 SCSI controller 0

15000 SATA controller 0

16000 CD/DVD drive 1

2000 Hard disk 1

4000 Network adapter 1

 

 

この VM の Video Card は、Enable3DSupport が True になっていることがわかりました。

PowerCLI> $vm.ExtensionData.Config.Hardware.Device | where {$_.key -eq 500}

 

VideoRamSizeInKB       : 16384

NumDisplays            : 1

UseAutoDetect          : False

Enable3DSupport        : True

Use3dRenderer          : automatic

GraphicsMemorySizeInKB : 262144

Key                    : 500

DeviceInfo             : VMware.Vim.Description

Backing                :

Connectable            :

SlotInfo               :

ControllerKey          : 100

UnitNumber             : 0

 

 

Enable3DSupport は、下記のように確認することもできます。

PowerCLI> ($vm.ExtensionData.Config.Hardware.Device | where {$_.key -eq 500}).Enable3DSupport

True

PowerCLI> Get-VM test-vm-010 | %{($_.ExtensionData.Config.Hardware.Device | where {$_.key -eq 500}).Enable3DSupport}

True

 

まとめて複数の仮想マシンの情報を確認することもできます。

PowerCLI> Get-VM | select Name,@{N="Enable3DSupport";E={($_.ExtensionData.Config.Hardware.Device | where {$_.key -eq 500}).Enable3DSupport}} | Sort-Object Name

 

 

Name        Enable3DSupport

----        ---------------

test-vm-001           False

test-vm-002           False

test-vm-003           False

test-vm-004            True

test-vm-005            True

test-vm-006           False

test-vm-007            True

test-vm-008            True

test-vm-009            True

test-vm-010            True

 

 

下記のように、Enable3DSupport  = True の VM だけ抽出することもできます。

PowerCLI> Get-VM | select Name,@{N="Enable3DSupport";E={($_.ExtensionData.Config.Hardware.Device | where {$_.key -eq 500}).Enable3DSupport}} | where {$_.Enable3DSupport -eq "True"} | Sort-Object Name

 

 

Name        Enable3DSupport

----        ---------------

test-vm-004            True

test-vm-005            True

test-vm-007            True

test-vm-008            True

test-vm-009            True

test-vm-010            True

 

 

また、今回の設定のように .vmx パラメータの設定によるものであれば、

シンプルに Get-AdvancedSetting で確認できるケースもあります。

PowerCLI> Get-VM | Get-AdvancedSetting -Name mks.enable3d | select Entity,Value | Sort-Object Entity

 

Entity      Value

------      -----

test-vm-004 TRUE

test-vm-005 TRUE

test-vm-007 TRUE

test-vm-008 TRUE

test-vm-009 TRUE

test-vm-010 TRUE

 

 

このように、PowerCLI を利用することで、簡単に、大量 VM の設定確認ができます。

 

ちなみに、今回の実行環境は Windows PowerShell + PowerCLI 11.0.0 です。

PowerCLI> Get-Host | select Version

 

Version

-------

5.1.17134.228

 

PowerCLI> Get-Module VMware.PowerCLI | select Version

 

Version

-------

11.0.0.10380590

 

 

以上、PowerCLI による VM 情報取得例でした。