株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

今日のVMware PowerCLI : NetAppのNFS用パラメータを一撃で設定

こんにちは、ネットワールドの海野です。
vExpert Advent Calendar 2018の 12月9日分ということで、ブログ記事を作成しました。
PowerCLIを使うと、WindowsPowerShellによって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技術本部 海野 航 (うんの わたる)