🌊

NAS(SMB) 使いの Mac ユーザが初期設定時にすべきこと

2022/08/02に公開

NASをバリバリに使っているMac民は、macOS を初期化したときに細々とした設定をしておかないと、ちょっと諸々面倒なことになったり、パフォーマンスに問題があったりする。

それが一体何かなんて言うことはすっかり忘れてしまっているので、NAS(SMB)接続する場合に設定しておくべきものを全て残しておく。これらによって、本当にパフォーマンスが良くなるかどうかについての具体的な計測はしていないが、少なくともくるくる回るケースは相当減る。

SMB ブラウジング動作の調整

support にも載っているので、安心して正しく設定ができるこれ。いわゆる .DS_Store を「作らない」「見に行かない」してくれるようになるシステム。ローカルのSSDだと気にならないけど、1Gbps程度や HDD NASだと数千ファイル超えると、かなりの時間応答が帰ってこなくなる。ので、その対応です。

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

サポートサイトなので義理堅く「再起動しよう」って書いてあるけれども、killall Finder で十分な様子。

参考 : macOS で SMB ブラウジングの動作を調整する

/etc/nsmb.conf の調整

そもそも存在しないことが基本だと思うけれども、SMBアクセス時の調整を行うファイル。SMBを一つもマウントしていないときにファイルを作ってから、マウントすれば良い。既にマウントしている場合には、すべて umount してからマウントし直せば、設定が反映される模様。

/etc/nsmb.conf
[default]
# Use NTFS streams if supported
streams=yes

# Soft mount by default
soft=yes

# Disable signing due to macOS bug
signing_required=no

# Disable directory caching
# dir_cache_off=yes
#     dir_cache_async_cnt     + + -          10             Max async queries to fill dir cache
#     dir_cache_max           + + -          60s            Max time to cache for a dir
#     dir_cache_min           + + -          30s            Min time to cache for a dir
dir_cache_async_cnt=0
dir_cache_max=0
dir_cache_min=0

# Lock negotiation to SMB2/3 only
# 7 == 0111  SMB 1/2/3 should be enabled
# 6 == 0110  SMB 2/3 should be enabled
# 4 == 0100  SMB 3 should be enabled
protocol_vers_map=6

# No SMB1, so we disable NetBIOS
port445=no_netbios

# Turn off notifications
notify_off=yes

# SMB Multichannel behavior
# To disable multichannel support completely uncomment the next line
# mc_on=no

# Some Wi-Fi networks advertise faster speeds than the connected wired network.
mc_prefer_wired=yes

version によっては、default でも定義されているので指定しなくても良さそうだけど。
必須は次の 5つか。

  • signing_required=no
  • dir_cache_*=0
  • protocol_vers=6 または protocol_vers=4
  • port445=no_netbios
  • mc_prefer_wired=yes

1つ目は、絶対に必要。他は気分。5つ目は、無線と有線、両方使っている人には必須。
勿論、SMB version あたりは NAS側の設定にも影響するので、そこも踏まえて。

delayed ack = 0

気持ちの問題ではあるけれども、LAN なら 0 でもきっと平気だと信じてる。

sudo sysctl -w net.inet.tcp.delayed_ack=0

もちろん、これだけだと reboot するとなくなってしまうので /etc/sysctl.conf ファイルに、次の 1行を追記しておくこと。

/etc/sysctl.conf
net.inet.tcp.delayed_ack=0

Discussion