Windows Server 2012 R2 と Windows 8.1 が来週GAとなりますが、R2や8.1では SMBのバージョンが上がり、 SMB 3.02 が利用出来るようになっています。
公式ブログでWindows Server 2012 R2: Which version of the SMB protocol (SMB 1.0, SMB 2.0, SMB 2.1, SMB 3.0 or SMB 3.02) are you using?という記事があがっていたので、読んでみました。
SMB 3.02では、
- スケールアウトファイルサーバーにおける、クライアント接続を最適なノードに自動リバランシング
- SMBダイレクト(SMB over RDMA)のパフォーマンス改善
- SMB帯域管理の改善
- スケールアウトファイルサーバー上のマルチSMBインスタンスのサポート
- VMゲスト向けに共有VHDXのサポート
- SMB 1.0 のオプション化(SMB 1.0ならびにCIFSを完全に無効化するオプションの提供)
のように、主にスケールアウトファイルサーバーや、40Gbpsイーサや56Gbps InfiniBandなど高速なNICを利用している場合など、大規模な環境における改善が中心になっています。詳細は、What’s New for SMB in Windows Server 2012 R2で確認してください。
Windowsのバージョン毎にデフォルトで使用するSMBのバージョンは以下のようになっています。
- CIFS – The ancient version of SMB that was part of Microsoft Windows NT 4.0 in 1996. SMB1 supersedes this version.
- SMB 1.0 (or SMB1) – The version used in Windows 2000, Windows XP, Windows Server 2003 and Windows Server 2003 R2
- SMB 2.0 (or SMB2) – The version used in Windows Vista (SP1 or later) and Windows Server 2008
- SMB 2.1 (or SMB2.1) – The version used in Windows 7 and Windows Server 2008 R2
- SMB 3.0 (or SMB3) – The version used in Windows 8 and Windows Server 2012
- SMB 3.02 (or SMB3) – The version used in Windows 8.1 and Windows Server 2012 R2
通信するホスト、ゲストの組み合わせで、SMBのバージョンがどのような組み合わせになるかを示しているのが、以下の図になります。この表をみていても、もうXPはありえないなというのがよく分かりますし、家庭内でもWindows 8 以降のOS環境で統一した方が、ファイル共有のスループットとしても大きなメリットがあります。
Windows 8 、Windows Server 2012 以降では、PowerShellのコマンドレットで、通信中の対向先のファイルサーバー/共有フォルダー毎に、どのバージョンで通信しているか確認出来るコマンドレットが用意されています。
Get-SmbConnection