FreeNAS 11 을 TrueNAS 12 로 업그레이드 한 이후 ESXi 에서 부팅이 불가능한 문제가 발생하였습니다.
조사를 해 보니 VMWare 가상화 제품 (ESXi, Workstation 등) 에서 UEFI 부트로더로 FreeBSD 12 를 부팅할 때 커널 패닉이 나면서 무한 재부팅에 빠지는 것이였습니다. 즉, 이 문제는 FreeBSD 12 의 문제이고, TrueNAS 12 는 FreeBSD 12 를 기반으로 하기에 이러한 문제가 발생한 것이였습니다.
부팅 방법 자체는 그렇게 어렵지 않습니다. 제가 최근 포스팅한 TrueNAS 12 업그레이드 후 발생한 문제 의 첫번째 섹션을 보면 위 문제와 해결 방법을 써 놓았습니다. EFI Internal Shell 을 선택하셔도 되고, FreeBSD 커뮤니티의 계시물 을 보시면 아래 방법으로도 부팅이 가능하긴 합니다.
- TrueNAS 부팅 시 EFI Internal Shell 을 선택해 부팅합니다.
- TrueNAS 부팅 중에 안전 모드, 싱글 유저 모드를 선택해 부팅합니다.
- 부팅이 다 되면 아래 명령어를 입력합니다.
mount -t msdosfs /dev/da0p1 /mnt efibootmgr -c -l /mnt/efi/boot/BOOTx64.EFI -L "truenas_12rc1"
이렇게 하면 아래와 같은 출력이 나타납니다.
Boot0004* truenas12rc1 Boot0001* EFI Internal Shell (Unsupported option) Boot0002* EFI Network Boot0003* EFI Network 1 Boot0000* EFI Virtual disk (0.0)
출력의 상세 내용은 다를 수 있습니다. 여기서 방금 만든 truenas_12rc1 을 선택해줍니다.
efibootmgr -a 0004
그리고 재시작 해 줍니다.
reboot
그런데 이 방법은 임시방편입니다. 왜냐 하면 이런 방법을 사용해 부팅한다 할지라도 매 부팅 시 마다 수동으로 선택해 주어야 하는 것은 같기 때문입니다. 매 부팅 할때마다 화면을 들여다보며 ESC 를 연타하는 것은 합리적이지도 않고, 예상치 못한 사고 (정전 후 재부팅 등) 에 대비할 수도 없습니다. 우리는 서버를 돌려야 하고, 자동으로 부팅되어야만 합니다!!
그래서 삽질을 하다 보니 방법을 찾았습니다. 부트로더가 선택을 하기도 전에 부팅을 시도 하는 것이 문제가 아닐까 싶어, ESXi 에다가 ‘부팅 지연’ 설정을 1000ms 주니깐 정상적으로 부팅됩니다.
- ESXi 에서 가상 머신의 부팅 지연 설정을 합니다. 부팅 지연 설정은 ESXi 6.7 기준으로 편집-VM 옵션-부팅 옵션-부팅 지연 에 있습니다. 1ms 단위로 설정할 수 있고 1000ms 면 1초입니다.
- 가상 머신 부팅 중에 ESC 를 연타해 부트 로더 메뉴로 진입합니다.
- Enter setup-Configure boot options-Change boot order 으로 들어가 부팅 순서를 편집합니다.
- 부팅 순서 변경을 통해 EFI Internal Shell 혹은 위에서 만든 truenas12rc1 을 1순위로 올립니다.
- 편집이 끝났으면 Commit changes and exit 를 선택해 저장하고 나옵니다.
- 처음 화면으로 돌아간 다음 Reset the system 을 선택해 재부팅합니다.
즉, 이 글의 핵심은 이겁니다. ‘부팅 지연’ 설정에서 1000ms 의 부팅 지연을 걸어 주세요. 그럼 정상적으로 부팅이 됩니다.