소개
이 문서에서는 FNIC(Fibre Channel Network Interface Card) 중단의 내용을 설명하고 FAQ(자주 묻는 질문)에 대한 답변을 제공합니다.
중단이란?
파이버 채널(FC)에는 삭제 또는 손상된 프레임을 복구할 방법이 없습니다.Exchange에 문제가 있을 경우 Abort(ABTS) 메시지가 전송됩니다.중단은 개시자 또는 대상에서 실행할 수 있는 링크 수준 서비스입니다.SCSI(Small Compute System Interface) 레이어에서 운영 체제 컨피그레이션에 따라 시간 제한이 60~120초인 복구를 처리합니다.

FNIC는 스택에 어디에 맞습니까?
Linux/ESXi의 경우 FNIC 드라이버는 OS(운영 체제) 공급업체가 제공하는 libfc 라이브러리와 실제 하드웨어 사이에 위치합니다. SCSI 레이어가 fnic 드라이버에 요청을 전송하고 fnic 드라이버가 scsi 요청을 펌웨어로 전송합니다.펌웨어는 FCoE(Fibre Channel over Ethernet) 프레임을 생성하여 전선에 전송합니다.

FNIC가 FNIC 드라이버로 인해 중단됩니까?
아니요. FNIC 중단은 반드시 드라이버 문제가 아니라 이니셔티브(또는 대상)가 시간 제한 기간 내에 프레임을 수신하지 않고 SCSI 레이어가 교환을 종료하고 다시 시도한다는 일반적인 메시지입니다.
무엇이 FC를 중단시킬 수 있습니까?
FC 중단은 혼잡, 저성능 디바이스(하드 디스크, 스토리지 프로세서, 저속 링크), 펌웨어 문제, 드라이버 문제, OS 문제, 링크 손실, 링크 다운/작동 등 다양한 이유로 발생할 수 있습니다.
중단이 일반 메시지이므로, 첫 번째 단계는 다음과 같은 질문으로 문제의 범위를 좁히는 것입니다.
- 스토리지 패브릭의 한 쪽에만 발생합니까 아니면 둘 다입니까?
- 단일 호스트 또는 여러 호스트에서 발생합니까?
- 여러 호스트가 있는 경우 문제가 있는 호스트 간에 공통되는 것과 문제가 발생하지 않는 호스트와 다른 것은 무엇입니까?
- SAN 타겟의 특정 SAN(Storage Attached Network) 대상 또는 특정 LUN(Logical Unit Number)과 통신할 때 발생합니까?
- 문제가 발생하지 않는 다른 SAN 대상 또는 LUN이 있습니까? 그렇다면 이러한 작동 중인 LUN/타겟과 작동 중인 대상이 아닌 대상의 차이점은 무엇입니까?
- 매주 백업 작업 중 문제가 발생하는 경우 같은 패턴이 있습니까?
이러한 질문에 대한 답변은 문제가 어디에 있는지, 어디에 초점을 맞출 것인지 파악하는 데 도움이 됩니다.
중단의 가장 일반적인 원인은 레이어 1 문제 때문이며 초기부터 대상으로 전체 경로를 검사하여 CRC(Cyclic Redundancy Check) 오류나 플래핑 인터페이스와 같은 인터페이스 오류를 확인하는 것이 좋습니다.
중단의 다음 일반적인 이유는 CPU와 디스크와 같은 타겟의 구성 요소 간 링크 초과 서브스크립션 또는 초과 서브스크립션 때문입니다. 따라서 우수한 성능 기준을 활용할 수 있습니다.
이 중단 메시지는 로그에 어떤 내용이 있음을 나타냅니까?
VMWare vmkernel log:
2017-07-27T14:54:10.590Z cpu6:33351)<7>fnic : 2 :: Abort Cmd called FCID 0x50a00, LUN 0xa TAG c8 flags 3
이 예에서 2017-07-27T14:54:10 UTC 시 호스트 OS 0xc8을 사용하는 LUN 0xa의 FCID 0x50a00에 대해 vmhba2에서 중단이 호출되었습니다.
LUN ID 0xA 는 10진수로 변환되어 LUN ID 10이 OS가 스토리지에서 통신하려고 시도한 LUN인지 확인합니다.
태그 0xc8 VIC 어댑터의 로그 항목과 일치시키는 데 사용할 수 있는 요청에 대한 호스트 scsi 레이어의 IO 태그입니다.
디바이스 인스턴스 2는 fnic-tracetool -i를 사용하여 vmware vmhba 번호까지 매칭할 수 있습니다.
/tmp # ./fnic-tracetool -i
HBA Device
--- ------
vmhba1 fnic1
vmhba2 fnic2
패브릭 인터커넥트가 엔드-호스트 모드에서 실행되는 경우 노스바운드 패브릭 스위치의 fcns 데이터베이스에서 특정 대상까지 FCID 0x50c00을 매칭할 수 있습니다.
switch-A(nxos)# show fcns database fcid 0x50c00 detail vsan 1 ------------------------ VSAN:1 FCID:0x50c00 ------------------------ port-wwn (vendor) :50:00:00:00:ff:ff:ff:01 (EMC) node-wwn :50:00:00:00:ff:ff:ff:00 class :3 node-ip-addr :0.0.0.0 ipa :ff ff ff ff ff ff ff ff fc4-types:fc4_features :scsi-fcp:both 253 symbolic-port-name :SYMMETRIX::SAF- 3fB::FC::5876_272+::EMUL B80F0000 41234F44 94F360 07.27.15 11:14 symbolic-node-name :SYMMETRIX::FC::5876_272+ port-type :N port-ip-addr :0.0.0.0 fabric-port-wwn :20:1e:00:2a:6a:ea:00:00 hard-addr :0x000000 permanent-port-wwn (vendor) :50:00:00:00:ff:ff:ff:01 (EMC) connected interface :fc1/30
VIC 어댑터 로그
170727-14:54:10.590661 ecom.ecom_main ecom(4:0): abort called for exch abort called for exch 431b, status 3 rx_id 0s_stat 0x0xmit_recvd 0x0burst_offset 0x0sgl_err 0x0 last_param 0x0 last_seq_cnt 0x0tot_bytes_exp 0xa00h_seq_cnt 0x0exch_type 0x1s_id 0x36010fd_id 0x50c00 host_tag 0xc8
- s_stat 0x0 => 수신된 프레임이 없습니다.
- exch_type 0x1 => Exchange가 인그레스(ingress)이며 활성 상태입니다.
- 필요한 총 바이트 수는 => tot_bytes_exp 0xa00입니다.
- 수신 => 0x0
- burst_offset이 설정됨 => 0x0
- 이 요청에 대한 호스트 scsi 레이어의 IO 태그는 => 0xc8입니다.
- 소스 ID => 0x36010f
- 대상 대상 ID => 0x50c00
- 시퀀스 ID => 0x0
- rx_id => 0
상태
-
상태 3 = write 명령
-
상태 1 = 읽기 명령
Exchange 유형(exch_type):
======================
EXCH_NOT_IN_USE = 0,
EXCH_INITIATOR_INGRESS_ACTIVE = 1
EXCH_TARGET_INGRESS_ACTIVE = 2
EXCH_EGRESS_ACTIVE = 3
EXCH_ABORTED = 4
EXCH_DEBUG = 5
Exchange 상태 값(s_stat):
==============================
0x00 프레임이 수신되지 않음
0x01 하나 이상의 프레임 recvd
0x02 시퀀스가 아직 활성 상태입니다.
0x04 시퀀스가 완료되었습니다.
0x08 전송 시퀀스 초기화
0x10 이그레스 시퀀스가 활성 상태입니다.
0x20 rsp - 및 호스트 항목이 전송됨
0x40 exch 데이터 시퀀스 보류 중
중단 메시지와 FCPIO 불일치 메시지의 차이점은 무엇입니까?
FCPIO 불일치는 모든 예상 데이터가 수신되지 않을 때 발생할 수 있습니다.
Total bytes xmit < expecte ddata length
160621-04:26:51.733255 ecom.ecom_main ecom(8:3): ox_id 41d4 rx_id 44b seq_cnt 7 seq_id 1 160621-04:26:52.066235 ecom.ecom_main ecom(8:1): fcpio_data_cnt_mismatch for exch 4202 status 1 rx_id5f7 s_stat 0x3 xmit_recvd 0x3000 burst_offset 0x3000 sgl_err 0x0 last_param 0x2800 last_seq_cnt 0x0 tot_bytes_exp 0x8000 h_seq_cnt 0x5 exch_type 0x0 s_id 0xab800 d_id 0xab800 host_tag 0x377
관련 정보