SMB限定のお話ですが、1枚のファイルの転送速度がNICの数で増やせるみたい。
Bonding/Teamingとかで物理的にnicを増やしてもそれは負荷分散、耐障害性への対応で1枚ファイルの転送速度の向上には繋がらない
*愚生が知らないだけかもしれないけど...
手元にVLAN設定可能なHUBがあるので、ファイルサーバ、クライアントともに複数のNICを備えSMBMulti-Channelを試してみた
配線の概要としては下記図になる
*VLAN設定可能なHUBであれば、上図の「メインHUB」「サブHUB1」「サブHUB2」は内包可能
sambaサーバをファイルサーバとしてます。ActiveDirectoryは不要です。
*samba4だからってADが必須ではないです。従来のAD関係無しのファイル共有も構築可能です
ここではファイル共有に特化したsambaサーバとして作成して、その中でSMBMulti-Channelで必要な設定を示します
まずsambaサーバにnicカードを追加します。ここではオンボードの2つのnicの他に4portのnicカードを追加しました
[root@e ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
link/ether a0:36:9f:a1:5c:74 brd ff:ff:ff:ff:ff:ff
3: enp1s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
link/ether a0:36:9f:a1:5c:75 brd ff:ff:ff:ff:ff:ff
4: enp1s0f2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
link/ether a0:36:9f:a1:5c:76 brd ff:ff:ff:ff:ff:ff
5: enp1s0f3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
link/ether a0:36:9f:a1:5c:77 brd ff:ff:ff:ff:ff:ff
6: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
link/ether d0:50:99:c2:a0:eb brd ff:ff:ff:ff:ff:ff
7: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
link/ether d0:50:99:c2:a0:ec brd ff:ff:ff:ff:ff:ff
[root@e ~]#
な感じで認識され、下記のようにip addressをアサインします
デバイス | ip address | 備考 |
enp1s0f0 | 192.168.0.6/24(e.sybyl.local) | 追加の4port NIC |
enp1s0f1 | 192.168.1.6/24 | |
enp1s0f2 | 192.168.2.6/24 |
具体的なnmtui画面を下記に示します
*メインのHUBに繋がるNICにはGateway、DNS Serverを記述して、「Never use this ...」は無効にします
ルーティング情報は下記になります
[root@e ~]# ip route
default via 192.168.0.1 dev enp1s0f0 proto static metric 100
192.168.0.0/24 dev enp1s0f0 proto kernel scope link src 192.168.0.6 metric 100
192.168.1.0/24 dev enp1s0f1 proto kernel scope link src 192.168.1.6 metric 100
192.168.2.0/24 dev enp1s0f2 proto kernel scope link src 192.168.2.6 metric 100
[root@e ~]#
次に、sambaファイルサーバを構築してみます
[root@e ~]# yum install samba
[root@e ~]# mkdir /share
[root@e ~]# chown nobody:nobody /share
[root@e ~]# vi /etc/samba/smb.conf
[global]
workgroup = MYGROUP
log file = /var/log/samba/log.%m
max log size = 50
security = user
load printers = No
show add printer wizard = No
printing = bsd
printcap name = /dev/null
guest account = nobody
map to guest = Bad User
server multi channel support = yes
aio read size = 1
aio write size = 1
[share]
path = /share
guest ok = yes
writeable = yes
[root@e ~]#
その後にsambaを起動します。
[root@e ~]# systemctl enable smb
[root@e ~]# systemctl start smb
クライアントにも追加の2portNICを設置して、配線を行います。追加したnicにはip addressのみでDNSとかGWの指定はしません
各ネットワークアダプタの設定項目は下記とした。別にこれ以外を追加しても問題ないみたい
この状態で、PSから見ると
PS C:\Windows\system32> Get-SmbClientNetworkInterface
Interface Index RSS Capable RDMA Capable Speed IpAddresses Friendly Name
--------------- ----------- ------------ ----- ----------- -------------
15 False False 1 Gbps {192.168.2.21} 192.168.2
12 False False 1 Gbps {192.168.1.21} 192.168.1
10 False False 1 Gbps {192.168.0.21} 192.168.0
PS C:\Windows\system32>
と表記された。「RSS Capable」がFALSEなのであるが、、、一応これでも動いた。。。
下図は、クライアント側からサーバ側へファイルをコピーしたときのスナップショット
その逆の経路もほぼ同じ速度でコピーされていた
*FQDNな「\\e.sybyl.local\share\」とか「\\192.168.0.6\share\」でアクセスしないと
Multi-Channelを行ってくれなかった。他にも「\\192.168.1.6\share\」とか別の回線経由で一旦接続しないと
上手くMulti-Channelを行ってくれない時がある。原因は不明。微妙な気がするけど動きます。
インテル様の「I219-V」と「PRO/1000 PT Dual Port Server Adapter(82571EBチップ)」をwindows10で使った際、
RSSの設定項目があり、有効にしたが「RSS Capable」がFALSEであった。
マシン側のnicにRSS有効と無効が混在状態だとSMBMulti-Channelは無理なのかな?片方に寄せるなら大丈夫のように思えた
4portの「Ethernet Server Adapter I340-T4」だと「RSS Capable」がTrueになり、これも問題無しで
SMBMulti-Channelでの転送が行えた
ネットワークセグメントを分けるために複数のHUB(ここではVLAN)を使っているが、そうせずとも1つのHUBで
出来るよとの報告がある
原理はルーティングを調整して特定のNICはサーバ側の特定のNICに繋がるように調整するってな具合