SMBファイル共有サービスで障害発生

現在,次のような環境下でmacOS SMBファイル共有サービスに障害が発生しています。

このような状況に遭遇されている方のご意見を広く求めます。


機種: Mac mini (2018)

メモリ: 8GB,ディスク: 128GB SSD,Ethernet: 10GbE

OS: macOS 10.15.3 Catalina

同時使用周辺機器1: USB3.0外付けRAIDストレージ(QNAP TR-004+14TB HDD x4)

同時使用周辺機器2: TimeMachine専用とするUSB3.0 SSD 256GB

Mac miniの役割: Mac miniをファイルサーバーとして使用

同時接続クライアント数: 約20台

クライアント種別: Mac(macOS 10.12-10.14) x10台,Windows 10 Home x10台

障害状況: 一日に数回smbdがクラッシュする,macOS自体はクラッシュしない,smbdクラッシュ時も画面共有可能

障害発生期間: 2020年3月から今日2020/5/25まで

現状の回復方法: ファイル共有サービスを停止(Kill)->ファイル共有サービスを再起動実行

状況の記録: これまで見たクラッシュログの一例として,多数保存しているログの中の二件を以下に掲げます。

考察: 観察してつかんだクラッシュの傾向としては,Windowsクライアントの接続を減らすとクラッシュ頻度が格段に減る。


[クラッシュログA]

Process: smbd [14458]

Path: /usr/sbin/smbd

Identifier: smbd

Version: 499.60.1

Code Type: X86-64 (Native)

Parent Process: launchd [1]

Responsible: smbd [14458]

User ID: 0


Date/Time: 2020-03-12 17:25:43.465 +0800

OS Version: Mac OS X 10.15.3 (19D76)

Report Version: 12

Bridge OS Version: 4.2 (17P3050)

Anonymous UUID: BC0F9618-8F11-4824-B7B0-C2125731A844


Time Awake Since Boot: 69000 seconds


System Integrity Protection: enabled


Crashed Thread: 3 Dispatch queue: com.apple.root.default-qos


Exception Type: EXC_CRASH (SIGABRT)

Exception Codes: 0x0000000000000000, 0x0000000000000000

Exception Note: EXC_CORPSE_NOTIFY


Application Specific Information:

dyld3 mode

Assertion failed: (err != EDEADLK), function lock_exclusive, file /BuildRoot/Library/Caches/com.apple.xbs/Sources/smbx/smbx-499.60.1/src/include/platform/../../lib/platform/unix/pthread_mutex.hpp, line 76.

以降Thread ダンプが続くが,情報量が多いため割愛


[クラッシュログB]

Process: smbd [1636]

Path: /usr/sbin/smbd

Identifier: smbd

Version: 499.60.1

Code Type: X86-64 (Native)

Parent Process: launchd [1]

Responsible: smbd [1636]

User ID: 0


Date/Time: 2020-03-17 21:33:58.564 +0800

OS Version: Mac OS X 10.15.3 (19D76)

Report Version: 12

Bridge OS Version: 4.2 (17P3050)

Anonymous UUID: BC0F9618-8F11-4824-B7B0-C2125731A844


Time Awake Since Boot: 12000 seconds


System Integrity Protection: enabled


Crashed Thread: 3 Dispatch queue: com.apple.main-thread


Exception Type: EXC_CRASH (SIGABRT)

Exception Codes: 0x0000000000000000, 0x0000000000000000

Exception Note: EXC_CORPSE_NOTIFY


Application Specific Information:

dyld3 mode

Assertion failed: (err == 0), function ~pthread_rwlock, file /BuildRoot/Library/Caches/com.apple.xbs/Sources/smbx/smbx-499.60.1/src/include/platform/../../lib/platform/unix/pthread_mutex.hpp, line 65.

以降Thread ダンプが続くが,情報量が多いため割愛


皆さまの周りでこのような状況に遭遇している方がいらっしゃいましたら,どうかご意見をお聞かせください。

Mac mini 2018 or later

投稿日 2020/05/25 17:07

返信
返信: 9

2020/05/26 05:51 チャオ台湾 への返信

> ときどきクライアントから数十から数百GB程度の単一ファイル読み書きが発生する


何かおかしそうですね。

セッション署名を無効にするとかsmb 2接続のみにするとかされてますか?

https://support.apple.com/ja-jp/HT204021

これらの設定はサーバの読み書きを速くするのにも有用です。

2020/05/25 23:38 チャオ台湾 への返信

20台のファイル共有のサーバにしてるということですよね?

ロードアバリッジ(load average、ターミナルでuptimeとかtopとかすると表示されます)はどれくらいですか?落ちる時とロードアバリッジと関係ありそうですか?

アクティビティモニターでspindump、システム診断、spotlight診断とかできますが、これらの診断ツールの結果は何か参考になりませんか?

10.15.3とのことですが、10.15.4にしない理由は?

ethernet 10GbEとのことですが、全てのマシンをこの速度で繋いでるわけではないと思いますが、実際どのように接続されてるのでしょう?ハブに10GbEのものを使って、そこに接続してるということですか?その場合、クライアントは1GbEになってるのですか?

smbdの動作を変えることに関する情報が提供されてますが、この辺りはどうされてたのでしょう?

macOS High Sierra 10.13 以降で SMB ブラウジングの動作を調整する - Apple Support

2020/06/02 03:54 チャオ台湾 への返信

コメントいただいた皆様へご報告いたします。


5/29 夜,新たに配布開始となった macOS 10.15.5 へのアップグレードを行いました。

 (from 10.15.3 to 10.15.5)

5/30 夕刻,勝手にリブートがかかりました。

カーネルクラッシュによるものだと推測しています。


さらに,6/1 の昼間,再び 勝手にリブートがかかりました。

samba のみのダウンは,この四日間発生していませんが,すでに二回も勝手に再起動がかかりました。


ちなみに,10.15.5 更新後の smbd 実行ファイルのサイズは,

10.15.4 と同じ /usr/sbin/smbd = 884112 bytes でした。


6/2 10.15.5 向けの追加パッチが配付されたようです。

現在,その追加パッチをインストールして,様子を見ています。


2020/05/26 20:21 チャオ台湾 への返信

アクティビティモニターのspindumpを利用すると(アクティビティモニターのウィンドウ上部左側にある歯車アイコンをクリックすると出てきます)、あるプロセスがクラッシュした時の様々な情報を横断的に集めてまとめてくれます(ということです。自分は使ったことありません)。こういうツールを利用すると、原因の推測に有用ではないですかね?

2020/05/26 01:46 はに への返信

本問題へのコメントありがとうございます。


サーバー負荷監視に関しては,この二か月間の監視範囲では,CPUやメモリといった部分への過負荷が見当たりません。

また,このMac miniはファイルサーバーの役割ということも有り,通常,管理者がリモートでモニタリングする以外,誰も操作いたしません。

ファイル共有が主たる役割となっています。


サーバーに関するロギングは tcpdump のみを行っています。

そこから得られる情報を見る限り,数台(少ない時は3台程度)のPC & Macが同時接続している場合でもクラッシュしています。


本Mac mini は,購入した段階でCatalinaがプリンストール済みでした。

未だ 10.15.3 である要因は,サーバー用途であるため,10.15.4への更新作業にかかる十分なメンテナンス時間を確保できないことによります。

10.15.4へのアップデートが問題解決につながるのであれば,メンテナンス時間を確保して更新したいとは考えています。

現時点では,10.15.4へのアップデートによる改善効果に関する情報が不足しているため,アップデートを躊躇しているというのが本音です。


現状の使い方で特徴的なのは,ときどきクライアントから数十から数百GB程度の単一ファイル読み書きが発生することです。

そして,最初の投稿に記したとおり,Windowsクライアントの接続を減らすとクラッシュ頻度が格段に減るのは間違いありません。

ディスクファイルシステムの影響もあるかもと考え,当初HFS+でフォーマットした外付けディスクをAPFSへ変換を行いました。

しかし状況は変わらず。

内蔵ブートディスクのTimeMachineを止めてもみましたが,それでも状況は変わらず。


ネットワークスイッチは,10GbE x2 + 1GbE x 48の仕様であるため,Ethernet 10GbE はMac miniサーバーのみが使用し,クライアントPC・クライアントMacは全て1GbE接続になっています。


現状,全く問題回避手段が見つからず,手をこまねいています。

2020/05/26 20:09 はに への返信

以下の説明が誤解を与えてしまったかもしれません。


この意味は,

ユーザーがときどきクライアントPCからサーバーへ大きなファイルの読み書きを行うことがある,という意味になります。

”ときどきクライアントから数十から数百GB程度の単一ファイル読み書きが発生する”


SMB 2 や SMB 3 接続でパケット署名を無効にする

https://support.apple.com/ja-jp/HT205926


上記のパケット署名は,macOS 10.12-10.13.3 までのMacに対して,3月頃設定いたしました。

現在,このMac miniへは,macOS Server追加Appのインストールはしていません。

インターネット上の技術情報では,ファイル共有に関して,制限が取り払われたという記事を見かけたからにほかなりません。

macOS Server Appが未インストールであるため,Open Directoryの未インストールです。


現在,テレワークにより,一部ユーザー(Mac/Win問わず)が在宅でSSL-VPN経由のリモート接続を行っています。

WAN経由での接続高速化を期待して,デフォルトのSMB3.0をそのまま使っています。

そのため,デフォルトのSMB3を,SMB2へダウングレードはしていません。


クラッシュ自体は,macOS+Sambaのバグのような印象をうけるのですが,一日に数回発生するクラッシュを,手元のクライアントPCを操作することで再現させることができないのは,歯がゆいかぎりです。

2020/05/26 20:52 はに への返信

コメントありがとうございます。


spindumpのレポートが,本Q.冒頭のクラッシュログAとBなのです。


今一度SMB関連設定をチェックしてみました。

Macクライアント側とMac mini(サーバー役割側)ともに,2020年3月の段階で設定変更した”SMBパケット署名を無効化”した状態のままでした。


サーバー側

/Library/Preferences/SystemConfiguration/com.apple.smb.server.plist


{

"SigningRequired" => 0

}


クライアント側

nsmb.conf


[default]

signing_required=no

validate_neg_off=yes


一番クラッシュ頻度が高いと推定しているのは,Windowsクライアントからの接続時です。

Windowsクライアントが頻繁にアクセスしている共有ファイルを,試しに暫定NASへ移動してみると,顕著にクラッシュ頻度が減りました。

Windows -> MacへのSMB接続に関する障害Q&Aなどがあると良いのですが。

2020/05/26 22:31 チャオ台湾 への返信

障害が発生したのが2020年3月からとのことですが、その前後で何か変えましたか?SMBパケット署名を無効化したのみですか?(今は元に戻したのですか?


> Assertion failed: (err != EDEADLK), function lock_exclusive

> Assertion failed: (err == 0), function ~pthread_rwlock


Apple Open Sourceには、pthread_mutex.cはあるのですが、pthread_mutex.hppはありません...

https://opensource.apple.com/source/Libc/Libc-391/pthreads/pthread_mutex.c.auto.html


65行目、76行目でAssertionは実行していないので、別ファイルですね。何にせよ、pthread_mutexでのlockにおけるバグのように思います。


> 10.15.4へのアップデートが問題解決につながるのであれば


smbdはバージョンのようなものはないようです。ファイルサイズは同じですか?


manによると、/var/log/system.logにも何か書かれていそうです。


2020/05/27 01:10 hohokihai への返信

コメントありがとうございます。


私は,当初,デフォルトのファイル共有サービスの設定をいじろうなどという考えは全くありませんでした。


私が想定していた設定は,以下のGUIからの設定のみです。

ファイル共有を入りにする。

Win & Macクライアントからのアクセスに備えて,SMBを有効化する。

20名程度のSMB接続用ユーザーアカウントを設定する。

共有フォルダーにアクセス権を設定する。


これだけの設定を施して運用開始し,しばらくしてクラッシュに直面しました。


そこから,SMBパケット署名 無効化などの手探り調整が始まりました。

同時にクラッシュ時の監視体制強化も始めました。


私もコマンドラインをたたいてみました。

macOS 10.15.3 におけるsmbd ファイルサイズは微妙に異なるようです。


Mac OS X 10.15.3 Build 19D76

/usr/sbin/smbd = 892592 bytes


macOS のアップデートを計画・実行進めてみます。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

SMBファイル共有サービスで障害発生

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。