윈도우 서버 2008, 2008 R2에서 스토리지를 iSCSI 방식으로 연결하는 경우 아래 설정을 적용하시길 권장드립니다. 동일한 문제로 두번이나 큰 장애를 겪었기 때문에, 다른 분들은 겪지 않으셨으면 하는 마음에서 올립니다.

참조 링크
http://support.microsoft.com/kb/981482

증상은 윈도우 이벤트 로그에 아래와 같은 이벤트가 뜨고, 디스크가 정상적으로 보이지 않는 것입니다.

Error ID 20 Connection to the target was lost. The initiator will attempt to retry the connection.

Error ID 7 The initiator could not send an iSCSI PDU. Error status is given in the dump data.

Error ID 49 Target failed to respond in time to a Task Management request.

Error ID 39 Initiator sent a task management command to reset the target. Target name is given in the dump data.

Alert ID 129 The device, \Device\ScsiPort0, did not respond within the time-out period.

Information ID 34 A connection to the target was lost, but Initiator successfully reconnected to the target. Target name is given in the dump data.


문제의 원인은 NIC가 패킷을 드랍 시키기 때문인데, 아래 튜닝을 통해 패킷이 드랍되지 않도록 설정해주세요. 원문에는 3가지 방법 중 하나를 사용하라고 나오지만, 저는 세가지 다 적용하실 것을 권장드립니다.

1. NIC 수신 버퍼 상향 조절

장치관리자에서 NIC 등록정보로 가면 수신 버퍼를 설정할 수 있습니다. 집에 있는 제 PC의 내장 랜은 수신 버퍼를 512 이상 올릴 수 없던데, 회사 서버에 장착된 인텔 10G NIC는 수신 버퍼를 4096까지 올릴 수 있더군요. 기본 값은 512인데 이 버퍼를 2048 이상으로 올려주시는 것이 좋겠습니다.


2. Delay ACK 비활성화

이 설정은 레지스트리에서 해야 하는데, 없는 값을 생성해야 하고 NIC의 GUID가 고유하기 때문에 제가 일괄 커맨드로 알려드릴 수 없는게 아쉽습니다. 직접 마우스로 찾아가서 아래 설정을 해주세요.

레지스트리 편집기에서 아래 위치로 갑니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

그러면 GUID로 표현된 몇개의 하위 가 보이실 텐데, 하나씩 눌러보시면 오른쪽에 IPAddress가 있기 때문에 어떤 키를 편집해야 할지 찾으실 수 있을 것입니다. 해당 키를 선택하신 다음 우측에서 새로운 값을 생성해줍니다.

값 이름 : TcpAckFrequency
값 종류 : REG_DWORD
값 데이터 : 1


3. AutoTuningLevel 비활성화

이 설정은 예전에 제가 두번 소개해드린 적이 있는데

2012/05/30 - [윈도우 일반] - 원격 데스크톱 마우스 반응 속도 비정상적으로 느린 경우

아래 명령어를 한번 입력해 주시면 됩니다.

netsh interface tcp set global autotuninglevel=disabled

이상입니다.