こんにちは、ネットワールドの海野です。
vExpert Advent Calendar 2018の 12月9日分ということで、ブログ記事を作成しました。
PowerCLIを使うと、WindowsのPowerShellによってVMware製品の環境を操作することができます。
PowerCLIのインストール方法は以前の記事をご覧ください。
【できること】
NetAppをNFSストレージとしてESXiへマウントする場合、NetAppのドキュメントに基づいた設定値をESXiへ入力することでストレージのパフォーマンスや安定性の向上が期待できます。
今回ご紹介するPowerCLIを利用することで、上記の設定値を一発で入力できるようになります。
【注意事項】
このサンプルスクリプトは弊社並びに私個人で何らかの動作を保証するものではありません。ご自身の責任にてご利用いただくことを前提としております。
以下のドキュメントに基づいて作成されていますが、適宜最新の情報をご確認ください。
ESXi host values set by VSC for VMware vSphere
https://library.netapp.com/ecmdocs/ECMLP2843689/html/GUID-346ACB95-6AD4-4DEA-8901-C9697AC3530F.html
また、このサンプルスクリプトはESXi 6.5を対象としており、ESXi 6.5でのみテストをしています。
【使い方】
PowerCLIがインストールされたWindows環境において、NFSストレージをマウントするESXiと通信できることが前提です。
このPowerCLIを.ps1形式で実行すると、ESXiホストの名前 / ユーザー名 / パスワードを確認されます。
正しく入力され、認証に成功すると対象となるESXiホストのパラメータを更新します。
更新されるパラメータの項目名と設定値は次の通りです。
- TcpipHeapSize : 32
- TcpipHeapMax : 1536
- MaxVolumes : 256
- MaxVolumes : 256
- MaxQueueDepth : 64
- HeartbeatMaxFailures : 0
- HeartbeatFrequency : 12
- HeartbeatTimeout : 5
設定が完了するとESXiの再起動を促されますので、確認の上で再起動を実行します。
なお、このときユーザープロファイルのドキュメントに実行ログを出力する仕様になっています。
以下、サンプルコードです。
##################################################
# Section 1 - Initialize VMware PowerCLI
##################################################
Import-Module VMware.PowerCLI
Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false
##################################################
# Section 2 - Apply Best Practice for NetApp
##################################################
Start-Transcript
Write-Host '
*********************************** 注 意 ***********************************
NFS Best Practices for NetAppの設定を行うPowerCLIスクリプトです。
*****************************************************************************
'
$esxi = Read-Host 'ESXiホスト名を入力してください'
$username = Read-Host 'ユーザー名を入力してください'
$password = Read-Host 'パスワードを入力してください'
try{
Connect-VIServer -Server $esxi -User $username -Password $password -ErrorAction Stop
} catch{ Write-host "認証エラー"
exit
}
Get-VMHost $esxi | Get-AdvancedSetting -name Net.TcpipHeapSize | Set-AdvancedSetting -Value 32 -confirm:$false
Get-VMHost $esxi | Get-AdvancedSetting -name Net.TcpipHeapMax | Set-AdvancedSetting -Value 1536 -confirm:$false
Get-VMHost $esxi | Get-AdvancedSetting -name NFS.MaxVolumes | Set-AdvancedSetting -Value 256 -confirm:$false
Get-VMHost $esxi | Get-AdvancedSetting -name NFS41.MaxVolumes | Set-AdvancedSetting -Value 256 -confirm:$false
Get-VMHost $esxi | Get-AdvancedSetting -name NFS.MaxQueueDepth | Set-AdvancedSetting -Value 64 -confirm:$false
Get-VMHost $esxi | Get-AdvancedSetting -name NFS.HeartbeatMaxFailures | Set-AdvancedSetting -Value 10 -confirm:$false
Get-VMHost $esxi | Get-AdvancedSetting -name NFS.HeartbeatFrequency | Set-AdvancedSetting -Value 12 -confirm:$false
Get-VMHost $esxi | Get-AdvancedSetting -name NFS.HeartbeatTimeout | Set-AdvancedSetting -Value 5 -confirm:$false
Restart-VMHost $esxi -Force -RunAsync -Confirm:$true
Stop-Transcript # ロギング終了
上記のサンプルコードは以下のURLからもダウンロードできます。
https://networld.citrixdata.com/d-s0c830fe24d34eeb8
PowerCLIを使ってミスを少なくし、時間を節約しましょう。
※追記 : スクリプトの内容を一部修正しました。Get-VMHostのあとに$esxi変数を指定し、設定値が全体に適用されないように修正しています。(2018年12月9日 17:00)
記事担当者 : SI技術本部 海野 航 (うんの わたる)