2019年6月

平时在Linux下映射存储,都是映射哪台就给哪台插线,然后在存储端扫描WWPN,简单粗暴,没技术含量。当然,光交下也可以看。

1,查看当前卡的品牌,常用的卡有两种,Emulex和Qlogic。

lspci |grep -i fibre

76728-7o51m46f8vi.png

2,查看HBA卡的驱动版本

emulex:
modinfo lpfc | grep version
qlogic:
modinfo qla2xxx | grep version

xxx是qlogic hba卡的型号

97462-q2k5m98acyg.png

3,查看HBA卡的WWPN

more /sys/class/fc_host/host*/port_name

01241-focqfvjsnc5.png

Ubuntu的虚拟桌面配置也很简单,根据步骤肯定会成功。以下基于horizon7.8 ubuntu18.04.2。

如果需要配置CentOS的桌面,参考这里 Horizon系列之安装配置CentOS7虚拟桌面

一,配置虚拟机模板

1,在线安装open vmtools

apt-get install open-vm-tools-desktop

34485-cu8eqs1ojit.png

2,安装ssh服务端,ubuntu默认自带ssh客户端,服务端需要自己安装

apt-get install openssh-server

06518-fkebqjfmsaa.png

3,卸载自带的vi编辑器,默认自带的编辑器是个精简版,非常难用,用过的都知道

apt-get remove vim-common

24653-zcew0y972pp.png

4,安装完整版本的vi编辑器

apt-get install vim

73277-4quvdxhh0b.png

5,安装必需的依赖包,

apt-get install python python-dbus python-gobject lightdm

00193-r73w4zt6scs.png

在安装过程中选择 lightdm 作为显示管理器

67400-h28aawxzffc.png

6,安装 PowerBroker Identity Services Open (PBISO) 身份验证工具

打开https://github.com/BeyondTrust/pbis-open/releases,找到以linux.x86_64.deb.sh结尾的文件,下载并安装。

wget https://github.com/BeyondTrust/pbis-open/releases/download/9.0.1/pbis-open-9.0.1.525.linux.x86_64.deb.sh
chmod +x pbis-open-9.0.1.525.linux.x86_64.deb.sh
./pbis-open-9.0.1.525.linux.x86_64.deb.sh

88634-8fd9qe00dhn.png

7,加域

[scode type="blue"]下面关键内容仅对打赏用户开放,之前通过微信打赏的用户,微信联系我获取密码,谢谢![/scode]

[ppblock ex="原创不易,打赏后即可获取文章密码!"]

执行下面的命令加域

domainjoin-cli join lzuvdi.com administrator

35669-h8mfex03fbt.png

查看加域结果

60420-io1skur3f0n.png

8,配置域环境

依次执行下面的命令

/opt/pbis/bin/config UserDomainPrefix lzuvdi 
/opt/pbis/bin/config AssumeDefaultDomain true 
/opt/pbis/bin/config LoginShellTemplate /bin/bash 
/opt/pbis/bin/config HomeDirTemplate %H/%U

[scode type="yellow"]备注:lzuvdi 是域名[/scode]

41428-f4tng7a9qpl.png

9,查找用户

id user01
id user02

91263-an4zqzmmagp.png

10,设置域用户权限,user01属于Domain Admins组,user02只属于Domain Users

编辑visudo加入下面一行,使得Domain Admins组有sudo权限

%domain^admins ALL=(ALL) NOPASSWD:ALL

46956-mzikd6yg7e.png

11,测试sudo权限

user01可以正常使用sudo权限,提示user02不在sudo文件中。

57928-sjlqnjzfh9a.png

12,编辑 /etc/pam.d/common-session 文件

session [success=ok default=ignore] pam_lsass.so

重新安装或更新 Horizon Agent for Linux 后,必须重复此步骤

13,编辑 /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf 文件并附加以下行

allow-guest=false
greeter-show-manual-login=true

75153-dcdd6e4vw2o.png

14,上传Linux系统的horizon agent解压并安装,然后重启

./install_viewagent.sh -A yes

59625-qdnr46trgq.png

15,测试域用户登录桌面

85906-mwi8c16ce3k.png

37491-q5wh82zjpbe.png

16,编辑/etc/vmware/viewagent-custom.conf文件

去除SSODesktopType=UseGnomeUbuntu前面的#

66714-959t1ax5a9m.png

17,清理之前登录测试在/home/%D/文件夹下自动创建的用户文件夹,以及horizon agent程序和pbis程序,删除在/var/lib/AccountsService/users/ 下生成的域用户文件

18,创建linux版本的客户机自定义规范,然后克隆ubuntu为模板

二,创建桌面池

选择自动完整桌面池。创建过程选择第18步创建好的客户机规范。

三,测试桌面

1,web登录

99388-5sdh65sjpq5.png

86898-oqxknuuobl.png

2,客户端登录

30056-al3iels12us.png

88246-mvpdve9u6dp.png

[/ppblock]

这几天在测试citrix 的虚拟桌面,服务器资源比较充足,所以我把Delivery Controller 和StoreFront分开建立,并建立了两个,等建立完计算机目录和交付组,登录商店地址,提示如下:

75985-po4ev7fvnfa.png

从头到尾检查一遍配置,没有任何问题,域管理用户我都给了必要的权限,VDA虚拟机也已经是注册状态,并且摘要提示可用,但receiver界面就是提示无桌面。不服输的我把VDA虚拟机又重新安装一遍,重新建立其它模式的单用户单台独立虚拟机的计算机目录,然后再次建立交付组,再次登录,还是没有桌面。我依然不放弃,百度一下,论坛的大神都是让把Delivery Controller、StoreFront安装在一起,我测试了一下,果然可以。然后我重头到尾梳理一遍配置,有一个地方引起了我的注意。

默认的传输类型为HTTPS 端口为443

66355-i5k91i6olyd.png

此时想到,Delivery Controller和StoreFront都没有给安装证书,通过https 互相通信的话,肯定是不授信的。那么就给它个证书

给StoreFront和Delivery Controller申请证书。

1,打开IIS管理器,点击http://localhost,双击进入服务器证书

84217-4bsbie7o7lx.png

2,生成密钥文件

点击右上角的创建证书申请

78565-gw59cnjouo.png

点击下一步,我这里选择2048,因为我的根证书是2048位。

51044-kpr3rizku9e.png

填写名称

80643-48q0o20j4g8.png

3,在线申请证书

打开证书颁发WEB服务界面,点击申请证书

50078-643uxrqcrqc.png

点击高级证书申请

57784-4tqf30kct6d.png

出现以下界面

26867-hyagmwrbz2v.png

打开第1步生成的密钥文件,全选复制

73308-qul51d85fsi.png

然后粘贴,证书模板选择WEB服务器

43486-96pw20656g.png

点击提交,提示颁发成功,选择Base 64 编码,然后点击下载证书

4,下载根证书

重新打开证书颁发WEB服务界面,点击 下载 CA 证书、证书链或 CRL

30019-66uumzpgxp7.png

选择Base 64,然后点击下载CA证书

04262-qc2cnakktcn.png

5,集成证书

打开IIS管理器,点击http://localhost,双击进入服务器证书,点击完成证书申请

78148-ny4d1fasfbp.png

选择申请好的证书,填写好记名称,存储为个人,单击确定。

00465-meifpcfp7ed.png

6,绑定证书

在IIS管理器界面,打开默认web site,点击右上角绑定,然后点击添加,类型选择https,SSL证书选择上一步集成的证书,点击确定。

85714-c0etuqrfv0r.png

然后重启web 服务。

63821-u3xtcvfxxn.png

在Delivery Controller和StoreFront服务器上重复上述步骤,依次绑定证书,

7,安装根证书

分别在Delivery Controller和StoreFront服务器上安装根证书,双击根证书,点击安装证书,选择本地计算机

37691-5gben9rbkp9.png

选择受信任的根证书颁发机构

75717-7qe193ukigk.png

点击下一步,完成,提示导入成功

46111-64p02qfmgho.png

8,测试证书

浏览器中小锁图标是正常的状态,并且证书可信。

30752-fpztfvt6ita.png

9,重新打开citrix receiver界面

15083-k6iee058exk.png

99237-o4o8qxepe08.png

48593-hrq39olvh9.png

一个VDI项目中,客户要求使用Linux系统。Windows的桌面,一路点鼠标下一步,没有什么难度,而Linux,搜遍全网,没有一篇正经文档,当然与我搜索的姿势也有关,参考VMware官方文档,如同嚼蜡。做完Linux桌面,其实发现并没有想象中的那么复杂,只不过步骤繁多,需要耐心。

如果需要做Ubuntu的桌面,参考这里 Horizon系列之安装配置Ubuntu18虚拟桌面

配置linux桌面,最重要的则是加域,horzion支持以下几种方式

1,OpenLDAP 服务器直通身份验证
2,针对 Microsoft Active Directory 的系统安全服务守护进程 (System Security Services Daemon, SSSD)LDAP 身份验证
3,加入 Winbind 域
4,PowerBroker Identity Services Open (PBISO) 身份验证

此文基于winbind加域,horizon 7.8,CentOS 7.6。

一,配置虚拟机模板

1,禁用ipv6,编辑文件/etc/sysctl.conf,添加下面的行:

net.ipv6.conf.all.disable_ipv6 =1
net.ipv6.conf.default.disable_ipv6 =1

保存并退出文件。
执行下面的命令来使设置生效。

sysctl -p

82041-ho7l7k4k07.png

2,禁用virbr0,

ifconfig virbr0 down
brctl delbr virbr0
systemctl disable libvirtd

12887-hce6944p2l5.png

3,禁用NMtool

systemctl stop NetworkManager
systemctl disable NetworkManager

54817-9jwos2cnjad.png

4,更改默认搜索域和DNS

在网卡配置文件加入

DNS1=192.168.80.100
DNS2=192.168.80.200
DOMAIN=lzuvdi.com

重启网络服务

28480-0pxxkr62apwb.png

5,配置yum,安装 winbind、samba 和 Kerberos 软件包,并把smb和winbind 加入开机自启

yum install -y samba samba-winbind krb5-workstation samba-winbind-clients authconfig-gtk
systemctl enable smb
systemctl enable winbind

6,图形界面加域,

authconfig-gtk

70178-fwyrgr15798.png

User Account Database:Winbind
Winbind Domain:LZUVDI
Security Model:ads
Winbind ADS Realm:LZUVDI.COM
Winbind Domain Controllers:ad1.lzuvdi.com,ad2.lzuvdi.com
Template Shell:/bin/bash

Advanced Options 勾选Create home directories on the first login

62628-xw2wzu1m6v7.png

Identiity Authentication 中点击 Join Domain

55867-mz0wnatwnpi.png

选择Save,输入域管理员密码加域,然后点击Apply,重启虚拟机系统。

7,查看加域信息

在域控中打开用户管理器,vdi虚拟机已加入域控

61730-sskvkydw0gh.png

虚拟机上查看域信息

net ads info

04329-82cpl6tih0u.png

新建用户

04553-g9ybtflxoxj.png

查找用户

id user01
id user02

08447-wax93hi8bqa.png

两个账号确实存在,虚拟机成功加域,为什么查找不到用户,换个方式

id user01@lzuvdi
id user02@lzuvdi

67439-puv4jukr2p.png

知道为什么吗?

[scode type="blue"]下面关键内容仅对打赏用户开放,之前通过微信打赏的用户,微信联系我获取密码,谢谢![/scode]

服务器时间同步是一个容易被忽视的问题,我在做虚拟化的时候,一直拿域控做NTP服务器,ESXI加域,主机自动同步时间。在同一环境,部署有些设备需要ntp,填写域控IP,也会同步域控的时间。这样,保证了域成员和域控的时间一致,那么如何保证域成员和Internet的时间一致呢,这时候就要让域控同步外部时间了。关于NTP,一些细分概念相当专业,因个人精力能力有限,不做探究。

ntp源服务器,网上粘来复去的各种域名和IP非常之多,包括国家级和各个高校的NTP服务器,但是能用的没有几个,提供ntp对网络压力和服务器压力非常之大,成千上万的ntp客户端时不时的要和ntp服务器通信一下。我自己也测试了很多ntp服务器。最后觉得,还是微软提供的靠谱。另外,阿里云也提供了外网的ntp服务器,目前来看,还算靠谱,下面配置基于域控可以访问外网的情况。

配置

1,指定域控的外部时间源并同步

w32tm /config /manualpeerlist:"time.windows.com ntp1.aliyun.com" /syncfromflags:manual /reliable:yes /update
net stop w32time
net start w32time
w32tm /resync
w32tm /query /status

至此,域控已经可以同步外网时间了,并且默认自动同步。如果想配置域成员同步策略,在成员所在OU下配置GPO即可。

35125-hekutlqr0t.png

/manualpeerlist表示外部时间源服务器列表,多个服务器之间可用空格分隔
/syncfromflags:manual表示与指定的外部时间源服务器列表中的服务器进行同步
/reliable:yes设置此计算机是一个可靠的时间源。此设置只对域控制器有意义。
/update向时间服务发出配置已更改的通知,使更改生效

域内的客户端想要同主域时间同步,执行下面的命令即可。一般情况下,都会自动同步,无需干预,除非用GPO做了限制。

命令:w32tm /resync /rediscover

2、显示本地时间与目的时间的时间差

w32tm /stripchart /computer:ntp1.aliyun.com /samples:30 /dataonly

3、显示目前服务器指定的外部时间源

w32tm /query /source

目前可用的NTP服务器

time.windows.com
ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com

一、Serverless是啥

自从互联网兴起以来,Server就成了网络的核心部件。所以围绕Server的生意圈,也发展得如火如荼。

从最早的电信托管,到虚拟机,到现在的Serverless,形成了几大阵容:

1、IaaS(基础设施即服务:Infrastructure as a Service)
2、PaaS(平台即服务:Platform as a Service)
3、SaaS(软件即服务:Software as a Service)

IaaS是包硬不包软,面对集成商,PaaS是包硬包软不包工,面对开发者,SaaS是全包,面对消费者。

52406-ymk9ax7o2c.png

三大阵营都在不断演进中,互相取长补短,甚至模糊了彼此的界限。

PaaS最新的发展就是:

1、BaaS(后端即服务:Backend as a Service)
2、Faas(函数即服务:Functions as a Service)

这两种架构被称为Severless。

BaaS与FaaS这两种架构被称为Severless,并非对开发者而言,是对服务商而言,没有一直运行的定制服务存在,不占用服务商的计算资源。同共享单车有些类似,是计算机分时租赁方式,按次按时计价。

BaaS并不存放客户代码,只提供通用的逻辑,产品的逻辑都需要在富客户端完成。这些通用的逻辑为所有客户共享,因而不浪费服务商的计算资源,也就可以做到按API调用次数计算费用。

以前叫我们把二层的富客户端都改成三层瘦客户端,现在搞个共享数据库,又叫我们改成富客户端。横竖赚钱。

18576-sv5c1w98bh.png

而FaaS存放客户代码,当访问时,调入相关资源,开始运行,运行完成后,卸载所有开销。
嘶~~~,听起来耳熟。靠,这不就是PHP吗?!

二、Serverless凭啥

看来BaaS和FaaS都是新瓶装旧酒,那么Serverless凭啥流行,又是不是未来?

Facebook 于2013年花费了 8500 万美元收购了主流的BaaS平台 Parse 。由于 Parse 一直以来未能为 Facebook 提供预期的营收,Facebook 决定一年后将其正式关闭,并将其代码开源。Facebook这不差钱的行为,直接为整个行业蒙上了阴影。可以说直接逼死了某些跟风者。

搭个共享数据库赚钱的想法基本破灭后,行业都纷纷压宝FaaS。那么FaaS的前景如何?

虽然FaaS是BaaS的“升级版”,并且与流行的微服务架构相吻合。但是无法改变它有强制所有程序按PHP方式运行这样一个可怕的设定。而这个无奈的设定所解决的是导致先行者AppEngine举步维艰的病根,那就是大量进程占用服务商过多的资源而不怎么赚钱。所以FaaS这个扭曲版AppEngine对于服务商来说是一剂良药,但是未必会是行业的未来。

这些年随着Docker平台的发展,启停一个容器的成本已经接近于启停一个进程。将AppEngine平台上的侦听进程都去掉,用一个统一的WebServer来侦听路由,当访问到来时,启动容器,运行,停止容器。这和PHP的做法一模一样,不过是把PHP.exe换成了Docker容器罢了。同一个思路,换一个环境,马上从落后变成了先进。可以你想像,FaaS是降低成本的利器,也一定会占有一部分低端市场。

但是,PHP也没有像FaaS一样强制要求所有服务达到函数这个级别,一步到位的确有点匪夷所思。函数也非FaaS最好的包装形式,不如像PHP直接对应到一个文件上。在我看来,现有FaaS平台的行为模式,只适合推广PHP,能够与PHP生态很好地对接,而其它语言则有不可调和的矛盾。

看了一下开源框架Fission的源码,想出一个兼容其它语言的方案,以Python语言为例。

要求Flask程序实现2个接口,原有的程序不加任何修改即可在FaaS框架下运行了,/register接口载入所有Route,并返回所有绑定规则,FaaS框架只需要把Route表合并就可以一次性创建所有Route。不必要一条一条调用fission function create与fission route add了。Http 请求来时调用/specialize接口,根据endpoint(即函数名)载入代码,实现FaaS功能。把框架接口开放给程序,能够实现最大的兼容现有框架,如果不放心,可以调用/specialize?endpoint=echo&echo=hello,来验证程序是否支持FaaS平台即可。

rom flask import Flask, request
app = Flask(__name__)
userfunc = None
@app.route('/register', methods=['POST'])
def register():
# 引入所有Routes,并返回所有Rules
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)   
return jsonify(app.url_map._rules_by_endpoint)
@app.route('/specialize', methods=['POST'])
def load():
# 特化载入,只载入单个endpoint
body = request.get_json()
name = body['endpoint']
global userfunc
userfunc = imp.load_source(name)
return ""

三、Serverless有啥

Serverless平台一般分为如下三类:

  1. 公有云Severless平台:

A. AWS Lambda、B. Microsoft Azure Functions、C. Google Cloud Functions、D. Webtask、E. Syncano

  1. 私有云Severless框架:

A. Fission (Kubernetes)、B. Funktion (Kubernetes)、C. Kubeless (Kubernetes)、D. Gestalt (DC/OS)、E. IBM OpenWhisk (Docker)、F. Iron Functions (Docker,Swarm, Kubernetes)

3.Serverless平台的包装框架:

A. Serverless(Node,大多数平台)、B. Apex(Go,AWS)C. Zappa(Python,AWS)、D. Chalice(Python,AWS)E. Claudia.js(Node,AWS)F. Gordon (Python,AWS)

四、Serverless干啥

1、AWS Lambda的包装框架Zappa,可以使用Flask,Django等框架。

功能看下图可知:

569097-20171201153431789-1840570181.gif

2、Fission是一个Serverless开源框架。可以看看它都干了啥。

Fission是基于Kubernetes的,而Kubernetes是基于Docker的容器集群管理系统。
Kubernetes的内容太丰富,简单说来,实体对象有若干节点(Node)包含若干Pod,Pod又包含若干容器(Container),通过Pod上的标签(Label)组合成服务(Service)。

45635-c4l7b305c5l.png

Master包含如下组件:

1,apiserver:作为kubernetes系统的入口,封装了核心对象的增删改查操作。它维护的REST对象将持久化到etcd。

2,etcd:分布式强一致性的key/value存储

3,scheduler:负责集群的资源调度,为新建的pod分配机器。

4,controller-manager:负责执行各种控制器,目前有两类:

a,endpoint-controller:定期关联service和pod(关联信息由endpoint对象维护),保证service到pod的映射总是最新的。

b,replication-controller:定期关联replicationController和pod,保证replicationController定义的复制数量与实际运行pod的数量总是一致的。

Slave Node(称为Minion)包含如下组件:

1,kubelet:负责管控docker容器,如启动/停止、监控运行状态等。它会定期从etcd获取分配到本机的pod,并根据pod信息启动或停止相应的容器。同时,它也会接收apiserver的HTTP请求,汇报pod的运行状态。

2,proxy:负责为pod提供代理。它会定期从etcd获取所有的service,并根据service信息创建代理。当某个客户pod要访问其他pod时,访问请求会经过本机proxy做转发。

3,docker:docker容器引擎

Fission简单说来,就是一个Web应用,Go语言编写,使用gorilla框架。不过它的模板引擎替换成了Kubernetes中的Service。使用k8s.io/client-go/kubernetes接口来操控(k8s就是Kubernetes)。

18296-k250bpd9g4.png

参考文档:

《采用Serverless架构》:http://cloud.51cto.com/art/201703/534748.htm

《Kubernetes初探》:https://blog.csdn.net/zhangjun2915/article/details/40598151

《十分钟带你理解Kubernetes核心概念》http://www.dockone.io/article/932

《Kubernetes权威指南》

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢

LACP 模式链路聚合简介

以太网链路聚合是指将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。链路聚合分为手工模式和LACP模式。

LACP模式需要有链路聚合控制协议LACP的参与。当需要在两个直连设备间提供一个较大的链路带宽而设备支持LACP协议时,建议使用LACP模式。LACP模式不仅可以实现增加带宽、提高靠性、负载分担的目的,而且可以提高Eth-Trunk的容错性、提供备份功能。

LACP模式下,部分链路是活动链路,所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在非活动链路中选择一条链路作为活动链路,参与数据转发的链路数目不变。

配置注意事项
1,一个Eth-Trunk接口中的成员接口必须是以太网类型和速率相同的接口。
2,Eth-Trunk链路两端相连的物理接口的数量、速率、双工方式、流控配置必须一致。
3,如果本端设备接口加入了Eth-Trunk,与该接口直连的对端接口也必须加入Eth-Trunk,两端才能正常通信。
4,两台设备对接时需要保证两端设备上链路聚合的模式一致。
5,本举例适用于S系列交换机所有产品的所有版本。

如图所示,SwitchA和SwitchB通过以太链路分别都连接VLAN10和VLAN20的网络,且SwitchA和SwitchB之间有较大的数据流量。用户希望SwitchA和SwitchB之间能够提供较大的链路带宽来使相同VLAN间互相通信。在两台Switch设备上配置LACP模式链路聚合组,提高两设备之间的带宽与可靠性,具体要求如下:

99651-6oyiuvvg0pk.png

1,两条活动链路具有负载分担的能力。
2,两设备间的链路具有1条冗余备份链路,当活动链路出现故障时,备份链路替代故障链路,保持数据传输的可靠性。
3,同VLAN间可以相互通信。

配置思路
采用如下的思路配置LACP模式链路聚合:

  1. 创建Eth-Trunk,配置Eth-Trunk为LACP模式,实现链路聚合功能。
  2. 将成员接口加入Eth-Trunk。
  3. 配置系统优先级,确定主动端,按照主动端设备的接口选择活动接口。
  4. 配置活动接口上限阈值,实现保证带宽的情况下提高网络的可靠性。
  5. 配置接口优先级,确定活动链路接口,优先级高的接口将被选作活动接口。
  6. 创建VLAN并将接口加入VLAN。

操作步骤

步骤1 在SwitchA上创建Eth-Trunk1并配置为LACP模式。SwitchB的配置与SwitchA类似,不再赘述

<HUAWEI> system-view
[HUAWEI] sysname SwitchA
[SwitchA] interface eth-trunk 1   //创建ID为1的Eth-Trunk接口
[SwitchA-Eth-Trunk1] mode lacp   //配置链路聚合模式为LACP模式
[SwitchA-Eth-Trunk1] quit

步骤2 配置SwitchA上的成员接口加入Eth-Trunk1。SwitchB的配置与SwitchA类似,不再赘述

[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] eth-trunk 1   //将GE1/0/1接口加入Eth-Trunk1中
[SwitchA-GigabitEthernet1/0/1] quit
[SwitchA] interface gigabitethernet 1/0/2
[SwitchA-GigabitEthernet1/0/2] eth-trunk 1   //将GE1/0/2接口加入Eth-Trunk1中
[SwitchA-GigabitEthernet1/0/2] quit
[SwitchA] interface gigabitethernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] eth-trunk 1   //将GE1/0/3接口加入Eth-Trunk1中
[SwitchA-GigabitEthernet1/0/3] quit

步骤3 在SwitchA上配置系统优先级为100,使其成为LACP主动端

[SwitchA] lacp priority 100   //系统LACP优先级缺省为32768,修改SwitchA的优先级大于SwitchB的优先级,作为主动端

步骤4 在SwitchA上配置活动接口上限阈值为2

[SwitchA] interface eth-trunk 1
[SwitchA-Eth-Trunk1] max active-linknumber 2   //链路聚合组活动接口数的上限阈值缺省是8,修改活动接口数的上限阈值为2
[SwitchA-Eth-Trunk1] quit

步骤5 在SwitchA上配置接口优先级确定活动链路

[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] lacp priority 100   //接口LACP优先级缺省为32768,修改GE1/0/1接口的LACP优先级为100,作为活动接口
[SwitchA-GigabitEthernet1/0/1] quit
[SwitchA] interface gigabitethernet 1/0/2
[SwitchA-GigabitEthernet1/0/2] lacp priority 100   //接口LACP优先级缺省为32768,修改GE1/0/2接口的LACP优先级为100,作为活动接口
[SwitchA-GigabitEthernet1/0/2] quit

步骤6 创建VLAN并将接口加入VLAN。

创建VLAN10和VLAN20并分别加入接口。SwitchB的配置与SwitchA类似,不再赘述。

[SwitchA] vlan batch 10 20
[SwitchA] interface gigabitethernet 1/0/4
[SwitchA-GigabitEthernet1/0/4] port link-type trunk   //设置接口链路类型为trunk,接口缺省链路类型不是trunk口
[SwitchA-GigabitEthernet1/0/4] port trunk allow-pass vlan 10
[SwitchA-GigabitEthernet1/0/4] quit
[SwitchA] interface gigabitethernet 1/0/5
[SwitchA-GigabitEthernet1/0/5] port link-type trunk   //设置接口链路类型为trunk,接口缺省链路类型不是trunk口
[SwitchA-GigabitEthernet1/0/5] port trunk allow-pass vlan 20
[SwitchA-GigabitEthernet1/0/5] quit

配置Eth-Trunk1接口允许VLAN10和VLAN20通过。SwitchB的配置与SwitchA类似,不再赘述。

[SwitchA] interface eth-trunk 1
[SwitchA-Eth-Trunk1] port link-type trunk   //设置接口链路类型为trunk,接口缺省链路类型不是trunk口
[SwitchA-Eth-Trunk1] port trunk allow-pass vlan 10 20
[SwitchA-Eth-Trunk1] quit

步骤7 验证配置结果

查看各Switch设备的Eth-Trunk信息,查看链路是否协商成功。

[SwitchA] display eth-trunk 1
Eth-Trunk1's state information is:
Local:                                                                          
LAG ID: 1                       WorkingMode: LACP                             
Preempt Delay: Disabled         Hash arithmetic: According to SIP-XOR-DIP       
System Priority: 100            System ID: 00e0-fca8-0417
Least Active-linknumber: 1      Max Active-linknumber: 2                        
Operate status: up              Number Of Up Port In Trunk: 2
--------------------------------------------------------------------------------
ActorPortName                    Status     PortType PortPri   PortNo PortKey   PortState  Weight
GigabitEthernet1/0/1             Selected  1GE       100      6145    2865      11111100     1
GigabitEthernet1/0/2             Selected  1GE       100      6146    2865      11111100     1
GigabitEthernet1/0/3             Unselect  1GE       32768    6147    2865      11100000     1
Partner:
--------------------------------------------------------------------------------
ActorPortName                     SysPri    SystemID    PortPri PortNo PortKey   PortState
GigabitEthernet1/0/1              32768  00e0-fca6-7f85  32768     6145   2609      11111100
GigabitEthernet1/0/2              32768  00e0-fca6-7f85  32768     6146   2609      11111100
GigabitEthernet1/0/3              32768  00e0-fca6-7f85  32768     6147   2609      11110000
[SwitchB] display eth-trunk 1
Eth-Trunk1's state information is:
Local:
LAG ID: 1                      WorkingMode: LACP
Preempt Delay: Disabled        Hash arithmetic: According to SIP-XOR-DIP
System Priority: 32768         System ID: 00e0-fca6-7f85
Least Active-linknumber: 1     Max Active-linknumber: 8
Operate status: up             Number Of Up Port In Trunk: 2
--------------------------------------------------------------------------------
ActorPortName                   Status     PortType    PortPri   PortNo  PortKey   PortState  
Weight
GigabitEthernet1/0/1            Selected  1GE        32768      6145    2609      11111100     
1
GigabitEthernet1/0/2            Selected  1GE        32768      6146    2609      11111100     
1
GigabitEthernet1/0/3            Unselect  1GE        32768      6147    2609      11100000     
1
Partner:
--------------------------------------------------------------------------------
ActorPortName                     SysPri    SystemID     PortPri  PortNo  PortKey   PortState
GigabitEthernet1/0/1              100    00e0-fca8-0417  100      6145     2865      11111100
GigabitEthernet1/0/2              100    00e0-fca8-0417  100      6146     2865      11111100
GigabitEthernet1/0/3              100    00e0-fca8-0417  32768    6147     2865      11110000

通过以上显示信息可以看到,SwitchA的系统优先级为100,高于SwitchB的系统优先级。Eth-Trunk的成员接口中GigabitEthernet1/0/1、GigabitEthernet1/0/2成为活动接口,
处于“Selected”状态,接口GigabitEthernet1/0/3处于“Unselect”状态,同时实现M条链路的负载分担和N条链路的冗余备份功能。
----结束

配置文件

SwitchA的配置文件

#
sysname SwitchA
#
vlan batch 10 20
#
lacp priority 100
#
interface Eth-Trunk1
 port link-type trunk
 port trunk allow-pass vlan 10 20
 mode lacp
 max active-linknumber 2
#
interface GigabitEthernet1/0/1
 eth-trunk 1
 lacp priority 100
#
interface GigabitEthernet1/0/2
 eth-trunk 1
 lacp priority 100
#
interface GigabitEthernet1/0/3
 eth-trunk 1
#
interface GigabitEthernet1/0/4
 port link-type trunk 
 port trunk allow-pass vlan 10
#
interface GigabitEthernet1/0/5
 port link-type trunk 
 port trunk allow-pass vlan 20
#
return

SwitchB的配置文件

#
sysname SwitchB
#
vlan batch 10 20
#
interface Eth-Trunk1
 port link-type trunk
 port trunk allow-pass vlan 10 20
 mode lacp
#
interface GigabitEthernet1/0/1
 eth-trunk 1
#
interface GigabitEthernet1/0/2
 eth-trunk 1
#
interface GigabitEthernet1/0/3
 eth-trunk 1
#
interface GigabitEthernet1/0/4
 port link-type trunk 
 port trunk allow-pass vlan 10
#
interface GigabitEthernet1/0/5
 port link-type trunk 
 port trunk allow-pass vlan 20
#
return

本章节分两部分内容:概念,配置
快照和克隆是NAS的神助攻。对于一些开发测试的应用场景,显得尤为重要。

概念

快照拷贝

快照拷贝是卷的只读时间点映像。该映像占用的存储空间最小,并且产生的性能开销可以忽略不计,因为它仅记录自创建上一个快照拷贝以来对文件的更改。快照拷贝的效率归功于 ONTAP的核心存储虚拟化技术,即其Write Anywhere File Layout(WAFL)。和数据库一样,WAFL 使用元数据指向磁盘上的实际数据块。但是与数据库不同的是,WAFL 不会覆盖现有块。它将更新后的数据写入新块,并更改元数据。这是因为在创建快照拷贝时,ONTAP 引用元数据,而不是拷贝数据块,所以快照拷贝才如此高效。这样在查找要拷贝的块时,就消除了其他系统会经受的“寻道时间 ”,从而也消除了创建拷贝本身的成本。快照技术高度可扩展。无论卷有多大,或存储系统上有多少操作,都可以在数秒内创建快照副本。创建副本后,数据对象的变化将在当前版本的对象的内容更新中反映出来,就像副本不存在一样。同时,数据的快照副本仍保持稳定状态。快照副本不会产生任何性能开销。所有快照副本都可以作为数据的在线只读版本进行访问。

69538-077ktq1at8rs.png

可以使用快照拷贝来恢复单个文件或 LUN,或恢复卷的全部内容。快照拷贝存储在卷上的 .snapshot 目录中(这里只针对NAS卷)。ONTAP 将快照拷贝中的指针信息与磁盘上的数据进行比较,以便重建缺少或损坏的对象,同时无需停机或不会造成大量性能成本。

快照策略

定义了系统创建卷的快照拷贝的方式。该策略指定何时创建快照拷贝、要保留的拷贝数以及如何针对复制标记它们。例如,系统可能会在每天上午 12:10 创建一个快照拷贝,保留两个最新拷贝,将其命名为 “daily”(并加上时间戳),然后将其的复制标记为 “daily”。

FlexClone

FlexClone 卷是父级 FlexVol 卷的可写时间点副本。FlexClone 卷可高效利用空间,因为它们与用于存储常用数据的父级 FlexVol 卷共享数据块。只有在您向父级或克隆卷中写入新数据时,被写入新数据的实体才开始占用额外的存储空间。客户端或主机可以对 FlexClone 卷中的文件或 LUN 执行各种操作,就好像它们可以对标准文件或 LUN 执行操作一样。读取/写入 FlexClone 卷可以从父级卷中分离开来,(例如)以将克隆移至不同聚合。从其父级卷中分离读取/写入 FlexClone 卷需要复制共享块,并取消 FlexClone 卷当前采用的任何空间优化。分离之后,两个 FlexClone 卷和父级卷需要完整的空间分配,这由它们的卷保证(volume guarantee)确定。FlexClone 卷将变为正常的 FlexVol 卷。

使用 FlexClone 技术来代替传统副本,可带来以下显著优势:

1,快速。创建传统副本需要花费数分钟或数小时的时间。使用 FlexClone 技术,即使是最大的卷,在几秒钟内也可以完成克隆。
节省空间。克隆时元数据会占用少量的空间,以后仅当更改或添加数据时,才占用额外的空间。

2,降低成本。FlexClone 技术可以将开发/测试或虚拟环境所需的存储减少 50% 甚至更多。
提高开发/测试的质量。可以根据需要为完整生产数据集创建任意数量的副本。如果测试损坏了数据,几秒钟内即可重新开始。开发人员和测试工程师等待访问数据集的时间减少了,真正从事生产性工作的时间增加了。

3,支持您更加充分地利用灾难恢复环境。使用 FlexClone,您可以克隆并完整地测试灾难恢复流程,或使用灾难恢复环境来进行开发/测试,而不会干扰正在进行的复制。您只需克隆灾难恢复副本,然后在克隆副本上进行开发/测试即可。

4,加快虚拟机和虚拟桌面配置。几分钟内即可部署数十台或数百台新 VM,所用存储只有少量的增加。

30305-qowm7vd93l.png

说明:块存储可以使用快照和flexclone卷功能,文件存储可以使用快照和flexclone卷、flexclone文件功能。

配置

一,快照

快照配置以CIFS和NFS为主,ISCSI快照只能在存储端操作,操作系统可以开启卷影副本模式,大家自行测试。

CIFS_DATA快照

1,在客户端cifs_data目录下,新建一个文件,blog1.txt,并写入一组随机的数据。

97000-c3s51j9cxgp.png

导航到存储--卷,在SVM下拉列表选择CIFS_SVM,右键单击 cifs_data,在菜单中选择管理快照--创建,输入快照名称snapshot_blog1

32643-bf6ddh09eek.png

重复上述步骤,继续建立blog2.txt、snapshot_blog2快照和blog3.txt、snapshot_blog3快照,一个文件对应一个快照,总共3个文件,三个快照。

三个快照

31992-nlxnqymqkak.png

三个文件

63816-97i2s7vh7wt.png

打开cifs_data目录的属性,点击以前的版本,出现三个不同时间点的版本,这就是我们创建的快照

51512-o67di4wmvt.png

2,查看快照

双击打开时间最早的一个文件版本,在新打开的窗口出现blog1.txt,这是我们第一次创建的快照文件。

96902-jjhekujf9ih.png

打开第二个版本

96379-ab8nb1oihi.png

第三个版本

53896-z34jhmzspjp.png

3,还原快照

模拟对数据进行破坏,需要还原到之前的状态。

删除blog1.txt的内容,blog1.txt大小为0KB,内容为空

55930-uvs6zzlpov.png

现在要还原到之前状态,如果选择还原blog2快照,就会同时影响blog1和blog2,如果还原blog3快照,则所有的数据都会被还原。而我们只需要恢复blog1的数据,所以还原blog1的快照即可。
选中时间点最早的一个快照,单击还原

10628-usohmnlwilo.png

提示还原成功

63917-ilax2bhnjq.png

blog1.txt还原成功

45078-so6p9rkgj7q.png

在存储管理界面,导航到存储--卷,在SVM下拉列表选择CIFS_SVM,右键单击 cifs_data,在菜单中选择管理快照--还原,选择blog2的快照,单击还原

80794-8ra8wil85kx.png

弹出对话框提示 创建 Snapshot 副本后所做的所有更改都将丢失,选择还原。还原之后,cifs_data卷的快照只剩下blog1、blog2。也就是还原到blog2 的快照以后,blog2快照时间点之后所有的数据都丢失,属于卷级别的还原。
cifs_data目录内只有两个文件

14143-qank4exxyh.png

结论:在操作系统内还原版本,只还原当前时间节点的文件。在存储系统内还原快照,会还原到卷级快照状态,生产环境还原时一定要注意。

NFS_DATA快照

1,在客户端NFS目录下,新建一个文件,blog1,并写入一组随机的数据

[root@web /]# cd /NFS
[root@web NFS]# touch blog1
[root@web NFS]# vi blog1
[root@web NFS]# cat blog1
https://image.mr-mao.cn
[root@web NFS]#

36627-w57mwjzj1c.png

导航到存储--卷,在SVM下拉列表选择NFS_SVM,右键单击 NFS_DATA,在菜单中选择管理快照--创建,输入快照名称snapshot_blog1

65989-vmt4n91kje.png

重复上述步骤,继续建立blog2、snapshot_blog2快照和blog3、snapshot_blog3快照,一个文件对应一个快照,总共3个文件,三个快照。

三个快照

94713-18msdm2i14s.png

三个文件

22007-oii6yp8r2u.png

2,查看快照
NFS的快照命令直接查看 ls -a

36890-w7dbmnlodcn.png

[root@web NFS]# cd .snapshot/
[root@web .snapshot]# ls
snapshot_blog1  snapshot_blog2  snapshot_blog3
[root@web .snapshot]#

05961-gqb2jqdjsle.png

3,还原快照

在操作系统下,还原NFS的快照非常简单,想还原哪个文件,进入到相应的快照文件夹下直接复制文件到目标目录即可
我删除/NFS 目录下所有的文件,即模拟数据被误删

[root@web ~]# cd /NFS
[root@web NFS]# ls
blog1  blog2  blog3
[root@web NFS]# rm -fr *
[root@web NFS]# ls
[root@web NFS]# ls -a
.  ..  .snapshot
[root@web NFS]#

71514-4d86f49mmws.png

进入快照文件夹,因为误删了所有的数据,所以要选择最近快照来还原。

[root@web NFS]# ls -a
.  ..  .snapshot
[root@web NFS]# cd .snapshot/
[root@web .snapshot]# ls
snapshot_blog1  snapshot_blog2  snapshot_blog3
[root@web .snapshot]#
[root@web .snapshot]# cd snapshot_blog3
[root@web snapshot_blog3]# ls
blog1  blog2  blog3
[root@web snapshot_blog3]# cp * /NFS
[root@web snapshot_blog3]# cd /NFS
[root@web NFS]# ls
blog1  blog2  blog3
[root@web NFS]#

23059-8jljjoyaj93.png

接下来测试存储界面还原快照,在存储管理界面,导航到存储--卷,在SVM下拉列表选择NFS_SVM,右键单击 NFS_DATA,在菜单中选择管理快照--还原,选择blog2的快照,单击还原

05735-6s54zuu9e16.png

提示 创建 Snapshot 副本后所做的所有更改都将丢失。 也就是说恢复到快照2之后,快照3的数据会丢

40445-3j1ip53cyzq.png

操作系统下查看文件

[root@web ~]# cd /NFS
[root@web NFS]# ls
blog1  blog2
[root@web NFS]#

34351-czrjk25f3jw.png

结论:在操作系统内还原文件,只需拷贝需要恢复的文件,非常方便。在存储系统内还原快照,会还原到卷级快照状态,生产环境还原时一定要注意。

快照策略

上述快照都是手动创建的,但是生产环境不可能一直手动,所以我们需要定制策略

1,打开 保护--计划,默认自带很多计划,但是不一定适合我们,所以需要自定义,单击创建,填写计划名称,制定适合自己的重复计划时间,我这里配置为每天晚上23点30分重复计划。

55020-8gd0di0s6oi.png

2,打开 保护--Snapshot 策略,默认自带一些策略。单击创建,填写策略名称,点击添加计划,计划名称选择上一步创建好的计划,填写保留快照数,点击创建

68580-wm1n734j5ys.png

3,打开 存储--卷,在SVM下拉列表选择NFS_SVM,右键单击 NFS_DATA,在菜单中选择管理快照--配置设置,勾选 启用计划的 Snapshot副本,在Snapshot 策略中选择上一步创建好的NFS策略。

42751-dkfrf7svd8m.png

至此,快照策略配置完成,其它的卷,根据需求,重复上述步骤即可。

二,FlexClone

因为文章篇幅关系,我这里只配置CIFS的克隆,NFS和ISCSI配置都一样,只是使用方式有差别,大家自行测试。

1,flexclone卷

打开 存储--卷,在SVM下拉列表选择CIFS_SVM,右键单击 cifs_data,在菜单中选择克隆--创建--卷,填写名称,默认勾选 立即创建新的 Snapshot 副本,单击创建

58787-dcc87cd06pr.png

flexclone卷创建成功

26087-9yyvkaptn0s.png

打开 存储--接合路径,在SVM下拉列表选择CIFS_SVM,单击挂载,选择上一步克隆的卷,填写接合名称,单击挂载

84828-x96iqmdp34b.png

打开 存储--共享,在SVM下拉列表选择CIFS_SVM,单击创建共享,点击浏览选择已经挂载的flexclone卷,填写共享名称,单击创建

51652-g087sk0ot74.png

在域成员客户端资源管理器输入 \\cifs ,然后回车

41761-0kxtbe6ua68k.png

进入flexclone目录,有两个文件,这正是我们源卷的两个文件

88150-d6qo6mpo9kc.png

然后删除这两个文件

19138-ac8e1g5jo6t.png

打开源卷cifs_data,两个文件还在

03356-hocqxl3wj5i.png

这个功能对一些开发测试的场景非常有意义。

2,flexclone文件

打开 存储--卷,在SVM下拉列表选择CIFS_SVM,右键单击 cifs_data,在菜单中选择克隆--创建--文件,在窗口中,会列出cifs目录中所有的文件,选择blog2.txt,其它默认即可,单击克隆

30830-0zu06ukpp0y.png

在客户端访问cifs_data目录,出现了flexclone文件,编辑flexclone文件内容,甚至删除这个文件,对源文件无任何影响

38929-6dznq5dfv8d.png

至此,快照和flexclone 功能配置完结,如有问题,可以留言。

链路聚合典型配置

手工模式链路聚合简介
以太网链路聚合是指将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。链路聚合分为手工模式和LACP模式。
手工模式下,Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议LACP的参与。当需要在两个直连设备间提供一个较大的链路带宽而设备又不支持LACP协议时,可以使用手工模式。手工模式可以实现增加带宽、提高可靠性、负载分担的目的。

手工模式下,所有的活动链路都参与数据转发并分担流量。

配置注意事项

1,一个Eth-Trunk接口中的成员接口必须是以太网类型和速率相同的接口。
2,Eth-Trunk链路两端相连的物理接口的数量、速率、双工方式、流控配置必须一致。
3,如果本端设备接口加入了Eth-Trunk,与该接口直连的对端接口也必须加入Eth-Trunk,两端才能正常通信。
4,两台设备对接时需要保证两端设备上链路聚合的模式一致。
5,本举例适用于S系列交换机所有产品的所有版本。

组网需求

如图所示,SwitchA和SwitchB通过以太链路分别都连接VLAN10和VLAN20的网络,且SwitchA和SwitchB之间有较大的数据流量。用户希望SwitchA和SwitchB之间能够提供较大的链路带宽来使相同VLAN间互相通信。同时用户也希望能够提供一定的冗余度,保证数据传输和链路的可靠性。
65163-1alv9vqwdht.png

配置思路

采用如下的思路配置手工模式链路聚合:

  1. 创建Eth-Trunk接口并加入成员接口,实现增加链路带宽。
  2. 创建VLAN并将接口加入VLAN。
  3. 配置负载分担方式,实现流量在Eth-Trunk各成员接口间的负载分担,增加可靠性。

操作步骤

步骤1 在SwitchA和SwitchB上创建Eth-Trunk接口并加入成员接口

<HUAWEI> system-view
[HUAWEI] sysname SwitchA
[SwitchA] interface eth-trunk 1   //创建ID为1的Eth-Trunk接口
[SwitchA-Eth-Trunk1] trunkport gigabitethernet 1/0/1 to 1/0/3   //在Eth-Trunk1接口中加入GE1/0/1到GE1/0/3三个成员接口
[SwitchA-Eth-Trunk1] quit
<HUAWEI> system-view
[HUAWEI] sysname SwitchB
[SwitchB] interface eth-trunk 1   //创建ID为1的Eth-Trunk接口
[SwitchB-Eth-Trunk1] trunkport gigabitethernet 1/0/1 to 1/0/3   //在Eth-Trunk1接口中加入GE1/0/1到GE1/0/3三个成员接口
[SwitchB-Eth-Trunk1] quit

步骤2 创建VLAN并将接口加入VLAN

创建VLAN10和VLAN20并分别加入接口。SwitchB的配置与SwitchA类似,不再赘述。

[SwitchA] vlan batch 10 20
[SwitchA] interface gigabitethernet 1/0/4
[SwitchA-GigabitEthernet1/0/4] port link-type trunk   //设置接口链路类型为trunk,接口缺省链路类型不是trunk口
[SwitchA-GigabitEthernet1/0/4] port trunk allow-pass vlan 10
[SwitchA-GigabitEthernet1/0/4] quit
[SwitchA] interface gigabitethernet 1/0/5
[SwitchA-GigabitEthernet1/0/5] port link-type trunk   //设置接口链路类型为trunk,接口缺省链路类型不是trunk口
[SwitchA-GigabitEthernet1/0/5] port trunk allow-pass vlan 20
[SwitchA-GigabitEthernet1/0/5] quit

配置Eth-Trunk1接口允许VLAN10和VLAN20通过。SwitchB的配置与SwitchA类似,不再赘述。

[SwitchA] interface eth-trunk 1
[SwitchA-Eth-Trunk1] port link-type trunk   //设置接口链路类型为trunk,接口缺省链路类型不是trunk口
[SwitchA-Eth-Trunk1] port trunk allow-pass vlan 10 20
[SwitchA-Eth-Trunk1] quit

步骤3 配置Eth-Trunk1的负载分担方式。SwitchB的配置与SwitchA类似,不再赘述。

[SwitchA] interface eth-trunk 1
[SwitchA-Eth-Trunk1] load-balance src-dst-mac   //配置Eth-Trunk1基于源MAC地址与目的MAC地址进行负载分担
[SwitchA-Eth-Trunk1] quit

步骤4 验证配置结果

在任意视图下执行display eth-trunk 1命令,检查Eth-Trunk是否创建成功,及成员接口
是否正确加入。

[SwitchA] display eth-trunk 1
Eth-Trunk1's state information is: 
WorkingMode: NORMAL           Hash arithmetic: According to SA-XOR-DA
Least Active-linknumber: 1     Max Bandwidth-affected-linknumber: 8
Operate status: up             Number Of Up Port In Trunk: 3 
--------------------------------------------------------------------------------
PortName                           Status       Weight
GigabitEthernet1/0/1               Up           1
GigabitEthernet1/0/2               Up           1
GigabitEthernet1/0/3               Up           1

从以上信息看出Eth-Trunk 1中包含3个成员接口GigabitEthernet1/0/1、GigabitEthernet1/0/2和GigabitEthernet1/0/3,成员接口的状态都为Up。Eth-Trunk 1的“Operate status”为up。
----结束

配置文件

SwitchA的配置文件

#
sysname SwitchA
#
vlan batch 10 20
# 
interface Eth-Trunk1
 port link-type trunk 
 port trunk allow-pass vlan 10 20
 load-balance src-dst-mac
# 
interface GigabitEthernet1/0/1 
 eth-trunk 1
# 
interface GigabitEthernet1/0/2 
 eth-trunk 1
# 
interface GigabitEthernet1/0/3 
 eth-trunk 1
#
interface GigabitEthernet1/0/4 
 port link-type trunk 
 port trunk allow-pass vlan 10
#
interface GigabitEthernet1/0/5 
 port link-type trunk 
 port trunk allow-pass vlan 20
#
return

SwitchB的配置文件

#
sysname SwitchB
#
vlan batch 10 20
# 
interface Eth-Trunk1
 port link-type trunk
 port trunk allow-pass vlan 10 20
 load-balance src-dst-mac
# 
interface GigabitEthernet1/0/1 
 eth-trunk 1
# 
interface GigabitEthernet1/0/2 
 eth-trunk 1
# 
interface GigabitEthernet1/0/3 
 eth-trunk 1
#
interface GigabitEthernet1/0/4 
 port link-type trunk 
 port trunk allow-pass vlan 10
#
interface GigabitEthernet1/0/5 
 port link-type trunk 
 port trunk allow-pass vlan 20
#
return