개요

헤놀로지, TrueNAS등 NAS를 빌드할 때 부족한 SATA포트를 보충하기 위해서 SAS2008이나 SAS3008칩셋 계열의 HBA카드를 사용합니다.

중국산 SATA확장카드보다 더 신뢰성이 높고, SAS하드도 사용할 수 있으며, 서버실에서 나오는 중고들을 비교적 저렴한 값에 구할 수 있기 때문입니다.

NAS용 스토리지 포트 확장을 위해 서버실 장비에서 적출된 SAS3008 칩셋 컨트롤러 기판 크로스플래싱 작업에 필요한 바이너리 파일 및 유틸리티가 담긴 전체 다운로드 폴더 화면

이들 대부분은 하드웨어 레이드 펌웨어(IR Mode) 동작 상태로 장터에 나오게 됩니다.

한편, 소프트웨어 레이드를 사용하는 DSM(헤놀로지), TrueNAS들은 디스크에 원시적 접근 권한을 필요로 하기 때문에 이 카드들을 그대로 사용할 순 없고, 패스스루(passthrough) 모드인 IT 펌웨어를 입혀 동작시켜야 합니다.

이번 글에서는, SAS3008계열 카드(AOC-S3008L)의 펌웨어를 IR에서 IT로 크로스플래싱(Cross-flashing)을 해보겠습니다.

파일 준비

링크를 눌러 파일을 다운받아 압축을 해제하면 아래와 같은 파일들을 확인하실 수 있습니다.

9300-8i 모델 펌웨어 플래싱에 사용할 핵심 파일 4개를 추려내어 USB 드라이브로 복사할 준비

우선, USB드라이브에 sas3flash.efi, mptsas3.rom, mpt3x64.rom 3개의 파일을 옮겨담아주세요.

그 후, 위의 폴더 목록 중에서 보유한 카드의 종류에 따라 필요한 파일을 찾습니다. 제가 사용하고자 하는 카드는 내부 SAS 포트 2개로, 9300-8i입니다.
(글 최상단 오른쪽 사진처럼 9300-16i일 경우도 있으니 본인 환경에 맞는 파일을 사용하셔야 합니다.)

최종적으로 아래 사진과 같이 파일 4개가 있어야 합니다.

펌웨어 업데이트 툴을 구동하기 위해 시스템 재시작 후 메인보드 메뉴에서 UEFI 쉘 부팅을 고르는 모습

재부팅 후, UEFI 쉘로 진입합니다. 부팅 시 부팅메뉴 팝업 혹은 UEFI Firmware 진입 후 부팅메뉴에서 UEFI 쉘을 선택하면 됩니다.

UEFI 쉘 부팅 직후 화면을 멈춰 장착된 USB 드라이브의 고유 파티션 식별자를 파악하는 터미널

메인보드에 따라, UEFI쉘이 내장되어 있지 않은 경우도 있습니다. 그런 분들의 경우, 압축파일을 받아 USB에 /boot/efi/BOOTX64.efi 로 넣어주세요.

IT 펌웨어 플래싱

UEFI 쉘에서 USB드라이브 찾기

맨 처음 UEFI쉘 진입 시, 연결된 장치 리스트가 빠르게 지나가버려 USB드라이브를 찾기 힘듭니다.

아래 명령어를 이용하면 리스트가 한 화면 단위로 끊어져 출력되어 알아보기 쉬워집니다.

map -b
식별한 fs 파티션으로 이동한 뒤 복사해 둔 펌웨어 파일 4개가 정상적으로 존재하는지 확인하는 화면

USB파티션이 fs2로 잡혀있습니다. q→Enter입력으로 빠져나온 뒤 쉘에 아래 명령어를 차례로 입력합니다.

그러면 사진처럼 조금 전 담아놓은 파일 4개를 확인할 수 있습니다.
(제 USB가 DOS겸용이라 다른 파일이 들어있습니다 ㅠㅠ. 4개만 들어있으면 됩니다.)

fs2:
dir
서버 메인보드에 현재 꽂혀 있는 SAS 컨트롤러 어댑터의 갯수와 인덱스 번호를 전체 스캔하여 조회

장착된 카드 확인하기

펌웨어 플래싱 전 항상 장착된 카드를 먼저 확인해야 합니다.

아래 명령어를 입력하여 장착된 카드를 모두 불러옵니다.

sas3flash.efi -listall

그러면, 아래 사진처럼 장착된 카드가 리스트 형태로 표현됩니다. 제 경우 9300-8i 카드를 2장 꽃았기 때문에 2장이 나타납니다.

반면, 4포트짜리 9300-16i는 한 장의 카드만 장착해도 2장의 카드처럼 출력됩니다. 그래서 플래싱할 때, 두 번의 과정이 필요한데, 그런 경우까지 같이 설명해보겠습니다.

플래싱 전 원복을 위해 특정 어댑터의 상세 장치 정보를 조회하고 고유 SAS 주소를 메모하는 화면

리스트 맨 왼쪽 Num이 각 카드의 숫자가 됩니다.

아래 명령어를 통해 각각 카드의 세부 정보를 확인할 수 있습니다.

  • 카드가 두 장인 경우(4포트 한 장인 경우 포함)
sas3flash.efi -c 0 -list
sas3flash.efi -c 1 -list
  • 카드가 한 장인 경우
sas3flash.efi -list
기존에 설치된 서버용 IR 펌웨어를 컨트롤러에서 완전히 삭제하여 플래싱 가능한 초기 상태로 돌리는 과정 펌웨어가 삭제되어 기기가 접근 불가 상태가 됨을 경고하는 터미널 로그 메시지

카드 정보가 표시되었다면, 최우선적으로 SAS Address 주소를 적어둔 뒤, 다음 과정으로 넘어갑니다.

기존 펌웨어 지우기

IR→IT 를 크로스플래싱(Cross-flashing)이라고 합니다. 원래 IR 펌웨어로 사용하는 기기(ex. 9311-8i)와 IT 펌웨어(ex. 9300-8i)로 사용하는 기기가 다르기 때문입니다.

기기는 다르지만, 베이스가 동일하기 때문에 이기종간 펌웨어 플래싱이 가능하고, 그렇기 때문에 크로스플래싱이라고 합니다.

우선, 기존 펌웨어를 날려주어야 하므로, 아래 명령어를 진행해 줍니다.

(SAS Address 주소를 필히 적어두세요)

  • 카드가 두 장인 경우(4포트 한 장인 경우 포함)
sas3flash.efi -c 0 -o -e 7
sas3flash.efi -c 1 -o -e 7
  • 카드가 한 장인 경우
sas3flash.efi -o -e 7

제대로 입력했다면, 아래 사진처럼 펌웨어를 성공적으로 날릴 수 있게 됩니다.

여기까지 완료했을 경우, 절대 컴퓨터를 끄시면 안됩니다. 이 단계에서 종료할 경우, 해당 카드는 벽돌이 되어 접근할 수 없습니다.

펌웨어가 빈 상태인 컨트롤러 칩셋에 소프트웨어 레이드용 IT 펌웨어 파일을 주입하는 명령어 실행 화면

(펌웨어 erase 없이 바로 플래싱 하려고 하면 아래 사진처럼 에러만 출력되므로, 꼭 해주셔야 합니다.)

IT 펌웨어 주입 후 이전에 백업했던 고유 식별자 SAS 주소를 컨트롤러에 다시 기록하는 명령어

IT 펌웨어 플래싱하기

이제 IT 펌웨어를 입히는 과정입니다. 아래 명령어를 입력해 주세요.

  • 카드가 두 장인 경우(4포트 한 장인 경우 포함)
sas3flash.efi -c 0 -f SAS9300_8i_IT.bin -b mptsas3.rom -b mpt3x64.rom
sas3flash.efi -c 1 -f SAS9300_8i_IT.bin -b mptsas3.rom -b mpt3x64.rom
  • 카드가 한 장인 경우
sas3flash.efi -f SAS9300_8i_IT.bin -b mptsas3.rom -b mpt3x64.rom

쉘 버전에 따라 매개변수 3개 동시 입력이 안되는 경우도 있습니다. 그럴 경우 아래처럼 나눠서 입력해주세요.

sas3flash.efi -f SAS9300_8i_IT.bin
sas3flash.efi -b mptsas3.rom
sas3flash.efi b mpt3x64.rom

그러면, 아래처럼 펌웨어 과정이 진행됩니다.

SAS2008, SAS3008칩셋 모두 가장 최신 펌웨어는 16.00.12.00입니다.

설치된 펌웨어 버전 정보와 SAS 주소가 올바르게 반영되었는지 터미널에서 최종 점검하는 결과 화면 크로스플래싱 적용 전 하드웨어 레이드 화면과 적용 후 패스스루 통신 화면을 비교하여 보여주는 모습

별다른 오류 없이 플래싱을 완료했다면, 조금 전 적어둔 SAS Address를 다시 입력해줄 차례입니다.

아래 명령어를 입력하되, ‘address’ 부분은 개별 환경에 맞춰 적어주세요.

  • 카드가 두 장인 경우(4포트 한 장인 경우 포함)
sas3flash.efi -c 0 -o -sasadd 'address'
sas3flash.efi -c 1 -o -sasadd 'address'
  • 카드가 한 장인 경우
sas3flash.efi -o -sasadd 'address'
펌웨어 플래싱 완료 후 개별 환경에 맞춰 카드의 기존 SAS Address를 입력하는 화면

펌웨어 최종 확인

  • 카드가 두 장인 경우(4포트 한 장인 경우 포함)
sas3flash.efi -c 0 -list
sas3flash.efi -c 1 -list
  • 카드가 한 장인 경우
sas3flash.efi -list

사진처럼 IT펌웨어와 Firmware Version 16.00.12.00을 확인할 수 있어야 합니다. 또, SAS Address가 제대로 입혀졌는지도 확인하셔야 합니다.

문제가 있을 경우 과정을 처음부터 하셔야 합니다.

명령어를 입력하여 IT펌웨어 버전과 SAS Address가 올바르게 적용되었는지 최종 확인하는 화면
플래싱 전/후 비교
IT 펌웨어 플래싱을 수행하기 전 카드의 펌웨어 및 인식 상태를 보여주는 플래싱 전 화면
플래싱 전/후 비교

이제 이 카드를 TrueNAS 혹은 Xpenology(헤놀로지) 등에 사용하시면 됩니다.

여담

참고로 sas3flash.efi(sas2flash.efi 포함)는 리눅스에서도 동작시킬 수 있습니다.

DOS의 경우 sas3flsh.exe, 리눅스의 경우 sas3flash.efi, 그 외 윈도우에서도 작동시킬 수 있습니다.

그러나, 리눅스나 윈도우의 경우, 드라이버가 사용중일 경우, 연결이 정상적으로 종료되지 않는 경우가 많아 펌웨어 erase, flashing 과정에서 벽돌이 되는 경우를 레딧에서 종종 찾아볼 수 있고

DOS의 경우 사양에 따라 과정이 너무 오래 걸리는 경우가 있어,

UEFI 쉘이 가장 무난하고 좋은 방법인 것 같습니다.

크로스플래싱이 아닌, IT → IT펌웨어 업그레이드 같은 정도의 작업은 리눅스에서 라이브로 가능하기도 합니다.

리눅스 쉘 환경에서 sas3flash 유틸리티를 실행하여 IT 펌웨어 업그레이드를 진행하는 화면