zoukankan      html  css  js  c++  java
  • 【转】通过VIOS实现AIX系统的网络虚拟化

    在上一篇博文中,我们已经在一个新创建的LPAR中通过File-backed device以及VMLibrary的方式成功安装了一个AIX系统,接下来我们讨论如何通过VIOS的协助来完成新装AIX系统的网络功能。为方便读者阅读,我把当前我们所处的位置用下图简单标识一下:

     



    上图是通过VIOS给新装的AIX系统提供网络支持的大致原理图,VIOS负责提供一个虚拟的ethernet apapter给AIX使用(见图中VESA与VECA部分的连接),然后VIOS通过SEA穿过PowerVM Hypervisor(也即利用Hypervisor Firmware所提供的功能)来使用物理的Ethernet Adapter与外部世界进行网络通信。

    通过上一篇博文之后,我们可以登录到AIX系统,但是网络部分尚未开通,这也是这篇博文要讨论的主要内容。上篇文章中我们在创建一个新的LPAR时用的是下面的命令:

    -bash-3.2$ mksyscfg -r lpar -i "name=nim,lpar_env=aixlinux,auto_start=1,boot_mode=norm,mem_mode=ded,min_mem=1024,
    desired_mem=2048,max_mem=2048,proc_mode=shared,sharing_mode=uncap,uncap_weight=128,
    min_procs=1,desired_procs=1,max_procs=2,min_proc_units=0.25,desired_proc_units=0.5,
    max_proc_units=2,"virtual_eth_adapters=4/0/3//0/0,5/0/4//0/0""


    这条命令很长很暴力,不过目前我们的关注点是黑体红色部分,它将为新生成的虚拟机LPAR提供两个Virtual Ethernet Adapter,因为相对于VIOS这个LPAR而言,新的LPAR将作为它的client形式而存在,所以新的LPAR(为简单起间,后续用其名称nim来代表这个LPAR)中的Virtual Ethernet Adapter的官方称谓是Virtual Ethernet Client Adapter(VECA)。这里简单解释一下后面那两个诡异的参数,
    4/0/3//0/0,它是‘slot_number/is_ieee/port_vlan_id/additional_vlan_ids/is_trunk/is_required’的具体表现形式,其最核心的信息有3个:slot_number, port_vlan_id和is_trunk.
    slot_number是这个VECA在nim这个虚拟机当中的slot_number,而port_vlan_id最重要,它表示当前虚机中的这个VECA与VIOS中的哪个Virtual Ethernet Server Adapter(VESA)是相互绑定的,也就是上图中的VESA与VECA标识的那条线,is_trunk表示这个virtual ethernet adapter是否用来连接external network,在client partition当中当然不需要了,因为我们只和VIOS中的VESA打交道,后者才需要连接external network (by using the physical ethernet adapter through the SEA)。我们后面在具体操作时还会再解释这里的参数。

    现在我们登录到新装的AIX中,利用lsdev命令可以看到下面两个VECA(对应前面创建LPAR时的“virtual_eth_adapters=4/0/3//0/0,5/0/4//0/0“参数):


    (通常来说,上层的OS是不会知道底下设备是虚拟的还是物理的,但是我们从上面的命令输出可以看到,AIX很明显知道ent0和ent1都是Virtual I/O设备,因为所有的这一套东西都由IBM独家提供,包括AIX,所以这并不奇怪)

    可以用lscfg命令看看这两个虚拟设备的详细信息:


    上图中被我用鼠标hightlight部分是ent0的location code,其中V2-C4-T1的信息是此时我们比较关心的,C4表示该设备的slot number=4,这跟创建它的参数
    4/0/3//0/0是吻合的。

    接下来为了使新装的AIX系统可以访问外部网络,需要在VIOS中为它建立一个SEA (Shared Ethernet Adapter),所以现在我们需要登录到VIOS环境中,找到port_vlan_id=3的VESA,然后为其建立一个SEA设备。

    在VIOS中,我们可以看到如下一些跟网络设备相关的东西:


    在我们当前实验用的IBM P服务器上,有两个物理的Ethernet Adapter设备,分别对应上图中的ent0和ent1,这两个设备都有网线连接到一个交换机上,所以ent0和ent1都可以用来作为SEA设备的backing device.
    上图中的ent4, ent5,ent6和ent7则分别是VIOS上的VESA,为了配置AIX的网络,需要找到与AIX中ent0或者ent1相同的vlan id,下面我们以AIX中ent0为例,它所对应的VIOS中的VESA的vlan id=3. 所以我们需要在VIOS中找出ent[4,7]中哪个vlan id=3. 在VIOS环境下,执行lshwres命令:


    上图中被hightlight的部分显示:VIOS中,vlan id = 3的VESA的slot num=5, 然后再用lsmap -all -net命令:
    -bash-3.2$ lsmap -all -net
    SVEA   Physloc
    ------ --------------------------------------------
    ent4   U8204.E8A.068B7E4-V1-C3-T1

    SEA                 NO SHARED ETHERNET ADAPTER FOUND

    SVEA   Physloc
    ------ --------------------------------------------
    ent5   U8204.E8A.068B7E4-V1-C4-T1

    SEA                 NO SHARED ETHERNET ADAPTER FOUND

    SVEA   Physloc
    ------ --------------------------------------------
    ent6   U8204.E8A.068B7E4-V1-C5-T1

    SEA                 NO SHARED ETHERNET ADAPTER FOUND

    SVEA   Physloc
    ------ --------------------------------------------
    很明显,红色部分表明ent6所对应的slot num=5,因此它的vlan id=3. ent6就是和我们新建的虚机VECA所对应的VESA. 有了这些信息之后,就可以为ent6建立一个SEA:



    上面的命令行中,为了方便后续其他LPAR上的网络配置工作,我们为ent[4,6]都创建了一个相同的SEA ent9,其backing device为ent1,后者是一个physical ethernet adapter,前面我们都已经看到过了。(从这条命令我们还可以看到什么?可以看到一个SEA可以支持多个client partition的网络功能,这也是它为啥叫Shared Ethernet Adapter的原因,而一个SEA只有一个backing device,在我们的例子中是ent1,后者是一个实际的Ethernet Adapter,用来和外部世界进行信息沟通)

    在以上步骤完成之后,就可以通过ifconfig来配置新安装的AIX系统的网络接口en0了(此时它的状态是Defined),这跟Linux下面的配置大同小异。完成之后,ping一下我自己的主机:
    # ping 192.16.10.94
    PING 192.16.10.94: (192.16.10.94): 56 data bytes
    64 bytes from 192.16.10.94: icmp_seq=0 ttl=63 time=9 ms
    64 bytes from 192.16.10.94: icmp_seq=1 ttl=63 time=0 ms
    64 bytes from 192.16.10.94: icmp_seq=2 ttl=63 time=0 ms
    配置完成后,ent0的状态已经改变成Available了。

    一旦网络通了之后,可以稍微轻松一下,接下来的任务是把这台新装的AIX配置成一个NIM服务器。详见下一篇博文。

    本文转自:http://blog.chinaunix.net/uid-23769728-id-3315871.html

  • 相关阅读:
    python 并发编程 多线程 event
    python 并发编程 多线程 定时器
    python 并发编程 多线程 信号量
    linux top 查看CPU命令
    python 并发编程 多线程 GIL与多线程
    python 并发编程 多线程 死锁现象与递归锁
    python 并发编程 多线程 GIL与Lock
    python GIL全局解释器锁与互斥锁 目录
    python 并发编程 多线程 GIL全局解释器锁基本概念
    执行python程序 出现三部曲
  • 原文地址:https://www.cnblogs.com/caogen1991/p/6809023.html
Copyright © 2011-2022 走看看