背景介绍:


需求: 部署3节点oracle RAC时, 要求4网口中,公网网口使用2个并用 ipmp 绑定, 私网网口使用 HAIP 并支持巨型帧 (Jumbo Frame)
主机: 3节点主机均为 SUN T3 Server 中 ldom 中的zones。 简单介绍两个概念:zone虚拟化技术中宿主机叫 global zone,ldom虚拟化技术中宿主机叫 primary。 本例中RAC节点是SUN T3 server 中 Ldom 的一个zone,即虚拟机中的虚拟机,
版本: Solaris 11, Oracle RAC 11gr2
关键字: solaris11, Jumbo frame, MTU zones, ldom

修改MTU=9000 即支持Jumbo Frame的步骤:

    • 在Solaris 11 非虚拟环境中,如果修改系统MTU值,主要步骤:

          1. 查看当前MTU取值范围,当前为60-9216证明系统已经支持Jumbo Frame。 如果发现范围的上限为1500,可以继续步骤2修改

点击(此处)折叠或打开

  1. root@deepalley:~# dladm show-linkprop -p mtu
  2. LINK PROPERTY PERM VALUE EFFECTIVE DEFAULT POSSIBLE
  3. net1 mtu rw 1500 1500 1500 60-9216
  4. net3 mtu rw 1500 1500 1500 60-9216
  5. net0 mtu rw 1500 1500 1500 60-9216
  6. net2 mtu rw 1500 1500 1500 60-9216
  7. root@deepalley:~# dladm set-linkprop -t -p mtu=9000 net2

  8. root@deepalley:~# dladm show-linkprop -p mtu
  9. LINK PROPERTY PERM VALUE EFFECTIVE DEFAULT POSSIBLE
  10. net1 mtu rw 1500 1500 1500 60-9216
  11. net3 mtu rw 1500 1500 1500 60-9216
  12. net0 mtu rw 1500 1500 1500 60-9216
  13. net2 mtu rw 9000 9000 1500 60-9216

          2. 确定网卡类型:

点击(此处)折叠或打开

  1. root@deepalley:~# dladm show-phys
  2. LINK MEDIA STATE SPEED DUPLEX DEVICE
  3. net1 Ethernet unknown 1000 full igb1
  4. net3 Ethernet unknown 1000 full igb3
  5. net0 Ethernet up      1000 full igb0
  6. net2 Ethernet unknown 1000 full igb2
3. 查看/修改驱动配置信息:
vi /kernel/drv/igb.conf 修改 default_mtu (本例中网卡类型为igb,所以用igb.conf,如果为其它类型,请在同目录下寻找对应配置文件),这个配置文件中也有为具体某个网口设置属性的选项,描述很详细,这里不详细展开,我们直接修改default_mtu

点击(此处)折叠或打开


  1. ...
  2. # -------------------- Jumbo Frame --------------------
  3. # default_mtu
  4. # The size of the default MTU (payload without the ethernet header)
  5. # Allowed values: 1500 - 9216
  6. # Default value: 1500
  7. #
  8. # default_mtu = 9216;   修改此项
  9. ...
  10. ...
4. 重启系统,使用 dladm set-linkprop -t -p mtu=9000 igb[n] 修改生效


思路是如果想让虚拟机支持巨型帧,那么宿主机必须支持该特性。按照上述步骤直接在虚拟机中修改会报错:

点击(此处)折叠或打开

  1. root@deepalley:~# dladm set-linkprop -t -p mtu=9000 net2
  2. dladm: warning: cannot set link property 'mtu' on 'net2': link busy
我们从顶层的宿主机一层一层向下修改:

终极宿主机层: Primary
1. 如果dladm show-linkprop -p mtu 显示 Jumbo Frame未开启, 按照上面非虚拟化修改方法步骤1修改:
2. 修改它的虚拟机的网卡配置信息 ldm 命令:

这个Primary有三个guest,ld1是我们AC节点1的宿主机

点击(此处)折叠或打开

  1. root@Primary:~# ldm list
  2. NAME STATE FLAGS CONS VCPU MEMORY UTIL NORM UPTIME
  3. primary active -n-cv- UART 200 23G 0.1% 0.1% 4d 2h 11m
  4. ld1 active -n---- 5001 18 32G 0.2% 0.1% 1h 19m
  5. ld2 active -n---- 5002 28 56G 1.9% 1.5% 3d 6h 51m
  6. ld3 active -n---- 5003 10 16G 7.4% 5.7% 7h 31m
3. 查看网口信息

点击(此处)折叠或打开

  1. root@Primary:~# ldm list -o physio ld1
  2. NAME
  3. ld1

  4. IO
  5. DEVICE PSEUDONYM OPTIONS
  6. pci@500/pci@1/pci@0/pci@5/network@0,80 /SYS/MB/NET2/IOVNET.PF0.VF0
  7. pci@500/pci@1/pci@0/pci@5/network@0,81 /SYS/MB/NET2/IOVNET.PF1.VF0
  8. pci@400/pci@1/pci@0/pci@4/network@0,80 /SYS/MB/NET0/IOVNET.PF0.VF0
  9. pci@400/pci@1/pci@0/pci@4/network@0,81 /SYS/MB/NET0/IOVNET.PF1.VF0
4. 设置网口mtu值

点击(此处)折叠或打开

  1. root@Primary:~# ldm set-io mtu=9216 /SYS/MB/NET2/IOVNET.PF0.VF0
  2. root@Primary:~# ldm set-io mtu=9216 /SYS/MB/NET2/IOVNET.PF1.VF0
(NOTE: 这个网口是怎么对应呢,如何知道/SYS/MB/NET2/IOVNET.PF0.VF0 和 /SYS/MB/NET2/IOVNET.PF1.VF0 就是我们想要修改的两个私网网口呢,这个信息是通过 /etc/path_to_inst 文件得来的, 可以通过 cat /etc/path_to_inst | grep igb 得到 上面命令的DEVICE信息,然后就对应上了。)

5. 最后重启这个ldom guest,当然最底层的我们的rac节点也跟着重启

点击(此处)折叠或打开

  1. root@Primary:~# ldm stop ld1
  2. root@Primary:~# ldm start ld1
在最终节点上查看结果:

点击(此处)折叠或打开

  1. root@zone1:~# dladm show-linkprop -p mtu
  2. LINK PROPERTY PERM VALUE EFFECTIVE DEFAULT POSSIBLE
  3. z1net0 mtu rw 1500 1500 1500 60-1500
  4. z1net1 mtu rw 1500 1500 1500 60-1500
  5. z1net2 mtu rw 9000 9000 1500 60-9000
  6. z1net3 mtu rw 9000 9000 1500 60-9000
搞定!

小结: 在虚拟机中配置不通,问题就出在宿主机。配置一个小小的MTU 巨型帧特性,涉及 solaris zone虚拟化管理, ldom虚拟话管理, 驱动配置文件等的相关知识点,收获不小。最后期待Jumbo Frame 在RAC 11g 中会带来什么样的表现。




09-23 07:27