見出し画像

M1登場以降 macOSのSMB実装がずっとやらかしている件

こんにちは、RapidCopyプログラマのサワツです。

今日はmacOSのSMBクライアント(ネットワーク越しのファイルコピー)実装が明らかに不具合を起こしている件について書きます。
なお、「ファイル共有が遅い」ことへの対策を知りたいだけの人は最初の結論を読んでください。
※10Gイーサ環境の方が特に顕著です

結論:SMB(ファイル共有)が遅いことへの対策方法


A:かなり調査しましたがありません。みんなでAppleに文句を言いましょう

弊社の場合はCatalina最終版(10.15.7)のIntel Macが存在するので、状況によっては上記環境のMacでファイルコピーを行い速度低下を回避しています。

どんどん遅くなるmacOSのSMBクライアント

私はRapidCopyを開発している関係で、macOSのアップデートが出るたびにSMBの性能をチェックしているわけですが、近年のmacOSの性能低下はドイヒーなものがあります。

具体的に言うと10Gイーサネット環境において、現在最新のmacOS Ventura(13.2)ではmacOS Catalina搭載の10.15.7時代のコピー速度と比べて
半分以下になっています。
ネットワーク越しのファイルコピーに「倍の時間」がかかります、倍ですよ倍。
30分かかるものが1時間になってるわけですから、時間が命の現場では致命的です。

コピーに限らずSMBクライアント全体の出来が悪い

M1対応以降のmacOS環境でNASストレージ(Windows / Linux)を直接マウントした場合の挙動もかなり酷いです。Resolveでdpxの直読みなんぞしようもんならずーっとコマ落ちです。。
アクティビティモニタを観察していると、秒100MB/secも出ていません。10Gを使っているにも関わらず1Gイーサの世界に逆戻りです。
(以前は200MB〜300MB/secは出ていました)

※連番ファイルなど大量のファイルの連続読み込みが特に低速になっています


どうしてこうなった?(振る舞いと外からみた推測)

ここ数年のmacOSのSMB実装を追いかけてみてみると、問題が起きたのは「M1の登場時期」とほぼ一致しています。

Catalina(M1非対応のmacOS最終版)ではクライアントのsmbfs Verは3.4.5です(画像参照)。

秘伝のタレ smbfs3.4.5


今思えばこれはいわゆる「秘伝のタレ」的な改善をされた最後のVerだったのでしょう。
私の記憶の残る限り、少なくともMavericks(10.11.x)でSMB2.0に対応して以降、同kextのバージョニングは3.x.xとしてマイナーfixとバグfixがいい感じに進んでいました。

ところが、M1の出現で話は一変します。

M1対応のためなのか作り直されてしまった”smbfs4.0”

ここで一気に話が変わってしまったのは間違いないようです。
エンジニアの創意工夫で速度を保っていたSMB v3のノウハウは捨てられてしまったのか、Intel Macでも充分な速度が出なくなりました。。

SMBサーバでもやらかしているApple

ここまではSMBクライアント(macOSから他のマシンをSMBマウントして使う場合)の話ですが、SMBサーバ側でも色々とやらかしています。
(直近でみごとにハマりました)

問題1:Ventura最新(13.2)でカスタムアイコンを使用していると、SMBファイル共有が機能しない件(下記記事参照)



問題2:Ventura最新(13.2)でSMBサーバ側のSMB暗号化が「強制的に有効化」されているため、性能が低下する


過去にHighSierraの10.13.4でやらかしていたサーバ側によるSMB暗号化強制問題ですが、Venturaで再発しています。

「VenturaをSMBサーバにしているとやけに遅いなー」と思う人はクライアントで「smbutil statshares -a」を叩いて、暗号化がONになってないか確認をおすすめします。


SIGNING_ON

SIGNING_ONが表示されてしまう人は低速になります。
対策としてはSMBサーバ側で以下の "おまじない" を叩きます。

sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server SigningRequired -bool FALSE

ソース:

Appleさんへ

お願いだからファイルシステムとSMBスタックでデグレードはしないでください。プロの現場では致命的なんです。。

※以下からAppleへ要望を送ることができます。




みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!