VMware vSphere PowerCLIを使用したスクリプトをバッチから起動するためのメモ

VMware vSphere PowerCLIを使用したスクリプトをバッチから起動するためのメモです

VMware vSphere PowerCLIは便利ですが、VMware vSphere PowerCLIコンソールを立ち上げてからのコマンド実行なので、少しめんどくさいです。なので少し調べてみました。

なお、VMware vSphere PowerCLIは、以下からダウンロードできます。

ダウンロード vSphere PowerCLI 5.5

VMware vSphere PowerCLIに限らずですが、
Powershell スクリプトファイル(.PS1)を実行するためにはポリシー変更が必要です。

VMware vSphere PowerCLIを初回起動時には以下のように表示されます。

. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Program
 Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLI
Environment.ps1 を読み込むことができません。詳細については、「about_Execution_P
olicies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:3
+ . "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Init
ial ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
 + CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
 + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>

 

この場合、管理者として実行したPowershellにて、以下のコマンドを実行する必要があります。

Set-ExecutionPolicy RemoteSigned

(上記の場合、ローカルのローカルに保存されているスクリプトは実行可能。インターネットからダウンロードしたスクリプト(非ローカルのスクリプト)は、署名されているもののみが実行可能。)

そのほかのパラメータとしては、以下のようなものがあります。

Unrestricted
全てのスクリプトが実行可能。ただしインターネットからダウンロードしたスクリプトは、実行するかどうかが確認されるので、ユーザーが明示的に許可した場合のみ実行される

Bypass
全てのスクリプトが実警告やユーザーへの確認なしに、全てのスクリプトが実行可能

 

 

これで、VMware vSphere PowerCLIを起動した状態でPowerSHellからスクリプトファイルが実行できるようになります。

ためしに以下のps1ファイルを作成します

Get-PowerCLIVersion.ps1

#vSpherePowerCLIのバージョン表示
Get-PowerCLIVersion

 

これをVMware vSphere PowerCLIで実行します。

Welcome to the VMware vSphere PowerCLI!

Log in to a vCenter Server or ESX host: Connect-VIServer
To find out what commands are available, type: Get-VICommand
To show searchable help for all PowerCLI commands: Get-PowerCLIHelp
Once you've connected, display all virtual machines: Get-VM
If you need more help, visit the PowerCLI community: Get-PowerCLICommunity

Copyright (C) 1998-2012 VMware, Inc. All rights reserved.PowerCLI 
C:\Program Files\VMware\Infrastructure\vSphere PowerCLI> cd C:\tool\Pow
erShellCUSTOM

PowerCLI C:\tool\PowerShellCUSTOM> .\PowerCLIVersion.ps1

PowerCLI Version
----------------
 VMware vSphere PowerCLI 5.1 Release 1 build 793510
---------------
Snapin Versions
---------------
 VMWare AutoDeploy PowerCLI Component 5.1 build 768137
 VMWare ImageBuilder PowerCLI Component 5.1 build 768137
 VMware vCloud Director PowerCLI Component 1.5 build 793505
 VMware License PowerCLI Component 5.1 build 669840
 VMware vSphere PowerCLI Component 5.1 build 793489

 PowerCLI C:\tool\PowerShellCUSTOM>

 

しかし、コマンドプロンプトやバッチファイルから以下のように実行しても、エラーになります。

C:\>cd C:\tool\PowerShellCUSTOM
C:\tool\PowerShellCUSTOM>powershell .\PowerCLIVersion.ps1
用語 'Get-PowerCLIVersion' は、コマンドレット、関数、スクリプト ファイル、また
 は操作可能なプログラムの名前として認識されません。名前が正しく記述されているこ
 とを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行
 してください。
 発生場所 C:\tool\PowerShellCUSTOM\PowerCLIVersion.ps1:1 文字:20
 + Get-PowerCLIVersion <<<<
 + CategoryInfo : ObjectNotFound: (Get-PowerCLIVersion:String) []、
 CommandNotFoundException
 + FullyQualifiedErrorId : CommandNotFoundException

 

この場合は、実行するps1ファイルに以下の行を追加します

#PowerCLIスナップイン組み込み
Add-PSSnapin VMware.VimAutomation.Core

 

実際にやってみます。

Get-PowerCLIVersion.ps1 を変更

#PowerCLIスナップイン組み込み
Add-PSSnapin VMware.VimAutomation.Core

#vSpherePowerCLIのバージョン表示
Get-PowerCLIVersion

 

コマンドプロンプトから実行してみます

C:\tool\PowerShellCUSTOM>powershell .\PowerCLIVersion.ps1

PowerCLI Version
----------------
 VMware vSphere PowerCLI 5.1 Release 1 build 793510
---------------
Snapin Versions
---------------
 VMWare AutoDeploy PowerCLI Component 5.1 build 768137
 VMWare ImageBuilder PowerCLI Component 5.1 build 768137
 VMware vCloud Director PowerCLI Component 1.5 build 793505
 VMware License PowerCLI Component 5.1 build 669840
 VMware vSphere PowerCLI Component 5.1 build 793489

C:\tool\PowerShellCUSTOM>

実行できました。

あとは以下のようなバッチファイルを書けば、すぐに実行できますね。

@echo off
cd C:\tool\PowerShellCUSTOM
powershell .\PowerCLIVersion.ps1

Views: 22

カテゴリー: ESXi, Windows | コメントする

ESXiでのネットワークに関するKnowledgeメモ

ESXiでのネットワークに関するKnowledgeメモです

経験上でいうと(あくまで個人的な意見です)、

・仮想NICは古いOSならフレシキブル。
新しいOS(2003以降)ならばE1000が安牌だけど、パフォーマンス重視であればVMXnet3も検討。
VMNET2?なにそれおいしいの?

(でもE1000にも一部条件で罠があるので注意(特定ESXiバージョンでのSolarisゲストとか)。
VMware的にはVMXnet3を使ってほしいような気がするけど)

 

・ネットワークに問題があった場合は、まずはTSOをOFF

(特にVMXNET3使用時やLinux使用時)

TSOをOFFにするとCPU使用率が上がるけど安定性重視。
LROも通信速度劣化の原因になる場合があるとのことなのでOFF推奨。

その他ネット上ではGSO,GRO,RX,TX とかもOFFにするのがよいという噂もあるので状況に応じて変更してください。

また、RX Ring Bufferが標準だと512Byteと小さく、Ringバッファがあふれる場合があるので最大値(4096)に増やしておきましょう。

Linuxの場合は以下のコマンドを実施(恒久的には、/etc/rc.d/rc.local とかに追記)

ethtool -K eth0 tso off
ethtool -K eth0 lro off
ethtool -G thh0 rx 4096

(状況に応じて) 
ethtool -K eth0 gso off
ethtool -K eth0 gro off
ethtool -K eth1 rx off
ethtool -K eth1 tx off

設定はNICごとに設定なので、複数NICがあれば、それぞれに設定です。
確認は ethtool -k eth0、ethtool 0g eth0  でどうぞ

 

VMXNET3の場合、Windows2008/R2,Windows2012/R2の場合は以下の設定をするといいらしいです

Netshでの設定

netsh int tcp set global chimney=Disabled
netsh int tcp set global autotuninglevel=Disabled
netsh int tcp set global congestionprovider=None
netsh int tcp set global ecncapability=Disabled
netsh int ip set global taskoffload=disabled
netsh int tcp set global timestamps=Disabled

確認は netsh int tcp show global  でどうぞ。

後は、最新パッチのESX5.xを使用している場合は、以下の設定もいいそうです
(逆に、古いESX5.x(ESXi 5.1 Update 2 、 ESXi 5.0 Patch 12 、ESXi 5.5 Update 1より前)だとdisableにしましょう。)
Control Panel > Network and Internet > Network Connections > Propaties > Advance
RSS     Disable ->enable へ変更

(参考)
Network performance with VMXNET3 on Windows Server 2008R2

 

・ゲストで大きいパケットを受信した時にDropする場合は、RXバッファを増やすのも手

Linuxの場合は以下のコマンドを実施(恒久的には、/etc/rc.d/rc.local とかに追記)
(E1000やVMXNet3の場合)

ethtool -G eth0 rx 4096

設定はNICごとに設定。
確認はethtool -g eth0  で どうぞ

Windowsの場合は、NICのプロパティから変更できるようです。

 

 

VMware Knoeledge Base

Enabling TSO in a Windows virtual machine (1465)

WindowsゲストでのTSOの有効化方法のお話

 

仮想マシンに使用するネットワーク アダプタの選択 (1036627)

Flexible(Vlance,VMXNET)、E1000、VMXNET 2 (拡張)、VMXNET 3について、使用可能OSなど条件のお話。

 

Poor TCP performance might occur in Linux virtual machines with LRO enabled(1027511)

VMXNET2,VMXNET3を使用している場合にネットワークパフォーマンスが悪くなるばあいがあるので、そのときはTSOを無効化してほしいというお話。

 

RSS が Windows 仮想マシンで有効になっていると、VMXNET3 が頻繁にリセットする (2065201)

RSSが有効なWindows仮想マシンでVMXNET3を使用しているとNICが頻繁にリセットする場合があるとのこと。対策はRSSを無効にしようというお話。
ESXi 5.1 Update 2 、 ESXi 5.0 Patch 12 、ESXi 5.5 Update 1で解決しているのこと

 

Broadcom アダプタで tg3 ドライバを利用する環境で TSO を有効にしている場合 ESX/ESXi ホストでデータ破損が発生する (2072706)

BCM5719 などの Broadcom 社製 NIC デバイスでTSOを使用している場合、古いドライバを使用していると通信に不具合が発生するので、ドライバのバージョンアップをするか、TSOを無効化してほしいというお話。

 

esxtop の出力で仮想スイッチの受信パケットのドロップが表示される (2079812)

ゲストで大きいパケットを受信した時にDropする場合は、RXバッファを増やすと解消できる場合があるというお話。

 

VMware ESXi 5.1 U2 または ESXi 5.5 GA における、e1000 アダプタを使用する Solaris 仮想マシンでのネットワーク スループットのパフォーマンスの問題 (2086372)

VMware ESXi 5.1 Update 2 および ESXi 5.5 GA上でSolaris仮想マシンを稼動させた場合、仮想e1000アダプタを使用しているとネットワークスループットが著しく低下するので、ESXiのバージョンを変更するか、仮想NICを変更してくださいというお話。

SolarisなZfsを使用してNFSの仮想内ストレージとして使用しているような方は、引っかかりそうです。(E1000でないとジャンボフレームが使えないので・・・)

 

VMWare 環境における TCP セグメンテーション オフロード (TSO) と Large Receive Offload (LRO) について (2092912)

TSOのメリット・デメリットと、有効化・無効化方法の説明。

 

同じ ESXi 5.x ホスト上で E1000 または E1000E 仮想ネットワーク アダプタを使用するゲストの場合ドロップされるパケットの率が高い (2094947)

ESX5.xな同一ホスト上で動かしているゲストがE1000,E1000e仮想NICを使用している場合、パケットドロップが発生する場合がある。ESXi 5.1 Update 2 で解決されているのバージョンアップするか、仮想NICを変えてねというお話。

 

VMXNET3 ドライバを使用した Linux 仮想マシンでトラフィック シェーピングが有効な分散 vSwitch への接続時にネットワーク スループットが低下する (2101312)

ESX4.1でVMXNET3を使用したゲストで、トラフィックシェービングを使用しているとネットワークスループットが落ちるので、TSOをOFFにしてくださいとのいうお話。

 

VMXNET3 ネットワーク アダプタを使用した Linux システムから UDP パケットがドロップされる (2101827)

ESX5.0ホスト上でVMXNET3をLinuxで使うと、40バイト以下の小さなUDPパケットでドロップが発生するというお話。
解決にはVMware ESXi 5.0, Patch 04 ESXi-5.0.0-20120904001-standard (2032591)を当てるかE1000に変更する必要があるとのこと。

 

ただ、状況によるチューニングですので、実際に設定する場合は各自の責任でお願いします。

Views: 41

カテゴリー: 未分類 | コメントする

VyOSを調べた結果のメモ

 

仮想環境内で使用できるソフトウェアルータのひとつとして、Vyattaがありましたが、
Vyattaが買収されてComminity Editonの開発が終わったため、フォークして再出発したものがVyOSらしいです。

 

ただし、ルータとしてではなくブリッジ接続(HUB)として動作させる場合、ESXi側で仮想スイッチで無差別モードをONにする必要があるはず・・・・

 

公式サイト

vyos.net/wiki

 

公式サイト 日本語翻訳サイト

vyos.net/wiki 日本語サイト

 

インストール手順

『Vyatta』からフォークした『VyOS』をインストールしてみた

 

標準にないWeb 設定画面を外付けするVirtual Applianceらしいです。

vyBuddy virtual appliance

 

Zabbix AgentとSNMPの設定方法

VyOS(Vyatta)をSNMPとZabbix Agent経由で監視してみる

 

NAT構成の作成方法例

VMware ESXi 5.5にVyOS1.0.4をインストールしてみました。

 

VPNの張り方

ソフトウェアルータVyattaとVyOSを用いてSoftLayerとオフィスをIPsec VPN接続する #softlayer

 

 

Views: 13

カテゴリー: ESXi | コメントする