NAS(SMB) 使いの Mac ユーザが初期設定時にすべきこと
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
してからマウントし直せば、設定が反映される模様。
[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行を追記しておくこと。
net.inet.tcp.delayed_ack=0
Discussion