One minute io hang when Add ISL Trunking License to Brocade Fabric

有一个SAN环境,edge层的交换机需要添加ISL的许可,(CORE层的交换机已经有了ISL许可)。

环境如下:

 在Core层的交换机上switchshow可以看到与另一个Core互联的ISL口如下:

 20  20   id    N8   Online           E-Port  (Trunk port, master is Port 23 )
 21  21   id    N8   Online           E-Port  (Trunk port, master is Port 23 )
 22  22   id    N8   Online           E-Port  (Trunk port, master is Port 23 )
 23  23   id    N8   Online           E-Port  10:00:00:xx:xx:xx:xx:xx "fabric2-core-e07-192168162023" (upstream)(Trunk master)

在Edge层的交换机上switchshow可以看到连接Core层交换机的几个口状态如下:

 20  20   0a0600   id    N8   Online      FC  E-Port  10:00:00:xx:xx:xx:xx:xx "fabric2-core-e08-192168162028" 
 21  21   0a0400   id    N8   Online      FC  E-Port  10:00:00:xx:xx:xx:xx:xx "fabric2-core-e08-192168162028" 
 22  22   0a0200   id    N8   Online      FC  E-Port  10:00:00:xx:xx:xx:xx:xx "fabric2-core-e08-192168162028" 
 23  23   0a0000   id    N8   Online      FC  E-Port  10:00:00:xx:xx:xx:xx:xx "fabric2-core-e08-192168162028" (upstream)

添加license:

首先要到博科的网站上申请许可,申请完后通过licenseadd添加。添加完后会提示使用portdisable portenable 或switchdisable switchenable来生效。

由于只涉及到EDGE与CORE交换机互联的几个口子。所以使用portdisable 20;portenable 20;portdisable 21;portenable 21;portdisable 22;portenable 22;portdisable 23;portenable 23;来激活对应口子的ISL。

激活后查看相关PORT状态:

edge:

 20  20   090600   id    N8   Online      FC  E-Port  10:00:00:xx:xx:xx:xx:xx "fabric2-core-e07-192168162023" (upstream)(Trunk master)  
 21  21   090400   id    N8   Online      FC  E-Port  (Trunk port, master is Port 20 )
 22  22   090200   id    N8   Online      FC  E-Port  (Trunk port, master is Port 20 )
 23  23   090000   id    N8   Online      FC  E-Port  (Trunk port, master is Port 20 )

core与edge连接口:

 16  16   id    N8   Online           E-Port  10:00:00:xx:xx:xx:xx:xx "fabric2-edge-e11-192168162046" (downstream)(Trunk master)  
 17  17   id    N8   Online           E-Port  (Trunk port, master is Port 16 )
 18  18   id    N8   Online           E-Port  (Trunk port, master is Port 16 )
 19  19   id    N8   Online           E-Port  (Trunk port, master is Port 16 )

操作完以后在上层的服务器上看到一些异常输出:

服务器的DMESG输出(与操作时间吻合):

Oct 27 10:32:43 db_192_168_173_62_logdb kernel: qla2xxx 0000:07:00.0: scsi(0:0:1): Abort command issued -- 1 5309a0 2002.

查看PostgreSQL数据库日志,发现有一堆如下日志输出,持续时间约60秒:

2010-10-27 10:31:54.299 CST,"xxxx","xxxx",32212,"192.168.169.33:36466",4cbd13c4.7dd4,28,"INSERT waiting",2010-10-19 11:43:00 CST,9/461231,100827970,LOG,00000,"process 32212 still waiting for ExclusiveLock on extension of relation 22650 of database 22240 after 1000.889 ms",,,,,,"INSERT INTO tbl_download_stat .......................

从数据库日志上看正在等待数据库对象物理存储扩展的操作。根据PRIMARY KEY查看这些记录在数据库中的物理存储位置,发现都是新建BLOCK的操作。

如:select ctid,cmin,cmax,xmin,xmax,* from tbl_download_stat where pk_column='';

..............................

返回结果如:

(364981,1)
(364982,1)
(364983,1)
(364984,1)
(364985,1)
(364986,1)

格式为(block number in the file,tuple id in the block),从结果上看这些操作都是新建BLOCK的操作。

说明对存储的写操作被堵了1分钟左右。否则不会有大量的申请新建BLOCK的操作。

process 32212 still waiting for ExclusiveLock on extension of relation 22650 of database 22240 after 1000.889 ms

deadlock_timeout = 1s这个参数决定等待超过1秒的都会输出到数据库日志.

这里的ExclusiveLock和数据库逻辑层面的锁是两回事,可以使用Dynamic Tracing来跟踪。

【附】

A Fabric License allows you to connect two or more switches to form a fabric.
Trunking allows a frame-level load sharing on two or more ISLs (Inter Switch Links) between two switches.
A Fibre Channel environment usually requires that all frames are received in the same order they were sent. By default, traffic between any two devices uses only one ISL (Inter Switch Link), even if two or more interconnects exist to avoid that a frame gets ahead of one that was sent earlier.
Trunking uses special hardware features within a switch and has some requirements, e.g. only a subset of ports can form a trunking group or the distance of all ISLs within a trunk must be within a certain range.

ISL是帧级别的负载共享机制。但并不是所有的帧都可以用到多端口来共享负载,因为还有接收顺序的关系(可能和源地址有关系)。

时间: 2024-09-22 23:04:05

One minute io hang when Add ISL Trunking License to Brocade Fabric的相关文章

Linux如何避免IO hang

对于DB Server 来说,删除大表来说是很棘手的. 删除大表的话,可以对原有表的.ibd文件建立硬链接.当多个文件名指向同一个Node时,删除任何一个文件名都很快,因为直连的物理文件没有删除只是删除了一个指针而已.当Node引用数为1的时候,删除文件需要把文件相关的所有数据块都删除. 具体参考:http://www.mysqlops.com/2011/05/18/mysql%E5%88%A0%E9%99%A4%E5%A4%A7%E8%A1%A8%E6%9B%B4%E5%BF%AB%E7%9A

Linux 避免IO hang方法

对于DB Server 来说,删除大表来说是很棘手的.删除大表的话,可以对原有表的.ibd文件建立硬链接.当多个文件名指向同一个Node时,删除任何一个文件名都很快,因为直连的物理文件没有删除只是删除了一个指针而已.当Node引用数为1的时候,删除文件需要把文件相关的所有数据块都删除. 今天我们只讨论,如果我们利用了以上方法建立了硬链接文件,那么删除该大文件的时候,如何避免IO hang呢? 答案是 coreutils 工具集中的 truncate 工具 truncate 收缩或扩展文件至指定大

PostgreSQL 9.6 IO Hang问题浅析与优化

背景 PostgreSQL检查点是将shared buffer中的脏页打标记,并集中将其刷到磁盘的动作(fsync).(期间可能有刷盘的调度,降低当脏页很多时带来的IO影响) 在检查点之外,平时bgwriter进程则会使用bufferio的方式(write)将脏页写到OS的dirty page. 如果shared buffer非常大,而且数据库应用如果是频繁产生脏页的应用,那么检查点带来的性能影响会非常的明显. 例如shared buffer有100G,活跃数据有100G,同时活跃数据在不停的被

PostgreSQL 9.6 检查点柔性优化(SYNC_FILE_RANGE) - 在单机多实例下的IO Hang问题浅析与优化

背景 PostgreSQL检查点是将shared buffer中的脏页打标记,并集中将其刷到磁盘的动作(fsync).(期间可能有刷盘的调度,降低当脏页很多时带来的IO影响) 在检查点之外,平时bgwriter进程则会使用bufferio的方式(write)将脏页写到OS的dirty page. 如果shared buffer非常大,而且数据库应用如果是频繁产生脏页的应用,那么检查点带来的性能影响会非常的明显. 例如shared buffer有100G,活跃数据有100G,同时活跃数据在不停的被

SSD 因 NCQ hang,failed command: WRITE FPDMA QUEUED / tag 28 ncq 4096 out

新购入的建兴ZETA 256G,在CentOS 7.2中,用PostgreSQL自带的fsync测试工具pg_test_fsync测试IOPS时,突然IO hang住了. dmesg报了一堆这样的超时: res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout) [ 895.604149] ata1.00: status: { DRDY } [ 895.606940] ata1.00: failed command: WRITE FPD

简单排除VLAN无线上网交换机故障

  在无线网络组成中,很多设备的使用都值得大家详细了解一下.那么今天我们主要谈论一下VLAN无线上网交换机故障的问题.如下是一位网友的经验分享:单位一个办公区所在的两个部门VLAN出现了一个很奇怪的问题,因特网上部分网站可以正常访问,而部分网站又无法访问;通过Outlook或者Foxmail接收邮件正常,发送不带附件的小邮件也正常,但是发送大邮件或者含有附件的邮件时就不能正常发送了.单位其他办公区上网正常. VLAN无线上网交换机故障分析 用户PC所在的办公区距离核心交换机大约有2-3公里,该办

docker下安装配置JAVA Tomcat运行环境

环境 本文所有环境,VMware WorkStation上运行ubuntu-13.10-server-amd64,注意是64位系统,理论上其它虚拟机也是完全可行的. 安装Docker Docker 0.7版本需要linux内核 3.8支持,同时需要AUFS文件系统. # 检查一下AUFS是否已安装 sudo apt-get update sudo apt-get install linux-image-extra-`uname -r` # 添加Docker repository key sudo

运行时和编译时元编程—运行时元编程

原文链接   译文链接   译者:JackWang 运行时和编译时元编程 第一部分 Groovy语言支持两种风格的元编程:运行时元编程和编译时元编程.第一种元编程支持在程序运行时修改类模型和程序行为,而第二种发生在编译时.两种元编程有各自的优缺点,在这一章节我们将详细讨论. 注:译者也是第一次接触Groovy,由于时间和水平有限(姑且让译者使用这个理由吧,对待知识本应该一丝不苟)部分专有名词可能翻译不准确甚至有误(读者阅读的过程中最好能参考原文),恳请读者不吝留言指出,谢谢! 1.运行时元编程

阿里云操作运维Windows系统有哪些问题

Windows2008 32位 64位自助正版激活教程 外网访问ECS服务器端口不通的排查方法 mysql的binlog太大太多占用大量磁盘 ECS服务器每3天出现一次CPU 100%的情况分析 ECS Windows系统服务器查看流量占用情况的方法 ping网站有丢包 ECS Windows Server 2008 MetaFile设置占用内存限制 ECS Windows2003与2008防火墙例外添加方法 ECS服务器 TCP网络端口不通分析诊断 ECS IO hang或IO慢导致系统内部数