一.vif接口概念

netapp把端口聚合叫做vif(与术语port trunk/etherchanell/link aggregate是同一个意思),支持以下三中聚合方式:

a.single-mode,端口工作在active和standby状态,只有一个端口处于actvie状况,当active端口失效,系统自动从standby中选择一个端口成为active口;不需要交换机支持aggre,也不需要在交换机上做任何相关配置.所有端口具有相同的MAC地址(如下所示)

 

b.multi-mode(static),与IEEE 802.3ad(static)兼容,所有端口处于active状态,具有相同的mac地址;能够检测端口的链路状态,但不能数据的丢失;交换机需要支持LACP;在multimode(包括static和dynamic)下,存储系统对outbound traffic支持三种load-balance算法:IP-based/MAC-based/Round robin;

c.multi-mode(dynamic),与IEEE 802.3ad(dynamic)兼容,即lLACP协议(cisco叫做PAgP),所有端口均处于active状态,具有相同的mac地址;交换机需要支持LACP;在lacp下,vif接口必须配置为first-level,并且LB应该配置为IP-based(这也是默认方式);在lacp下,存储系统不仅能检测链路的丢失,还能检测数据流的丢失,因此该模式与HA环境相兼容;

 

二.vif接口配置

使用vif命令创建删除vif接口,添加或删除物理网口到vif中,查看vif接口状态;

最多支持16个物理口聚合成1个vif接口;所有物理口需具有相同的MTU;不能将vlan接口添加到vif中;支持10/100/1000m网卡;

对于10G TOE卡有以下限制:multimode支持2个物理口,LACP不支持,TOE功能会被禁用;

 

nasim*> vif
Usage:
        vif create [single|multi|lacp] <vif_name> -b [rr|mac|ip] [<interface_list>]    创建vif接口,指定模式/接口名称/LB算法/相应的物理接口;
        vif add <vif_name> <interface_list>     将物理口添加到以存在的vif接口中;                                  
        vif delete <vif_name> <interface_name> 从vif接口中删除物理接口;
        vif destroy <vif_name>              删除vif逻辑接口;
        vif {favor|nofavor} <interface>   在接口组中,选择active接口;
        vif status [<vif_name>]             查看vif接口状态;
        vif stat <vif_name> [interval]     查看vif流量统计信息;

1.single vif配置

step1:使用vif create命令创建single vif逻辑接口:

nasim*&gt; vif create single singletrunk1 ns0 ns1
nasim*&gt;

查看系统接口信息,
nasim*&gt; ifconfig -a
ns0: flags=808042<BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether 02:50:56:1d:ff:f7 (Linux AF_PACKET socket)
        trunked singletrunk1
ns1: flags=808042<BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether 02:50:56:1d:ff:f7 (Linux AF_PACKET socket)
        trunked singletrunk1
lo: flags=1948049<UP,LOOPBACK,RUNNING,MULTICAST,TCPCKSUM> mtu 9188
        inet 127.0.0.1 netmask 0xff000000 broadcast 127.0.0.1
singletrunk1: flags=8042<BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether 02:50:56:1d:ff:f7 (Disabled virtual interface)
nasim*&gt;

step2:给虚拟接口配置IP地址:

nasim*&gt;
nasim*&gt; ifconfig singletrunk1 192.168.1.20 netmask 255.255.255.0
nasim*&gt; Mon Jan 18 04:35:58 GMT [pvif.switchLink:warning]: singletrunk1: switching to ns1 (系统随机选择ns1口为active接口)
Mon Jan 18 04:35:58 GMT [iscsi.notice:notice]: ISCSI: New session from initiator iqn.2005-03.com.redhat:01.74394c92c697 at IP addr 192.168.1.60

nasim*&gt; ifconfig -a
ns0: flags=848043<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether 02:50:56:1d:ff:f7 (Linux AF_PACKET socket)
        trunked singletrunk1
ns1: flags=848043<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether 02:50:56:1d:ff:f7 (Linux AF_PACKET socket)
        trunked singletrunk1
lo: flags=1948049<UP,LOOPBACK,RUNNING,MULTICAST,TCPCKSUM> mtu 9188
        inet 127.0.0.1 netmask 0xff000000 broadcast 127.0.0.1
singletrunk1: flags=848043<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.1.20 netmask 0xffffff00 broadcast 192.168.1.255
        ether 02:50:56:1d:ff:f7 (Enabled virtual interface)
nasim*&gt;

step3:手动选择active接口,查看vif接口状态:

nasim*&gt;
nasim*&gt; vif favor ns0
nasim*&gt;    
nasim*&gt; vif status singletrunk1 (在singlemode下,只有一个物理口为up,即active,其他为down,即standby)
default: transmit 'IP Load balancing', VIF Type 'multi_mode', fail 'log'
singletrunk1: 1 link, transmit 'none', VIF Type 'single_mode' fail 'default'
         VIF Status     Up      Addr_set
        up:
        ns1: state up,
since 18Jan2010 05:19:38 (00:55:06)
                mediatype: Linux AF_PACKET socket
                flags: enabled
                input packets 0, input bytes 0
                output packets 562, output bytes 534476
                output probe packets 0, input probe packets 0
                up indications 1, broken indications 0
                drops (if) 0, drops (link) 0
                indication: up at 18Jan2010 05:19:38
                        consecutive 3304, transitions 1
        down:
        ns0: state down,
since 18Jan2010 05:19:38 (00:55:06)
                mediatype: Linux AF_PACKET socket
                flags: enabled
                input packets 0, input bytes 0
                output packets 0, output bytes 0
                output probe packets 0, input probe packets 0
                up indications 1, broken indications 0
                drops (if) 0, drops (link) 0
                indication: up at 18Jan2010 05:19:38
                        consecutive 3304, transitions 1


nasim*&gt; Mon Jan 18 04:44:02 GMT [pvif.switchLink:warning]: singletrunk1: switching to ns0

step4:验证linux iscsi initiator连接

nasim*&gt; iscsi session show
No active sessions

没有活动iscsi会话,查看主机端启动日志:

[root@rhe5 log]# grep iscsi /var/log/messages
Jan 17 03:42:20 rhe5 iscsid: connect failed (113)
Jan 17 04:36:52 rhe5 iscsid: Portal group tag mismatch, expected 1000, received 2000
Jan 17 04:36:57 rhe5 iscsid: connect failed (113)
Jan 17 05:04:11 rhe5 kernel: iscsi: cmd 0x28 is not queued (8)
Jan 17 05:04:11 rhe5 kernel: iscsi: cmd 0x28 is not queued (8)
Jan 17 05:04:14 rhe5 iscsid: connect failed (113)
Jan 17 05:04:41 rhe5 iscsid: connect failed (113)
Jan 17 05:04:47 rhe5 iscsid: connect failed (113)
Jan 17 05:06:08 rhe5 kernel: Loading iSCSI transport class v2.0-685.<5>iscsi: registered transport (tcp)
Jan 17 05:06:08 rhe5 kernel: iscsi: registered transport (iser)
Jan 17 05:06:08 rhe5 iscsid: connection0:0 is operational now
Jan 17 05:06:08 rhe5 iscsid: picking unique OUI for the same target node name iqn.1992-08.com.netapp:sn.99900641
Jan 17 05:06:09 rhe5 iscsid: connection1:0 is operational now
Jan 17 05:12:01 rhe5 iscsid: connect failed (113)
Jan 17 05:12:01 rhe5 iscsid: connect failed (113)
Jan 17 05:12:04 rhe5 iscsid: Portal group tag mismatch, expected 1000, received 2000
Jan 17 05:12:06 rhe5 iscsid: connect failed (113)
Jan 17 05:13:39 rhe5 kernel:  session0: iscsi: session recovery timed out after 120 secs
Jan 17 05:13:39 rhe5 iscsid: connect failed (113)
Jan 17 05:21:23 rhe5 iscsid: connect failed (113)
Jan 17 21:23:19 rhe5 iscsid: connect failed (113)
Jan 17 21:23:25 rhe5 iscsid: connect failed (113)
Jan 17 21:25:10 rhe5 kernel: Loading iSCSI transport class v2.0-685.<5>iscsi: registered transport (tcp)
Jan 17 21:25:10 rhe5 kernel: iscsi: registered transport (iser)
Jan 17 21:25:14 rhe5 iscsid: connect failed (113)
Jan 17 21:25:15 rhe5 iscsid: Portal group tag mismatch, expected 1000, received 2000

上述错误信息表明,portal group tag不匹配导致iscsi login 失败;查看存储设备和主机上的配置:

[root@rhe5 log]# cd /var/lib
[root@rhe5 lib]# cd iscsi
[root@rhe5 iscsi]# ls
nodes  send_targets
[root@rhe5 iscsi]# cd nodes
[root@rhe5 nodes]# ls
iqn.1992-08.com.netapp:sn.99900641
[root@rhe5 nodes]# cd iqn.1992-08.com.netapp\:sn.99900641/
[root@rhe5 iqn.1992-08.com.netapp:sn.99900641]# ls
192.168.1.20,3260  192.168.1.21,3260
[root@rhe5 iqn.1992-08.com.netapp:sn.99900641]# more 192.168.1.20,3260
node.name = iqn.1992-08.com.netapp:sn.99900641
node.transport_name = tcp
node.tpgt = 1000
node.active_conn = 1
node.startup = automatic
node.session.initial_cmdsn = 0
node.session.auth.authmethod = None
node.session.timeo.replacement_timeout = 120
……

nasim*&gt; iscsi portal show
Network portals:
IP address        TCP Port  TPGroup  Interface
192.168.1.20         3260    2000    singletrunk1

修改主机上portal tag与存储设备上一致,重启主机;

[root@rhe5 send_targets]# fdisk -l

Disk /dev/sda: 23.6 GB, 23622320128 bytes
255 heads, 63 sectors/track, 2871 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1           6       48163+  83  Linux
/dev/sda2               7         515     4088542+  83  Linux
/dev/sda3             516        2741    17880345   83  Linux
/dev/sda4            2742        2871     1044225    5  Extended
/dev/sda5            2742        2871     1044193+  82  Linux swap / Solaris

Disk /dev/sdb: 36 MB, 36700160 bytes
2 heads, 35 sectors/track, 1024 cylinders
Units = cylinders of 70 * 512 = 35840 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1024       35822+  83  Linux
[root@rhe5 send_targets]# cd /
[root@rhe5 /]# mkdir /mnt/nalun
[root@rhe5 /]# mount /dev/sdb1 /mnt/nalun

nasim*&gt;
nasim*&gt; iscsi session show
Session 5
  Initiator Information
    Initiator Name: iqn.2005-03.com.redhat:01.74394c92c697
    ISID: 00:02:3d:00:00:00
    Initiator Alias: rhe5

2.multimode vif配置

nasim*&gt;
nasim*&gt; vif destroy singletrunk1
vif: cannot destroy a pvif that is up
nasim*&gt;
nasim*&gt;
nasim*&gt; ifconfig singletrunk1 down
nasim*&gt; Mon Jan 18 06:17:29 GMT [pvif.vifConfigDown:info]: singletrunk1: Configured down

nasim*&gt; vif destroy singletrunk1
nasim*&gt;
nasim*&gt;
nasim*&gt; ifconfig -a
ns0: flags=808042<BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether 00:50:56:1d:ff:f7 (Linux AF_PACKET socket)
ns1: flags=808042<BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether 00:50:56:1e:ff:f7 (Linux AF_PACKET socket)
lo: flags=1948049<UP,LOOPBACK,RUNNING,MULTICAST,TCPCKSUM> mtu 9188
        inet 127.0.0.1 netmask 0xff000000 broadcast 127.0.0.1
nasim*&gt;
nasim*&gt;
nasim*&gt; vif create multi multitrunk1 ns0 ns1
nasim*&gt;
nasim*&gt; ifconfig multitrunk1 192.168.1.20 netmask 255.255.255.0
nasim*&gt; Mon Jan 18 06:18:45 GMT [pvif.switchLink:warning]: multitrunk1: switching to ns1
Mon Jan 18 06:18:48 GMT [iscsi.notice:notice]: ISCSI: New session from initiator iqn.2005-03.com.redhat:01.74394c92c697 at IP addr 192.168.1.60

nasim*&gt;
nasim*&gt; vif status multitrunk1  (在multimode下,vif接口组中所有物理接口都为up状态,即active状况)
default: transmit 'IP Load balancing', VIF Type 'multi_mode', fail 'log'
multitrunk1: 2 links, transmit 'IP Load balancing', VIF Type 'multi_mode' fail 'default'
         VIF Status     Up      Addr_set
        up:
        ns1: state up,
since 18Jan2010 06:18:45 (00:03:01)
                mediatype: Linux AF_PACKET socket
                flags: enabled
                input packets 0, input bytes 0
                output packets 37, output bytes 2938
                up indications 1, broken indications 0
                drops (if) 0, drops (link) 0
                indication: up at 18Jan2010 06:18:45
                        consecutive 180, transitions 1
        ns0: state up, since 18Jan2010 06:18:45 (00:03:01)
                mediatype: Linux AF_PACKET socket
                flags: enabled
                input packets 0, input bytes 0
                output packets 119, output bytes 63710
                up indications 1, broken indications 0
                drops (if) 0, drops (link) 0
                indication: up at 18Jan2010 06:18:45
                        consecutive 180, transitions 1

nasim*&gt; iscsi session show
Session 6
  Initiator Information
    Initiator Name: iqn.2005-03.com.redhat:01.74394c92c697
    ISID: 00:02:3d:00:00:00
    Initiator Alias: rhe5

3.lacp vif配置

nasim*&gt;
nasim*&gt; ifconfig multitrunk1 down
nasim*&gt; Mon Jan 18 06:31:28 GMT [pvif.vifConfigDown:info]: multitrunk1: Configured down

nasim*&gt;
nasim*&gt; vif destroy multitrunk1
nasim*&gt;
nasim*&gt; vif create lacp lacptrunk1 ns0 ns1
nasim*&gt;
nasim*&gt;
nasim*&gt; ifconfig lacptrunk1 192.168.1.20 netmask 255.255.255.0 up
nasim*&gt;
nasim*&gt; ifconfig -a
ns0: flags=848043<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether 02:50:56:1d:ff:f7 (Linux AF_PACKET socket)
        trunked lacptrunk1
ns1: flags=848043<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether 02:50:56:1d:ff:f7 (Linux AF_PACKET socket)
        trunked lacptrunk1
lo: flags=1948049<UP,LOOPBACK,RUNNING,MULTICAST,TCPCKSUM> mtu 9188
        inet 127.0.0.1 netmask 0xff000000 broadcast 127.0.0.1
lacptrunk1: flags=48043<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.1.20 netmask 0xffffff00 broadcast 192.168.1.255
        ether 02:50:56:1d:ff:f7 (Disabled virtual interface)
nasim*&gt;                  
nasim*&gt;
nasim*&gt;
nasim*&gt; ifconfig lacptrunk1 up
nasim*&gt;
nasim*&gt;
nasim*&gt; vif status lacptrunk1  ()
default: transmit 'IP Load balancing', VIF Type 'multi_mode', fail 'log'
lacptrunk1: 0 links, transmit 'IP Load balancing', VIF Type 'lacp' fail 'default'
         VIF Status     Addr_set
        lag_inactive:
        ns1: state lag_inactive, since 18Jan2010 06:32:21 (00:00:50)
                mediatype: Linux AF_PACKET socket
                flags: lacp enabled
                input packets 0, input bytes 0
                input lacp packets 0, output lacp packets 2
                output packets 2, output bytes 248
                up indications 1, broken indications 0
                drops (if) 0, drops (link) 0
                indication: lag_inactive at 18Jan2010 06:32:21
                        consecutive 0, transitions 1
        ns0: state lag_inactive, since 18Jan2010 06:32:21 (00:00:50)
                mediatype: Linux AF_PACKET socket
                flags: lacp enabled
                input packets 0, input bytes 0
                input lacp packets 0, output lacp packets 2
                output packets 2, output bytes 248
                up indications 1, broken indications 0
                drops (if) 0, drops (link) 0
                indication: lag_inactive at 18Jan2010 06:32:21
                        consecutive 0, transitions 1

nasim*&gt;
nasim*&gt; ping 192.168.1.20
ping: wrote 192.168.1.20 64 chars, error=No route to host
ping: wrote 192.168.1.20 64 chars, error=No route to host
nasim*&gt;
nasim*&gt; route -s
Routing tables

Internet:
Destination      Gateway            Flags     Refs     Use  Interface
localhost        localhost          UH          0        0  lo

由于交换机不支持lacp,lacp vif配置不成功