소개
이 문서에서는 FNIC(Fibre Channel Network Interface Card) Abort에 대해 설명하고 FAQ(자주 묻는 질문)에 대한 답변을 제공합니다.
중단이란 무엇입니까?
FC(Fibre Channel)는 삭제 또는 손상된 프레임에 대한 복구 수단이 없습니다. Exchange에 문제가 있을 경우 중단(ABTS) 메시지가 전송됩니다. 중단은 개시자 또는 대상에서 실행할 수 있는 링크 수준 서비스입니다. 복구는 운영 체제 컨피그레이션에 따라 60~120초의 시간 초과로 SCSI(Small Compute System Interface) 레이어에서 처리합니다.
FNIC는 스택에 어디에 연결됩니까?
Linux/ESXi의 경우 FNIC 드라이버는 운영 체제(OS) 공급업체가 제공하는 libfc 라이브러리와 실제 하드웨어 사이에 위치합니다. SCSI 레이어는 요청을 fnic 드라이버에 보내고, fnic 드라이버는 scsi 요청을 펌웨어에 보냅니다. 펌웨어는 FCoE(Fibre Channel over Ethernet) 프레임을 생성하고 유선 상으로 전송합니다.
FNIC 드라이버로 인해 FNIC가 중단됩니까?
아니요. FNIC가 중단되는 것은 드라이버 문제일 필요는 없지만, 초기(또는 대상)가 시간 제한 내에 프레임을 수신하지 못했으며 SCSI 레이어가 교환을 종료하고 다시 시도한다는 일반적인 메시지입니다.
무엇이 FC를 중단하게 할 수 있을까요?
FC 중단은 정체, 저성능 장치(하드 디스크, 스토리지 프로세서, 저속 링크), 펌웨어 문제, 드라이버 문제, OS 문제, 링크 손실, 링크 다운/업 등 다양한 이유로 인해 발생할 수 있습니다.
중단은 일반적인 메시지이므로 첫 번째 단계는 다음과 같은 질문으로 문제의 범위를 좁히는 것입니다.
- 스토리지 패브릭의 한 면에서만 발생합니까, 아니면 둘 다에서 발생합니까?
- 단일 호스트에서 발생합니까, 아니면 여러 호스트에서 발생합니까?
- 호스트가 여러 개인 경우 문제가 있는 호스트 간에 공통되는 사항과 문제가 없는 호스트와 다른 점은 무엇입니까?
- 특정 SAN(Storage Attached Network) 대상이나 SAN 대상의 특정 LUN(Logical Unit Number)과 통신할 때 발생합니까?
- 문제가 발생하지 않는 다른 SAN 대상 또는 LUN이 있습니까? 그렇다면 작동 중인 LUN/대상과 작동하지 않는 대상의 차이점은 무엇입니까?
- 주별 백업 작업 시 등 문제가 발생하는 시점에 대한 패턴이 있습니까?
이러한 질문에 대한 답변은 문제가 발생할 수 있는 위치와 초점을 맞출 수 있는 위치를 파악하는 데 도움이 됩니다.
중단의 가장 일반적인 원인은 레이어 1 문제이며, CRC(Cyclic Redundancy Check) 오류나 인터페이스 플래핑(flapping) 오류와 같은 인터페이스 오류가 있는지 처음부터 대상으로 전체 경로를 확인하는 것이 좋습니다.
중단의 또 다른 일반적인 이유는 초기/대상 간의 링크 오버서브스크립션 또는 타겟의 구성 요소(예: 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 SCSI 태그 0xc8이 있는 LUN 0xa의 FCID 0x50a00에 대해 vmhba2에서 중단이 호출되었습니다.
LUN ID 0xA LUN ID 10이 OS가 스토리지에서 통신하려고 시도한 LUN인지 확인하기 위해 10진수로 변환됩니다.
태그 0xc8 VIC 어댑터의 로그 항목과 일치시키는 데 사용할 수 있는 요청에 대한 호스트 scsi 계층의 IO 태그입니다.
디바이스 인스턴스 2는 fnic-tracetool -i를 사용하여 vmware vmhba 번호까지 확인할 수 있습니다
/tmp # ./fnic-tracetool -i
HBA Device
--- ------
vmhba1 fnic1
vmhba2 fnic2
패브릭 인터커넥트가 엔드-호스트 모드에서 실행되는 경우 FCID 0x50c00을 노스바운드 패브릭 스위치의 fcns 데이터베이스의 특정 대상까지 일치시킬 수 있습니다.
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 = 읽기 명령
교환 유형(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_디버그 = 5
Exchange 상태 값(s_stat)
================================
0x00 수신된 프레임 없음
0x01 하나 이상의 프레임 recv
0x02 시퀀스가 아직 활성 상태입니다.
0x04 시퀀스가 완료되었습니다.
0x08 전송 시퀀스 init
0x10 이그레스 시퀀스가 활성 상태입니다.
0x20 rsp fr 및 호스트 항목 전송됨
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
관련 정보