ファイルサーバーへのアクセスを高速化する Windows ノウハウ
VDI システムを恙なく構築するには、
コモディティ化している仮想化スキルよりも、Windows OS をきちんと設定することの方が重要とつねづね感じています。
「仮想化インフラと Windows のスキルセットは両立できないのが SI 現場の実態」ということなので、少しでも橋渡しができるよう、CIFS 周りのノウハウを5つほど書き綴りたいと思います。
1. SMB/CIFS 2.1 以降で通信する
以前も記事にしましたが、Windows 7 からの NAS アクセスは
SMB 2.1 で通信するよう、心掛けましょう。
Windows Server 2003 サーバーにアクセスすると、SMB 1.0 になってしまうために 3倍以上 の性能差があるというデータもあるようです。
最近のファイルサーバーや NAS の性能 - (1) プロトコルと CPU の進化
http://d.hatena.ne.jp/ogawad/20130124/1358984437
2. 接続中の SMB/CIFS バージョンを確認する
Windows Server 2012 / Windows 8 以降から実行する必要がありますが、
現在接続している CIFS セッションのプロトコルバージョンを簡単な PowerShell コマンド「Get-SmbConnection」で調べることができます。
Windows 同士の場合はオートネゴシエーションで最適なバージョンが選ばれるので安心ですが、対向ストレージが Windows 純正でない CIFS 互換 NAS の場合は、ネゴシエーションに失敗して下位バージョンが選ばれてしまうこともありますので特に注意が必要です。
PS C:\> Get-SmbConnection ServerName ShareName UserName Credential Dialect NumOpens --------- --------- -------- ---------- ------- -------- DC Share VMDEMO\Adm... VMDEMO.HPJ... 3.00 6 IC4VC IPC$ VMDEMO\Adm... VMDEMO.HPJ... 2.10 0
PS C:\> Get-SmbConnection | fl * ContinuouslyAvailable : False Credential : VMDEMO.HPJ\Administrator Dialect : 3.00 Encrypted : False NumOpens : 6 ServerName : DC ShareName : Share UserName : VMDEMO\Administrator PSComputerName : CimClass : ROOT/Microsoft/Windows/SMB:MSFT_SmbConnection CimInstanceProperties : {ContinuouslyAvailable, Credential, Dialect, Encrypted...} CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties ContinuouslyAvailable : False Credential : VMDEMO.HPJ\Administrator Dialect : 2.10 Encrypted : False NumOpens : 0 ServerName : IC4VC ShareName : IPC$ UserName : VMDEMO\Administrator PSComputerName : CimClass : ROOT/Microsoft/Windows/SMB:MSFT_SmbConnection CimInstanceProperties : {ContinuouslyAvailable, Credential, Dialect, Encrypted...} CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties
3. Windows 7 クライアントの CIFS Large MTU を有効にする
さて、ここからが本題です。
ポイントは次のスライド。「CIFS の MTU サイズ」
MTU といえば Jumbo Frame や Network Virtualization といった Ethernet MTU が有名ですが、ここで言及したいのは CIFS ウィンドウの Jumbo Frame です。
Large MTU(CIFS 版 Jumbo Frame)は Windows 8 からは既定で有効なものの、Windows 7 は既定が無効であるため、有効化しなければなりません。
Registry key | HKEY_LOCAL_MACHINE |
---|---|
Registry path | System\CurrentControlSet\Services\Lanmanworkstation\Parameters |
Value Name | DisableLargeMtu |
Value type | REG_DWORD |
Value range | 1=disable, 0=enable |
Default value | 1 (if not present) |
次のグラフは Microsoft の米国製品開発チームによる検証結果です。
SMB 1.0 → 2.1 で 3 倍という話をしましたが、同じ SMB 2.1 でも Large MTU を有効にするだけで 30% 以上も高速化できています。
Source: SMB 2 Multi-Credit Operations - MSFT DSS DSC Protocol Team
Ethernet における Jumbo Frame と同様に、広帯域なほど効果は高まりますし、End-to-End、つまり対向のストレージも Large MTU サポートが必要です。SMB 2.1 が喋れても Large MTU に対応していないものもあるということなので注意。
(2013.07.11 追記) Large MTU などの最適化項目をこちらにまとめました。
4. ファイルサーバーのメモリは多いほど速い
以前も書きましたが、
Windows Server 2008 R2 以降の Windows ファイルサーバーは、空きメモリをキャッシュとして利用する ため Read 性能が大幅に高速化します。
キャッシュ効果でディスクアクセスが減少し、「速度」「レイテンシ」「ストレージの I/O 負荷」のいずれも改善するので非常にお勧めです。ここ数年メモリ単価も下落したことも追い風になっています。
なお、「どのくらい積めば良い?」と質問されるのですが、基本的には多ければ多いほど...です。但し、キャッシュですのでディスク容量以上は意味ありません。
5. ファイルサーバーの省電力設定を無効化する
こちらは受け売りのネタですが、ファイルサーバーの省電力設定をハードウェアではなく OS に任せている場合、「バランス」から「高パフォーマンス」に変更することで性能が改善されるケースがあるようです。
Microsoft TechNet Blog - Windows Server 2012 File Server Tip
http://blogs.technet.com/b/josebda/archive/2012/11/10/windows-server-2012-file-server-tip-switch-to-the-high-performance-power-profile.aspx
実際、Windows クライアントや SMB/CIFS ファイルサーバー・移動ユーザープロファイル周りについて、こういった最低限の最適化すら行わない*1 で引き渡したり、稼働させてケースがあるようです。
性能トラブルの原因になりますので VDI の構築業者を選定する際は、仮想化インフラ・ハードウェアだけではなく、こういった Windows のノウハウもあるか確認しましょう*2。Window OS の内部に詳しくなければ VDI は難しい。と思います。
なお、ここまで書いておきながらですが、
移動ユーザープロファイルとフォルダリダイレクトは 以前警鐘した内容 や、プレミアサポートに調査いただい結果など、挙動を知れば知るほど躊躇してしまいます。
実際、MS 自身も WS2012 では移動ユーザー回避の流れですし...
関連記事(VDI, Windows, パフォーマンス)