このページの本文へ

Windows Info 第328回

Windows 10/11で可能だが、デフォルトでオフになっているSMB圧縮の効果を試す

2022年05月22日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 Windows 10/11ではSMBによるネットワークファイル共有で転送時の圧縮(SMB圧縮転送)に対応している。これはネットワークでの転送時にファイルを圧縮し、転送に要する時間を短縮させるものだ。ただし、圧縮が有効でないファイルも存在すること、圧縮・伸張をCPUで実行していることから転送中のCPU負荷に多少の影響が出る。

 しかし、圧縮がある程度有効なファイルなら、理屈的には時間を短縮することが可能だ。また、xcopyやrobocopyなどのコマンドもSMB圧縮転送に対応しており、ファイルサーバー側がSMB圧縮を有効にしていればオプションでSMB圧縮転送を利用できる。

Windows 11ではSMB圧縮が有効になっている。簡単なテストだが、圧縮が有効なファイルに対しては、多少の効果はあるようだ

Windows 10 Ver.1903で搭載されていた機能だが
デフォルトではオフに

 SMB圧縮転送機能は、2019年5月リリースのWindows 10 Ver.1903(19H1、Windows 10 May 2019 Update)で、SMB v3の機能として搭載されたが、同年11月セキュリティ問題が告知され、無効化が推奨された。詳細な理由はわからないが、少なくとも「CVE-2020-0796」というセキュリティ問題では、当面の対策としてレジストリによるSMB圧縮転送の無効化が推奨されているため、SMB圧縮に何らかの関係がある問題だと思われる。

●CVE-2020-0796 Microsoft - Windows SMBv3 Client/Server Remote Code Execution Vulnerability
 https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2020-0796

 その後、2020年3月のKB4551762では、SMB v3のセキュリティ更新プログラムが提供されている。ただし、現在のWindows 10/11では、サーバー側、クライアント側ともにSMB転送圧縮が無効になった状態である。

そもそもSMB転送圧縮とは

 SMB転送圧縮とは、SMBによるネットワークファイル共有で、ファイルを転送するときに圧縮してデータ量を削減する。そのためには、サーバー側、クライアント側両方がSMB圧縮転送が実装されて、許可されている必要がある。

 サーバー側は現状、Windows 11のみの対応だが、クライアント側のSMB圧縮転送機能はWindows 10でも動作する。実際には、それぞれいろいろと条件があるのだが、基本的にサーバー側はWindows 11(もしくはWindows Server 2022)、クライアント側はWindows 10/11の組み合わせでSMB転送が利用可能だ。

 圧縮には、MicrosoftのXPRESSと呼ばれるアルゴリズムが使われるが、LZ77(Lempel-Ziv)やLZ77にハフマン符号を組み合わせたもの(LZ77+Huffman)、NTFSのファイル圧縮(LZNT1)などがあり、データに合わせて自動的に切り替えて利用するようだ。

 LZ77は、データ中の繰り返しを見つけて圧縮するアルゴリズムであるため、基本的には繰り返しの多いデータほど圧縮率が高くなる。具体的には、ファイルの中身がほとんどゼロであるようなファイルは圧縮率が高く、中身がほとんど乱数(あるいはそれに近いもの)である場合にはほぼ圧縮できない。

サーバー側でSMB圧縮転送を有効化する

 Windows 11なら、PowerShellのSet-SmbShareコマンドを使うことで、SMB圧縮転送を有効化できる。現状、GUIから設定することはできないようだ。具体的には、

Set-SmbShare -Name 〈共有名〉 -CompressData $true

とする。共有名は、Get-SmbShareコマンドで一覧を得ることができる。また、SMB圧縮転送の設定状態は、

Get-SmbShare -Name 〈共有名〉 | select CompressData

で調べることができる。

PowerShellのSet-SMBShareコマンドを使うことで、共有名ごとにSMB圧縮の有効、無効を設定できる。その状態は、Get-SMBShareコマンドで確認可能だ

 どの場合でも、CompressDataがTrueになっていれば、その共有名へのアクセス時にクライアント側がSMB圧縮転送を有効にしていれば、圧縮転送となる。

クライアント側でSMB圧縮転送を有効化する

 クライアント側でSMB圧縮転送を有効化するには、レジストリ設定を行うか、xcopyやrobocopyで「/COMPRESS」オプションを使う。

 レジストリ設定をすることで、常にSMB圧縮が有効になるが、サーバー側と違い、共有先によって切り替えることはできない。もっとも、接続時のネゴシェーションでSMB圧縮転送を使うかどうかが決まり、サーバー側で共有名ごとに有効/無効を切り替えることができるため、問題が起きることはなさそうだ。

 とはいえ、セキュリティ問題で無効化された機能である。有効にするかどうかは、ご自身のリスクとして判断されたい。何か問題が起きたとしても筆者および編集部では責任を取ることはしない。

 レジストリ設定だが、以下のキーに「EnableCompressedTraffic」というDWORD値を作り、データとして1を書き込む。

キー
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters

 reg.exeコマンドを使うなら、

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters /v EnableCompressedTraffic /t REG_DWORD /d 1

とする。これですぐにSMB圧縮転送が有効になる。

 また、SMB圧縮転送を無効化したい場合には、「EnableCompressedTraffic」を削除するか、データとして0を書き込む。

reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters /v EnableCompressedTraffic

実際にSMB圧縮転送を試してみるも効果は微妙

 サーバー側でSMB圧縮転送を有効にしたまま、クライアント側で有効/無効を切り替え、1GBのファイルを転送してみた。簡易なテストで、結果からいうと微妙なところ。中身がゼロだけのファイルでは、コピーの処理時間に違いが見られたが、乱数ファイル(ほとんど繰り返しがない)では、ほとんど効果がなかった。

 測定は、PowerShellのMeasure-Commandを使い、Copy-Itemコマンドでサーバー側の1GBのファイルをローカルフォルダーにコピーする時間を測定した。ネットワークはギガビットイーサを使っている。サーバー側は、CPUにCeleron J4125、メモリ8GB、クライアント側はCore i5-8250U、メモリは8GBである。

 コピーするファイルは、fsutil.exeコマンドで作成した中身がゼロだけのファイルと、以下のリストで作成した乱数からなるファイル。fsutilで作ったファイルは0だけなので、最も圧縮が有効になる場合と考えられる。

$r=new-object byte[] (1GB);
(new-object System.Random).NextBytes($r);
[System.IO.File]::WriteAllBytes("c:\temp\test-r-1G2", $r)

 多少は、圧縮が効いているみたいなので、GB単位の大きなファイルをLAN内で転送することが多いならSMB圧縮転送を有効にしておく意味はありそうだ。とはいえ、セキュリティ上のリスクを考えると、屋外に持ち出せるラップトップやタブレットクラスのマシンでわざわざ設定するほどでもないという感じである。

カテゴリートップへ

本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥2,413
2
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥7,313
3
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥1,899
4
CIO フラットスパイラルケーブル CtoC (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps 形状記憶 iPhone 17 / 16 / 15 Macbook Pro/Air/iPad用/ノートパソコン Galaxy Google Pixel Android (ライトブラック, 1.5m)
CIO フラットスパイラルケーブル CtoC (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps 形状記憶 iPhone 17 / 16 / 15 Macbook Pro/Air/iPad用/ノートパソコン Galaxy Google Pixel Android (ライトブラック, 1.5m)
¥2,290
5
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
6
Anker Zolo USB-C & USB-C ケーブル (240W, 高耐久ナイロン) 1.8m ブラック iPhone 17 / 16 / 15 Galaxy iPad Pro MacBook Pro/Air 各種対応
Anker Zolo USB-C & USB-C ケーブル (240W, 高耐久ナイロン) 1.8m ブラック iPhone 17 / 16 / 15 Galaxy iPad Pro MacBook Pro/Air 各種対応
¥1,590
7
Anker Nano Charging Station (7-in-1, 100W, 巻取り式 USB-C ケーブル) (USBタップ 電源タップ) 【PSE技術基準適合】MacBook iPad iPhone Galaxy Android ブラック
Anker Nano Charging Station (7-in-1, 100W, 巻取り式 USB-C ケーブル) (USBタップ 電源タップ) 【PSE技術基準適合】MacBook iPad iPhone Galaxy Android ブラック
¥9,990
8
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
9
Verbatim バーベイタム 1回録画用 ブルーレイディスク BD-R 25GB 50枚+3枚増量パック インクジェットプリンタ対応 ホワイト 片面1層 1-6倍速
Verbatim バーベイタム 1回録画用 ブルーレイディスク BD-R 25GB 50枚+3枚増量パック インクジェットプリンタ対応 ホワイト 片面1層 1-6倍速
¥2,480
10
ソニー ゲーミングイヤホン INZONE Buds:WF-G700N Fnatic監修/ワイヤレス / 低遅延2.4GHzワイヤレス接続 USBType-Cトランシーバー同梱/LE Audio対応/アクティブノイズキャンセリング/立体音響 / 最大約24時間バッテリー / 急速充電/マイク付き / PS5 スマホ PC Switch グラスパープル
ソニー ゲーミングイヤホン INZONE Buds:WF-G700N Fnatic監修/ワイヤレス / 低遅延2.4GHzワイヤレス接続 USBType-Cトランシーバー同梱/LE Audio対応/アクティブノイズキャンセリング/立体音響 / 最大約24時間バッテリー / 急速充電/マイク付き / PS5 スマホ PC Switch グラスパープル
¥20,800

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン