⚠この記事はブログ移転前のアーカイブです

SambaやNASの転送が遅いという方のために自分が試した対処法をつらつら書いていきます。

この記事は【サーバー設定編】です。

【LAN設定編】はこちら【LAN設定編】SambaやNASの転送が遅い時の対処法

【クライアント設定編】はこちら【クライアント設定編】SambaやNASの転送が遅い時の対処法

NASの場合は設定項目が限られているかもしれません。この記事ではUbuntu Server 14.10を参考にやっていきます。Sambaは4.1.6です

NAS側HDDが断片化・容量不足になっていないか

NASに搭載されたHDDが断片化していると,転送速度に問題がなくても読み書きに時間がかかり見かけ上転送が遅く感じるようになります.

容量不足になっている場合も読み書きに時間がかかります.

断片化している時はデフラグ

断片化しているHDDを最適化するには”デフラグ”という作業を行います.NASにデフラグの機能が搭載されていたらそれを実行するだけです.デフラグが終了するまでNASを読み書きするのは避けましょう

バックアップフォーマットも有効

また,NASにはext3,4というLinux向けのシステムを使用しているものがあります.ext4などは断片化の影響が出にくい構造をしていますが,長年使用していたり,容量不足のまま使い続けると当然断片化の影響が大きくなります.ext4などでデフラグをするには一般ユーザーには骨が折れますので,この場合は”バックアップフォーマット“が有効です.

バックアップフォーマットはスゴイ単純です.NASからファイルを全て退避(バックアップ)し,NASを初期化します.その後バックアップしたファイルを書き戻すのです.

Samba設定を見直す

Sambaの設定を変更して少しでもパフォーマンスをあげます。Samba設定ファイルは /etc/samba/smb.conf ですのでvimやらnanoやらで編集します。

Server:~$ sudo nano /etc/samba/smb.conf

以下[global]設定に付け足していきます。

Max Protocol はSMB2に

max protocol =SMB2

と記述することでSMB2優先になります。MacではSMB2を最初に接続トライするようになったので、初期接続の時間が短縮されます。またSMBよりもパフォーマンスも上がっていると思います。

ただし、max protocolと一緒に、

security = share

オプションが付いているとSMB2は有効になりません。注意が必要です。SMB2を有効にするために

security = user

と書き換えておきます。

socket optionsの見直し

Samba現行バージョンではこのオプションは不要だそうです。(デフォルトで適切な値にセットされている)

が、最後の手段としてこのオプションも弄ってみましょう

[global]直下にオプションを付け足します。

socket options = TCP_NODELAY SO_RCVBUF=14140000 SO_SNDBUF=14140000

socket optionsには複数指定できます。

  • TCP_NODELAYはサーバー側のTCP遅延ACKを0にするオプションです。これは現行バージョンではデフォルト有効のはずですので指定は不要かもしれません。
  • SO_RCVBUF, SO_SNDBUFは送受信のバッファサイズです。TCP通信の際のセグメントサイズ(=mss)のn倍が適切な値だといいます。mssの調べ方は以下を参考にしてください。

参考:http://satooon.jugem.jp/?cid=4

私の場合はmssは1414でした。大きい値であるほど連続データの転送が若干早くなるようです。正直14140000も15000000も変わらないと思います。面倒だったらmssは調べずにSO_RCVBUFとSO_SNDBUFを大きな値にしてから逐一確認して適切な値にしてもいいでしょう。


 

NAS,Sambaが遅い人向け記事は他にもあります。

ぜひご覧ください

【LAN設定編】はこちら【LAN設定編】SambaやNASの転送が遅い時の対処法

【クライアント設定編】はこちら【クライアント設定編】SambaやNASの転送が遅い時の対処法