今回は、ファイルサーバのためのOSとしてのWindows Server 2022に注目します。Windows 11クライアントとの組み合わせで得られる利点の1つは、「サーバメッセージブロック(SMB)」の新機能「SMB暗号化」への一歩進んだ対応があります。

進むクラウド化、根強いオンプレミスのニーズ

Windows Serverは、その登場当初から、ファイルサーバのためのOSとして利用されてきました。ここ数年のクラウド化の流れは、ファイルサーバにも及んでおり、クラウド事業者各社はさまざまなクラウドストレージやソリューションを提供しています。例えば、Azureファイル共有は、インターネット経由での安全なSMB 3.xアクセスを提供するクラウドストレージの1つです。

その一方で、オンプレミスに設置するファイルサーバのニーズは根強くあります。その理由としては、社外や国外のデータセンターに業務データを保存することに対する情報漏えいの懸念(例えば設定ミスなどで)、業務継続のために常に安定したインターネット接続が必要なこと、快適な利用のためには高速なインターネット回線が必要なことなど、さまざまです。

最新のWindows Server 2022のファイルサービスは、SMB 1.0/CIFS(既定で無効)、SMB 2.0/2.1、SMB 3.0/3.02/3.1.1、NFSv2/v3/v4.1、FTP、SFTP(OpenSSH Server)、WebDAV(IIS)、iSCSIといったマルチプロトコルに対応し、さまざまなクライアントデバイスに共有フォルダーやストレージを提供することができまが、何よりもましてWindowsネットワークとの親和性の高さが最大の特徴です。

Active DirectoryドメインでIDとアクセス制御を一元管理できる他、最新のWindowsクライアントと最新のSMBプロトコルで高速で安全なファイル共有を実現できます。

SMB 3.1.1の新機能、SMB圧縮とは

SMBの最新バージョンは、Windows 10バージョン1607およびWindows Server 2016から導入されたSMB 3.1.1です。SMBバージョンは最新のWindows Server 2022やWindows 11でもSMB 3.1.1のままですが、Windowsの新しいバージョンで次々に新機能が追加されています。

例えば、初期のSMB 3.1.1ではAES-128による「SMB暗号化」がサポートされましたが、Windows 11およびWindows Server 2022では新たにAES-256のサポートが追加されました。今回説明する「SMB圧縮」もまた、Windows 11とWindows Server 2022で利用できるようになったSMB 3.1.1の新機能です。

非常に大きなサイズのファイルを転送する場合、効率的な方法の1つは、送信元でファイルをZIPなどで圧縮し、データ転送後、転送先で圧縮を解凍して保存するという方法です。SMB圧縮は、それらの処理を通常のファイルコピー操作内で行ってくれる機能です。この機能により、効率的なデータ転送と、ネットワークトラフィックの削減を期待することができます。

実は、SMB圧縮はWindows 10バージョン1903で実装されていましたが、利用可能になったのはWindows 10バージョン2004からです。しかも、利用するには以下のようにROBOCOPYおよびXCOPYコマンドで「/COMPRESS」フラグを指定する必要がありました。

  • Windows 10では、ROBOCOPYまたはXCOPYコマンドで「/COMPRESS」フラグを使用してコピーするのがSMB圧縮を利用する唯一の方法

    Windows 10では、ROBOCOPYまたはXCOPYコマンドで「/COMPRESS」フラグを使用してコピーするのがSMB圧縮を利用する唯一の方法


ROBOCOPY <ソースパス> \\<サーバ名>\<共有名> <ファイル名> /COMPRESS
XCOPY <ソースパス>\<ファイル名> \\<サーバ名>\<共有名>\* /COMPRESS

そのため、エクスプローラーを使用したファイルコピー操作などで利用することはできませんでした。また、長期サービスチャネル(LTSC)のWindows Serverでの対応は、Windows Server 2022の登場まで待つ必要がありました。

Windows 11とWindows Server 2022でSMB圧縮を普段使いに

Windows 11(バージョン21H2以降)およびWindows Server 2022においても、ROBOCOPYやXCOPYの「/COMPRESS」フラグによるSMB圧縮は引き続き利用可能ですが、さらに使いやすくなりました。具体的には、以下の制御が可能になります。詳しくは、Microsoft Learn|Windows Server|SMBの圧縮で説明されています。

●SMBサーバ側で共有ごとに(またはサーバ全体で)SMB圧縮を有効にする ・・・ New/Set-SmbShareの「-CompressData $true」パラメーター、またはWindows Admin Centerの「共有の編集」を使用

  • Windows Admin Centerを使用して共有ごとにSMB圧縮を有効化する、SMBサーバ全体の設定も可能

    Windows Admin Centerを使用して共有ごとにSMB圧縮を有効化する、SMBサーバ全体の設定も可能

●SMBクライアント側でネットワークドライブマウント時にSMB圧縮を有効化する ・・・ New-SMBMappingの「-CompressNetworkTraffic $true」パラメーター、NET USEコマンドの/REQUESTCOMPRESSION:YES」パラメーターを使用

●SMBサーバ側でSMB圧縮を既定で有効にする ・・・ グループポリシーまたはWindows Admin Centerの「設定|ファイル共有(SMBサーバ)」を使用

●SMBクライアント側でSMB圧縮を既定で有効にする ・・・ グループポリシーを使用

  • グループポリシーを使用してSMBクライアント(Lanmanワークステーション)またはSMBサーバ(LAN Man サーバ)で既定でSMB圧縮を使用するように構成する

    グループポリシーを使用してSMBクライアント(Lanmanワークステーション)またはSMBサーバ(LAN Man サーバ)で既定でSMB圧縮を使用するように構成する

上記のいずれかの方法でSMB暗号化を使用(要求)するように構成すると、コピー手段(COPYコマンドやCopy-Itemによるコピー、エクスプローラーによるファイルコピー操作など)を問わず、利用可能であればSMB暗号化を使用するようになります。

SMB圧縮の効果は転送速度に表れないこともある

SMB圧縮の効果をテスト環境で比較してみました。

20GBのファイル(容量固定タイプのVHDXに4GBのISOファイルと数十MBのJPEG画像を保存したもの)を用意し、SMB圧縮を使用しない場合と、使用する場合とで、Windows 11クライアントとWindows Server 2022サーバとの間でファイルのコピー(ダウンロードとアップロード)を実行した結果が以下の画面です。

  • 画面上はSMB圧縮なし、画面下はSMB圧縮あり

    画面上はSMB圧縮なし、画面下はSMB圧縮あり

SMB圧縮を使用した場合、数十秒転送時間が短縮されていますが、その差はごくわずかのように見えるでしょう。

SMB圧縮によってネットワークを効率的に使用できるようになるわけですが、それが転送時間に顕著な差として表れるわけではないことを認識することが重要です。場合によっては、誤差の範囲か、むしろ悪化する結果を得るかもしれません。

サーバ側のパフォーマンスモニターでSMBサーバ共有(SMB Server Shares)やネットワークインターフェイス(Network Interface)の各種カウンターを調査すれば、SMB圧縮による転送効率の向上や、ネットワークトラフィックの削減を確認することができるでしょう。

転送時間には、クライアント側でのディスクI/O、サーバ側でのディスクI/O、サーバ側のキャッシュ、ネットワークの帯域幅や輻輳の状態、クライアント側の圧縮処理、サーバ側の圧縮解凍処理など、さまざまな条件が影響します。特に、高速なネットワーク接続で輻輳が無い場合は、時間削減は実現されない場合があります。

高速なネットワークの影響を排除するため、このテストではクライアント側のWindows 11をHyper-V仮想マシンで実行し、仮想マシンのネットワークアダプターのオプションで帯域幅の上限を1GBに制限しました。物理環境でのテストでは、SMB圧縮を使用するかしないかに関係なく、転送時間の違いが誤差の域を出なかったからです。