NASを1ギガビットオーバーで使いたい!
データの保管先としてNASを使う人が多くなってきている印象がある今日この頃。実際私も昨年から写真データをNASでに保管するなど本格的に運用をはじめました。
昨年はデジカメWatchでこんな記事も書かせてもらいました。
http://dc.watch.impress.co.jp/docs/review/farstnas/1034877.html
簡単にRAID組めたり、インターネット経由でいつでもデータにアクセスできたり、プライベートクラウド的に使えたりと超便利なわけですが、一つ不満をいうなら転送速度が遅いことでしょうか。
1Gbps有線LANで繋いでも理論上の転送速度は125MB/sほどで、実際の速度で110~115MB/s程度になります(ほぼ上限ギリギリいっぱいまでは出てる)。USB3.0で普通の外付けHDDを繋げば150~180MB/s出ること考えればちょっと物足りないんですよね。しかもNASはRAID5構成にしているとさらに高速化できるポテンシャルがあるわけでもったいない。
それ以上高速なLANの規格だと10GbEがありますが、10GbE対応のNASはまだまだ高価ですし、スイッチやNICなど周辺機器も揃えないといけないので20~30万円コースの投資になります(昔よりは劇的に下がったけど)。
10GbEを気軽に使うにはあと2~3年は必要かなと言ったところ。
追記:どうも細かなファイルを大量に転送したり、複数の転送を同時に行うと速度が不安定になっている気がしますので、万能では無さそうな感じなのでご注意をー。
SynologyのNASならできる
ところが、SynologyのNASなら2~3万円の投資で2000Mbpsや4000Mbpsに増強できる裏ワザがあるのです。(Synology以外のNASは不明。ザッと調べた感じでは出来なさそう)
そんなわけで、今回は裏ワザを使ってNASの転送速度を一気に倍増させる方法を紹介してみます。
ちなみに、今回の方法は執筆現在(2017年5月)ではβ機能的な位置づけで、安定性の保証はなく公式にサポートされた方法でもないのでその点理解のある方のみお試し下さい。万が一データの損失などあっても保証できません。
また、すべての機種で可能かどうかの確認はしていないのでその辺も自己責任でお願いします。
本日のコンテンツ
- 1000Mbps(1Gbps)越えできる条件
- SMB3 マルチチャンネルを使う
- PC側のNICに制限あり?
- SMBマルチチャンネルを有効化する方法
- まとめ
1000Mbps(1Gbps)越えできる条件
SynologyのNASならできると言いましたが、残念ながらすべての機種で出来るわけではありません。PC側の条件も必要です。
2個以上のLANポート
最低条件はNASにLANポートが2個以上(1GbE)付いている機種で最新版のDSM(SynologyのNAS用OS)がインストールできること。
4ベイのミドル機種や2ベイの上位機種以上を使っていることが条件です。手持ちのNASだと4ベイのDS416play(2ポート)、DS1517+(4ポート)で可能なことを確認しています。
▲DS1517+は4ポート搭載のロマン設計w
PC側にも2個以上のLANポートを
PC側にも2個以上のLANポートが必要です。複数のLANカード(NIC)を挿してもいいし、デュアルやクアッドポートのNICを使ってもOK。ただし使えないカードもあります(後述)
あと、Windows8以上。Macは分からないです。ざっくり調べた感じだと厳しいと思います。
---
ということでだいぶ条件が狭まってきましたが、上記条件に当てはまる人なら10GbEに行かなくてもかなりのスピードを体感出来るかと思います。
SMB3 マルチチャンネルを使う
LANポート2個以上ということで、何をやるかだいたい想像出来ると思いますが、2本や4本の1GbEを束ねて速度を倍増させるわけです。
ただし、単純にLANポートを複数繋いだだけでは転送に使われるのは1ポートだけなので速度は変わりません。複数のポートを1つに束ねて使うためにWindows 8/Windows Server 2012以降でサポートされた「SMB マルチチャンネル」という技術を使います。つまりWindowsの機能ですね。
私はネットワークとかサーバーに詳しくないのでSMB マルチチャンネルを知りたければ下記のリンクなんかが分かりやすいかと思います。
http://www.atmarkit.co.jp/ait/articles/1512/25/news053.html
NAS側はLinuxベースなんだけど。。
SMB マルチチャンネルはお互いがWindows同士なら特に設定も必要なく、対応するNIC(LANカード)なら複数ポートに繋いだだけ有効化されるようですが、今回の相手はLinuxベースのOSを使うNASなわけで簡単にはいきません。
DSM6.1で採用されたSamba4.4の機能を使う
LinuxでWindows用のネットワークプロトコルを使うためにはSambaというアプリを使うようです。で、先日アップデートされたSynologyNAS用のOSであるDSM6.1にSamba4.4が採用されたんですね。
Samba4.4には「実験的な機能」としてSMB3 Multi-Channelが加わり、めでたくLinuxベースのDSMでもSMBマルチチャンネルが使えるようになったというわけです。
Samba 4.4.0 adds *experimental* support for SMB3 Multi-Channel.
Multi-Channel is an SMB3 protocol feature that allows the client
to bind multiple transport connections into one authenticated
SMB session. This allows for increased fault tolerance and
throughput.
ちなみにMacはOS X 10.10 YosemiteからSMB3.0には対応しているようですが、マルチチャンネルが使えるかどうかは分かりません。
リンクアグリケーションとは別モノだよ
ちなみにLANを2つ束ねるというとリンクアグリケーション(LAG、LACP)というのが一般的で、SynologyのNASでもオフィシャルな機能として搭載されていますが、SMBマルチチャンネルとリンクアグリケーションとは別モノです。
リンクアグリケーションでは転送速度は1000Gbpsを超えられません。(2本をリンクアグリケーションすると帯域は2000Mbpsだけど、上限は1000Mbps。2カ所から同時にアクセスがあったときに1000Mbps+1000Mbpsと振り分けることは可能)
PC側のNICに制限あり?
SMBマルチチャンネルを使うにはPC側にもLANポートが2個以上必要ですが、普通のPCにはLANポートは1つしかありません。ということで、LANカード(NIC)を増設する必要があります。
Intel製カードを使いましょう
ただ通信するだけならどんなNICでも良いのですが、SMBマルチチャンネルを使うには対応したNICが必要なようです。ただ、この条件がどうも明らかではありません。。
いろいろ調べた感じだと、Intel製のNICならだいたいOKで、Realtekとかのチップを使った安いNICは使えなさそう。下記のブログの記事を読むと自分のNICが使えるかどうか判断できると思う(絶対できるとは言えないが)
http://rigaya34589.blog135.fc2.com/blog-entry-573.html
私の試した環境だとマザーボードに付いているLAN(I219-V)やダメ元で試しに買ったTP-LINKの安いNIC(TG-3468)はダメで、Intel Gigabit CT Desktop Adapter EXPI9301CT(1ポート)はOKっぽい(2枚で試してはいない)。で、今使っているのは4ポートのIntel I350-T4。だいたい上記ブログと同じ結果かと。
Gigabit CT Desktop Adapterは1ポートなので2枚以上挿さなければならないけど、I350-T4なら1枚(PCI-E x4)で4ポート。2ポート版のI350-T2もありますが値段あんま変わりません。
あと、デュアルとかクアッドポートのNICはサーバー向けの専用機器として売られているので、流通量も少なく業者によって値段バラバラです。I350-T4で1~2万円くらいかと。私はAmazonで10,000円とめっちゃ安いの見つけてプライム発送だったので買ってみましたが全く問題なく動きました^^Winsows10なら挿すだけでドライバインストールも必要ありませんでした。
追記:オンボードのLANポートでもできました。
Fatal1ty Z370 Professional Gaming i7というIntelの1GbEが2ポートと10GbEが1ポートオンボードに付いているマザーボードがあったので試したところ、1GbEx2で使ってもマルチチャンネル有効化できました(NASはDS1517+)。
ただ、片方のポート(I219V)が半分くらいの速度しかでず、1.5倍速な感じ(2つのポートはそれぞれ Intel I219V, I211AT)。設定いじったらフルパワー使えるかもしれないけどそこまで調査してません^^;
追記:読者の方から情報もらいました!
DS716+とインテル I211、メラノックス ConnectX-3 ENでもマルチチャンネル有効化できたようです。インテル以外のNICでも動くものはありそうですね。
studio9さん @photostudio9 の記事を読んで、自宅のDS716+でテストしてみました。
シングルディスク+SSD読み込みキャッシュ+RAM8GBの構成です。
2ポート分の帯域出ていますね。PCのNICはI211とConnectX-3 ENです。 pic.twitter.com/BqPfYdaiFv— とっとこ (@tottoko83746844) May 18, 2017
他にスイッチが必要
NASとPCを直結するならいいかも知れないけど普通はネットワーク化するはずなのでスイッチングハブ(スイッチ)が必要です。リンクアグリゲーションするわけではないので安いアンマネージドタイプのやつでOKなはず(1GbE対応のやつね)。TP-LINKかネットギアのやつがAmazonで安いです。
例えば2ポートでSMBマルチチャンネル使うなら、NAS側+PC側で4ポート+WiFiルーター用1ポートの計5ポート必要。4ポートで使うなら最低4+4+1=9ポート必要です。
8ポート用だとネットギアGS308-100JPSで3,000円以下。私はこれの16ポート版のGS316-100JPSを使ってます。TP-LINKのやつだとリンクアグリケーションも出来る1ランク上のTL-SG108Eは実際に使えました。これでも3,500円くらいね。安い。
もちろんLANケーブル(カテゴリー5e以上)もポートの数だけ必要。
SMBマルチチャンネルを有効化する方法
最初にも言ったとおり、ここからはSynologyが公式にサポートしている内容ではないので各自自己責任を。あと、「黒い画面」を触らなきゃいけないのでその辺の知識もある程度必要です。
1.DSM6.1以上にアップデート
まずはDSMを最新版(6.1以上)にアップデートします。
SMB3を有効化
続いてコントロールパネル>ファイルサービス>SMB/AFP/NFS のSMBの欄で「詳細設定」をクリック。
ここで「最大SMBプロトコル」をSMB3に設定。
これで下準備ができました。次はSSHログインして設定ファイルを編集します。普通の人はここが一番ハードルが高いはず。それなりにリスクもあるので、はっ?ってなった人は止めといた方が良いかも知れません。
NASにSSHログインする
で、コントロールパネルの「端末とSNMP」でSSHサービスを有効化します。ポートはとりあえず22のままでも良いです。SSHサービス有効化するとセキュリティリスクが高まるので作業後は閉じておきましょう。
SSHサービスを有効化したら、PuTTYなど適当なSSHクライアントを使ってNASにSSHログイン。私は普段使ってるPoderosa Terminal使いました。
接続先はNASのIPアドレス(DSMのコントロールパネル>ネットワーク>ネットワークインターフェイス で確認出来る)、アカウントはログインID、パスワードはログインパスワードです。
2.smb.confを編集
ログインできたら sudo -i で特権を得て、 /etc/samba/smb.conf の内容を書き換えます。
ユーザー名@NAS名:~$ sudo -i
sudo -i したときにも警告出てくるかと思いますが、NASの内部を直接編集するので適当にやって間違えると死ぬ可能性があるのでご注意を。やることはそんな難しい事ではないですが。
まずは/etc/sambaにいってsmb.confがある事確認してみましょう。
root@NAS名:~# cd /etc/samba root@NAS名:/etc/samba# ll total 32 drwxr-xr-x 3 root root 4096 May 13 18:08 . drwxr-xr-x 45 root root 4096 May 13 18:09 .. drwxr-xr-x 2 root root 4096 May 13 18:08 private -rw-r--r-- 1 root root 399 May 13 18:08 smb.conf -rw-r--r-- 1 root root 3050 Feb 25 13:37 smb.conf.bak -rw-r--r-- 1 root root 497 May 13 16:53 smbinfo.conf -rw-r--r-- 1 root root 2643 May 13 16:53 smb.share.conf
次に万が一のバックアップとしてsmb.confをコピーしておきます。
root@NAS名:/etc/samba# cp smb.conf smb.conf.bkup170511
root@NAS名:/etc/samba# ll total 32 drwxr-xr-x 3 root root 4096 May 13 18:08 . drwxr-xr-x 45 root root 4096 May 13 18:09 .. drwxr-xr-x 2 root root 4096 May 13 18:08 private -rw-r--r-- 1 root root 399 May 13 18:08 smb.conf -rw-r--r-- 1 root root 3050 Feb 25 13:37 smb.conf.bak -rw-r--r-- 1 root root 268 May 11 04:16 smb.conf.bkup170511 -rw-r--r-- 1 root root 497 May 13 16:53 smbinfo.conf -rw-r--r-- 1 root root 2643 May 13 16:53 smb.share.conf
で、smb.confを編集してマルチチャンネル有効化。
root@NAS名:/etc/samba# vi smb.conf
書き加える内容は次の3行。iで挿入モードにして書き加えます。viの使い方は調べてね。
server multi channel support=yes aio read size=1 aio write size=1
末尾に書き加えるだけでOKです。コメントアウトとかしても保存して次に見ると不要な行とか削除されて順番も入れ替わってたりするので(私の環境では)。
こんな感じですね。wqで上書き保存。
[global] printcap name=cups winbind enum groups=yes include=/var/tmp/nginx/smb.netbios.aliases.conf encrypt passwords=yes min protocol=NT1 security=user local master=no realm=* syno sync dctime=no passdb backend=smbpasswd printing=cups max protocol=SMB3 winbind enum users=yes load printers=yes workgroup=WORKGROUP server multi channel support=yes aio read size=1 aio write size=1
これでOKです。exitでログアウトして、「端末とSNMP」からSSHサービスを無効化しておきましょう。
Synologyの海外フォーラムを参考にしました。
https://forum.synology.com/enu/viewtopic.php?t=128482
3.NASを再起動してケーブルを繋げる
設定が終わったらNASを再起動させて、ケーブルをバシバシ繋げます。私はこんな感じで繋げてます。
要はLANポートをぜんぶスイッチ(スイッチングハブ)に繋げればOK。安いアンマネージドタイプ(上記ネットギアのようなやつ)は繋げるだけでOK。順番も特に決まりはありません。高機能なスマートスイッチは初期設定が必要な場合あり。
この辺私も詳しくないので質問されてもお答えできませんw
4.Windowsで有効化されているか確認
まずは普通にブラウザからDSMにアクセス出来るか確認してみます。問題なければWindows PowerShellを管理者権限で起動。
左下の検索ボックスからpowershellとしてアイコンを右クリック>管理者として実行 すればOK。
「Get-SmbServerNetworkInterface」打ち込むとNASとPCの対応関係が分かります。下の例はDS1517+で4ポート繋げた例。ちゃんと対になってますね。
PS C:\Windows\system32> Get-SmbServerNetworkInterface
Scope Name Interface Index RSS Capable RDMA Capable Speed IpAddress ---------- --------------- ----------- ------------ ----- --------- * 15 True False 1 Gbps 192.168.0.113 * 15 True False 1 Gbps fe80::91c9:... * 7 True False 1 Gbps 192.168.0.118 * 7 True False 1 Gbps fe80::1927:... * 24 True False 1 Gbps 192.168.0.111 * 24 True False 1 Gbps fe80::6d81:... * 12 True False 1 Gbps 192.168.0.110 * 12 True False 1 Gbps fe80::45de:...
つづいてSMB接続できているか確認。
PS C:\Windows\system32> Get-SmbConnection
NAS(192.168.0.114)はちゃんと接続できているようです。
で、最後にマルチチャンネルが有効化されているか確認。
PS C:\Windows\system32> Get-SmbMultichannelConnection
Server Name Selected Client IP Server IP Client Interface Index Server Interface Index Client RSS Capable Client RDMA Capable ----------- -------- --------- --------- ---------------------- ---------------------- ------------------ ------------------- 192.168.0.114 True 192.168.0.110 192.168.0.117 12 6 False False 192.168.0.114 True 192.168.0.118 192.168.0.116 7 5 False False 192.168.0.114 True 192.168.0.111 192.168.0.115 24 4 False False 192.168.0.114 True 192.168.0.113 192.168.0.114 15 3 False False
ここに表示が出ればめでたしめでたしです。
この辺、下記のブログ記事がいろいろ詳しいです
http://rigaya34589.blog135.fc2.com/blog-entry-573.html
5.転送速度を確認
Crystal Disk Markで測定してみました。まずは2ポートのDS416playでこんな感じ。4TBx4のSHR(RAID5相当)構成です。
めでたく200MB/s越えしました。これなら単体の外付けHDDより高速で作業用にもバシバシ使えますね。
続いて、上記DS416playからDS1517+に移行させて(4TBx4のまま)4ポートのマルチチャンネルをやったのがこちら。
ヤバいwシーケンシャルで466.5MB/sとSSD並のスピードが出ました。4K(Q32T1)がめっちゃ早くなったのはどうしてだろうか。。とにかく早い。
大容量ファイルを転送しているときの稼働率はこんな感じになります。
各ポートで1Gbpsギリギリいっぱい使われているのが分かりますね。
速度が出ない時は?
Powershellでマルチチャンネル有効化を確認したのに速度が出ない時(接続後最初の測定で私もなりました)はWindowsも再起動させてみましょう。
私はこれでうまくいきました。
まとめ
ということで、公式にはサポートされてないけど裏ワザ的にNASのスピードを高速化させる方法を紹介してみました。安いといっても2~3万円は掛ってしまいますが規格の問題で今まで超えられなかった壁を越えられるのは大きいです。動画など大きなファイルを扱う人にはなおさら。
何度も言うようですが、Samba4.4のマルチチャンネルは安定版とはいえないため速度にバラツキが出たりと完璧ではない点には注意して下さい。本番で使う場合は十分に検証を行った後に自己責任にて行うようお願い致します。(数日使った感じだと今のところ問題ないですが)
追記:使えてます!
かれこれ6ヶ月ほどメインNASとしてSMBマルチチャンネル状態で使ってますが今のところ特にトラブルもなくぜんぜん問題なく非常に快適です。(17/11/04)
追記2:複数同時の転送や細かなファイルでは注意かも
これまでは写真のRAWファイル(30~50MB)など大きなファイルを中心に扱ってきたので特に不具合感じてなかったのですが、どうも細かなファイルがいっぱい入ったフォルダをまるごと転送とか、2つの転送を並列して同時に行うといった操作では転送速度が落ちて不安定になることがありました。動画でマルチトラック編集する場合ももしかすると注意が必要かも知れません。
マルチチャンネルもまだ完璧ではない感じですね。今年(2018年)に入って10GbEのスイッチも3万円を切ってきてかなり安くなってきたので、安定してガリガリ使いたいなら10GbEにいっても良いかなと思っています。
ということで、私はこれ買いました。また10GbE化したらレビューしてみようと思います。(18/4/5)
--- 追記おわり ---
複数ポートを搭載するNASを使うとこんなロマンあふれる使い方が出来るのですね。
これで10GbEが安くなるまであと数年戦えそうです(まだ検証段階だけど)。
*この記事は私が勝手に調べて書いているだけですが、DS1517+はSynologyさんに検証用にご提供いただいたものです。DS416playは自分で買ったもの。
Synologyの中の人もSMBマルチチャンネルはまだ安定性確立していないので検証目的で使ってねと言ってました。