안녕하세요. 오랫만에 작성하는 글이 질문글이네요.
ESXi 패스스루 관련하여 문제가 있어 조언구하고자 합니다.
먼저 기존에 쓰던 인텔 시스템 사양입니다.
CPU : 8700t es
M/B : ASRock H370M ITX/ac
RAM : 32G (16G * 2ea)
HDD : WD 10TB * 3ea, 노트북용 3TB * 1ea, SSD 2TB * 2ea, NVME 1TB * 1ea
RAID : SI-PEX40071(마벨 칩셋 SATA 8Port)
Chassis : U-NAS NSC-810A
PSU : Seasonic SS-350M1U 350w (80+ GOLD)
CPU Cooler : itx30
Hypervisor : ESXi 6.7 U2
위 사양에 라이젠 1700, 64gb 메모리, msi b350m 박격포, 쿼드로 p400 만 추가, 변경되었습니다.
일단 인텔시스템에서는 sata 확장카드 패스스루하여 잘 사용중이었습니다만,
AMD 라이젠 시스템으로 교체하면서 패스스루에 문제가 발생했습니다.
1. SI-PEX40071 패스스루
인텔 시스템에서는 패스스루 자체는 잘되었습니다.
패스스루 한 뒤, 가상머신 옵션에 따라 부팅 문제가 있긴했지만 큰 문제는 아니어서 일부 옵션 수정 후 정상 사용했었습니다.
(부팅옵션 EFI->BIOS변경으로 해결)
이게 AMD시스템으로 넘어온 뒤로는 패스스루 자체가 정상적으로 동작되지 않습니다.
http://2cpu.co.kr/bbs/board.php?bo_table=QnA&wr_id=669340
위 게시글과 완전히 동일한 문제입니다. 패스스루 후 재부팅해도 적용되지 않습니다
패스스루를 취소하면 ESXi에 SATA 확장카드 및 연결된 하드디스크들은 정상적으로 잘 올라옵니다.
2. 쿼드로 P400 패스스루
이건 AMD시스템으로 넘어오면서 신규 추가한 것입니다.
패스스루 자체는 정상적으로 진행되지만, 가상머신 전원이 켜지지 않는 문제가 발생합니다.
--------------------------------------------------------------------------------------------------------------
실패 - 모듈 'DevicePowerOn'의 전원을 켜지 못했습니다.
오류
모듈 'DevicePowerOn'의 전원을 켜지 못했습니다.
하드웨어 또는 소프트웨어 지원을 사용할 수 없기 때문에 38:0.0에 대해 pciPassthru0 디바이스를 등록하지 못했습니다.
가상 시스템을 시작하지 못했습니다.
----------------------------------------------------------------------------------------------------------------
구글링 중입니다만, 하면할수록 AMD 시스템 호환성 문제 같다는 생각이 드네요.
혹시 해결하신 분들 계신가요?
2번째 문제는 기존에 달려있던 pci 장치른 vmx 파일에서 제거하고 해보라네요
가상머신도 신규 생성해서 시도해봤지만 동일 에러발생합니다ㅎ
가상머신의 메모리를 수동으로 한다음 메모리 할당을 전부 예약 (reserved memory를 전체로 잡으면)으로 해주면 해결 됩니다.
패스스루 자체를 못하게 되어있어서 말씀하신 원인은 아닌 것으로 보여지네요.
라이젠 시스템에서는 1,3 번 슬롯이 공유되어 생기는 문제로 보여집니다.
p400과 sata카드 위치를 바꿔보면 이번엔 p400 패스스루가 안되네요.
iommu 그룹이 같아서 생기는 문제같은데 이부분은 정확하지 않습니다.
일단 이문제는 pcie 1x 슬롯에 꼽아보면 확실해질 것 같네요.
라이저케이블 주문했습니다. 추후 결과는 해당 덧글에 반영해놓겠습니다.
2번 자답합니다.
/etc/vmware/passthru.map 파일에 패스스루 관련 정보가 입력되어있습니다.
이 부분에 nvidia 관련 그래픽카드들은 모두 bridge 방식으로 동작되도록 되어있었네요.
10de ffff bridge false --> 10de (패스스루 디바이스id) d3d0 false
로 변경해주시면 됩니다.
한가지 의문인 것인 ESXi 6.7 U2기준 디폴트값이 bridge 설정입니다.
(이런 이유로 nvidia 그래픽카드 패스스루 호환성이 많이 떨어진다는 것 같네요. )
패스스루 후 hypervisor.cpuid.v0=FALSE 설정해줘도 드라이버 설치 시 에러는 발생합니다만,
동작은 아무문제 없이 잘 되네요.
다음 링크에 자세하게 적혀있습니다.(사실 해당 글은 이슈 발생 초기에 봤던 글인데, 정독을 하지 않고 적용을 했더니 이런 사태가 발생하네요)
https://www.reddit.com/r/Amd/comments/72ula0/tr1950x_gtx_1060_passthrough_with_esxi/
모든 PCI 슬롯이 하나의 그룹으로 설정되어 ESXi에서 정상적으로 패스스루 할 수 없는 문제이고,
많은 사람들이 ESXi 패스스루 호환성이라고 부르는 것이 이 문제인 것 같습니다.
일단 제가 검색하기로는 ESXi + 라이젠 조합에서 멀티 pci 패스스루를 하려면 IOMMU Group 설정을 알아서 잘해주는 보드를 고르는 방법밖에는 없습니다.
(대체적으로 16x 메인 슬롯 한개는 정상적으로 패스스루가 잘되는것 같습니다)
문제는 같은 보드에서도 바이오스에 따라 조금씩 변경되는 경우도 있기 때문에 보드 고르는게 쉽지 않다는 것이네요.
ESXi를 벗어나면 답이 없는 것은 아닙니다.
리눅스 기반 하이퍼바이저를 사용하면 ACS Override를 통해 그룹설정을 임의로 변경할 수 있는 것 같습니다만,
저의 경우 ESXi를 사용할 것이므로 해당사항이 없는 것 같네요.
결론적으로는 1번문제는 현재 해결이 불가능한 부분입니다.
혹시나 다른 방법으로 라이젠 시스템에서 멀티 pci 패스스루를 하는 방법을 아시는분은 코멘트 부탁드립니다.
------------------------------------------------------------------------------------------------
1번항목 정정합니다.
VMkernel.Boot.disableACSCheck = TRUE로 변경 시, 일단 패스스루 무한 재부팅 회피는 가능한 것으로 보여집니다.
(패스스루 후 실사용시 동작이 불안정한 경우가 있는듯합니다)
혹시나 같은 고민을 하시는 분들은 http://2cpu.co.kr/vm/10152 게시글 참고 바랍니다.
보드 선정에 도움이 되실겁니다.
update2에서 발생하던 간헐적 재부팅 문제가 update3에서 해결되었습니다.