PCIe 분할 기능이 없는 홈 서버에서 NVMe 드라이브가 인식되지 않는 이유는 무엇일까요?

에바 왕기술 작가 그리고 이자 ZimaSpace의 상주 장인입니다. 평생을 기술에 열정을 가진 사람으로서 홈랩과 오픈소스 소프트웨어에 열정을 가지고 있으며,복잡한 기술 개념을 쉽게 이해할 수 있는 실습 가이드로 번역하는 데 전문성을 가지고 있습니다.에바는 셀프 호스팅이 어렵지 않고 재미있어야 한다고 믿습니다. 그녀의 튜토리얼을 통해 커뮤니티가 하드웨어 설정의 신비를 풀도록돕고 있습니다. 첫 NAS 구축부터 Docker 컨테이너 마스터링까지.

홈 서버는 카드가 여러 M.2 소켓을 하나의 PCIe 슬롯에 수동으로 연결했지만 플랫폼이 해당 슬롯을 단일 링크로 노출할 때 다중 NVMe 어댑터에서 하나의 SSD만 감지할 수 있습니다. 첫 번째 드라이브는 링크를 설정할 수 있지만, 다른 드라이브는 펌웨어와 운영 체제가 열거할 독립적인 다운스트림 연결이 없습니다.

PCIe 분기는 호환 가능한 수동 어댑터에서 하나의 넓은 루트 포트 연결을 여러 개의 좁은 링크로 나누어 해결합니다. 예를 들어 x16이 x4/x4/x4/x4로 분할됩니다. 모든 다중 NVMe 카드에 필수는 아니며, 온보드 PCIe 스위치가 있는 어댑터는 자체 다운스트림 포트를 생성할 수 있지만, 이 경우 모든 드라이브가 카드의 업스트림 링크를 공유합니다.

분할되지 않은 하나의 PCIe 링크는 수동 어댑터의 모든 드라이브를 노출할 수 없습니다

수동 다중 NVMe 어댑터는 여러 SSD를 하나의 장치 인터페이스 뒤에 결합하는 스토리지 컨트롤러처럼 동작하지 않습니다. 주로 에지 커넥터와 개별 M.2 소켓 간에 레인 그룹, 기준 클럭, 리셋 신호 및 전원을 라우팅합니다. 각 NVMe SSD는 자체 PCIe 엔드포인트이며 호스트 토폴로지에 유효한 링크가 필요합니다.

루트 포트가 하나의 넓은 링크로 구성된 상태로 남아 있으면, 호스트는 해당 수동 카드의 모든 소켓에 대해 별도의 논리 링크를 생성하지 않은 것입니다. NVMe 드라이버나 파일 시스템이 활성화되기 전에는 하나의 SSD만 인식되고 나머지는 나타나지 않을 수 있습니다. 그래서 증상은 보통 “하나의 드라이브만 감지됨”이지, 용량이 줄어든 네 개의 드라이브가 나타나는 것이 아닙니다.

PCIe 분기는 하나의 물리적 슬롯에서 여러 링크를 생성합니다

분기는 CPU 또는 칩셋 쪽의 포트 구성을 변경합니다. 물리적 x16 연결은 플랫폼이 해당 모드를 지원할 경우 두 개의 x8 링크, 하나의 x8과 두 개의 x4 링크, 또는 네 개의 x4 링크로 나뉠 수 있습니다. 각 결과 링크는 어댑터의 다른 엔드포인트와 연결할 수 있습니다.

부팅 후 운영 체제에서 분할이 수행되지 않습니다. 이는 프로세서의 PCIe 컨트롤러, 메인보드 배선 및 플랫폼 펌웨어에 따라 달라집니다. ASUS의 공식 PCIe 분기 호환성 안내에 따르면 카드가 노출할 수 있는 M.2 드라이브 수는 메인보드, CPU, 슬롯 및 레인 할당에 따라 다릅니다.

수동 및 스위치 기반 NVMe 어댑터는 서로 다른 PCIe 토폴로지를 만듭니다

두 개의 카드는 동일한 수의 M.2 소켓을 가질 수 있지만 호스트에 매우 다른 요구 사항을 부과할 수 있습니다. 수동 카드는 루트 컴플렉스가 여러 링크를 공급하는 데 의존합니다. 스위치 기반 카드는 호스트에 업스트림 포트를 제공하고 SSD를 위한 여러 다운스트림 포트를 생성합니다.

어댑터 토폴로지 호스트 측 요구 사항 SSD가 어떻게 인식되는지 대역폭 경계
분기화 없는 수동 카드 분할되지 않은 하나의 호스트 링크 활성 레인 그룹에 배선된 소켓만 열거할 수 있습니다 사용하지 않는 소켓은 남은 물리적 레인에서 대역폭을 얻지 못합니다
호환 가능한 분기화가 있는 수동 카드 지원되는 분할 모드 및 일치하는 레인 배선 각 SSD는 자체 호스트 생성 링크에서 트레이닝합니다 각 드라이브는 할당된 링크 폭과 세대에 의해 제한됩니다
PCIe 스위치가 있는 어댑터 하나의 사용 가능한 업스트림 링크; 호스트 분기화는 보통 필요하지 않습니다 스위치는 하나의 업스트림 연결 뒤에 별도의 다운스트림 포트를 노출합니다 동시 SSD 트래픽은 스위치의 업스트림 대역폭을 공유합니다

Broadcom의 PEX 8612 문서는 하나의 업스트림 연결과 여러 다운스트림 포트를 가진 구체적인 스위치 예시를 제공합니다. 정확한 칩과 포트 폭은 카드마다 다르지만, 아키텍처적 구분은 유지됩니다: 스위치는 팬아웃을 생성하며, 수동 보드는 호스트가 이미 나눈 레인만 연결합니다.

풀 길이 슬롯이 16개의 사용 가능한 레인을 보장하지는 않습니다

기계적 슬롯 길이와 전기적 레인 수는 서로 다른 특성입니다. 물리적으로 x16 카드를 수용하는 커넥터라도 x8, x4, 또는 심지어 x1로 배선될 수 있습니다. 컴팩트 시스템에서는 두 번째 풀 길이 슬롯이 CPU가 아닌 칩셋에서 레인을 얻거나 다른 M.2 소켓, 네트워크 컨트롤러, 확장 슬롯과 레인을 공유할 수 있습니다.

이는 사용 가능한 분기 모드와 연결할 수 있는 드라이브 수 모두를 변경합니다. x4 전기 슬롯은 어댑터에 소켓이 네 개 있다고 해서 네 개의 독립적인 x4 링크를 제공할 수 없습니다. NVM Express 조직은 M.2가 최대 x4 PCIe 링크를 지원할 수 있다고 언급합니다; x4는 일반적인 완전 성능 연결이며, 모든 호스트 슬롯이 설치된 모든 SSD에 네 개의 레인을 제공한다는 약속은 아닙니다.

펌웨어는 플랫폼이 사용할 수 있는 분기 모드를 결정합니다

분기 설정은 PCIe 레인 구성, 슬롯 구성 또는 명시적인 x8/x8 또는 x4/x4/x4/x4 옵션 등의 이름으로 나타날 수 있습니다. 사용 가능한 메뉴는 플랫폼별로 다릅니다. CPU는 충분한 레인을 가질 수 있지만 마더보드가 해당 슬롯에 필요한 그룹을 라우팅하지 않거나, 하드웨어는 펌웨어가 노출하지 않는 토폴로지를 지원할 수 있습니다.

펌웨어 업데이트는 일부 플랫폼에서 지원을 추가하거나 수정할 수 있지만, 하드웨어에 없는 레인 배선이나 컨트롤러 기능을 생성할 수는 없습니다. 정확한 CPU, 슬롯, BIOS 버전에 대한 권위 있는 출처는 마더보드 또는 홈 서버 매뉴얼입니다. “PCIe Gen3가 분기를 지원한다”는 일반적인 설명은 특정 루트 포트가 어떻게 라우팅되거나 구성되는지를 결정하지 않으므로 불충분합니다.

누락된 드라이브가 PCI 열거 중에 사라짐

부팅 시, 플랫폼 펌웨어와 운영 체제는 토폴로지를 탐색하고 구성 공간을 읽어 PCI 장치를 발견합니다. 리눅스 커널 문서는 호스트 브리지 아래의 장치는 표준 PCI 열거를 통해 찾을 수 있다고 설명합니다. NVMe 드라이버는 해당 PCI 엔드포인트가 발견되고 자원이 할당된 후에만 연결할 수 있습니다.

이것은 결함 경계를 찾습니다. 추가 SSD가 PCI 장치 트리에서 없으면 파티션, RAID 설정, 파일 시스템 또는 NAS 저장 풀 소프트웨어를 변경해도 이를 확인할 수 없습니다. 모든 SSD가 PCI 엔드포인트로 나타나지만 하나가 저장 인터페이스에서 누락된 경우, 조사는 분기(bifurcation)를 넘어 NVMe 드라이버, 장치 상태 또는 저장 구성으로 이동합니다.

모든 SSD가 나타난 후에도 링크 폭은 성능을 변경합니다.

성공적인 열거가 각 드라이브의 전체 처리량을 보장하지는 않습니다. x4/x4/x4/x4로 작동하는 4드라이브 카드는 각 SSD에 토폴로지가 드라이브당 더 적은 레인을 할당하는 경우보다 더 넓은 독립 링크를 제공합니다. PCIe 세대도 레인당 사용 가능한 대역폭을 변경하므로 링크 폭과 세대를 함께 확인해야 합니다.

스위치 기반 어댑터는 다른 한계를 도입합니다. 여러 다운스트림 SSD가 가벼운 사용 시 개별적으로 빠르게 보일 수 있지만, 동시 전송은 업스트림 링크로 집중됩니다. NVM Express의 NVMe RAID 및 업링크 병목 현상에 관한 설명은 여러 개의 x4 SSD가 좁은 공유 연결을 포화시킬 수 있는 이유를 설명합니다.

다른 NVMe 감지 실패는 분기 누락과 유사할 수 있습니다.

여러 개 대신 한 개의 드라이브만 보인다면 패시브 어댑터의 토폴로지 불일치를 강하게 시사하지만 확실한 것은 아닙니다. 레인 공유 규칙이 다른 커넥터가 장착되면 슬롯을 비활성화할 수 있고, 특정 슬롯은 설치된 CPU와 함께 비활성일 수 있으며, 어댑터의 소켓-레인 매핑이 드라이브를 특정 순서로 설치해야 할 수도 있습니다.

폼 팩터도 중요합니다. M.2는 물리적 모듈과 커넥터 계열을 의미하며, 모든 M.2 드라이브가 NVMe를 사용하는 것은 아닙니다. SATA M.2 SSD는 PCIe 신호만 전달하는 소켓에서 작동할 수 없습니다. 부적절한 장착, 펌웨어에서 강제로 설정된 지원되지 않는 PCIe 세대, 불충분한 냉각, 또는 SSD 고장은 추가적인 감지 또는 안정성 문제를 일으킬 수 있습니다.

다중 NVMe 구성을 해석하기 전에 PCIe 레인 맵을 읽으세요.

슬롯에 인쇄된 숫자보다 토폴로지부터 시작하세요. 슬롯의 전기적 폭, CPU 또는 칩셋 소스, 지원되는 분기 모드, 레인 공유 규칙, 어댑터의 아키텍처를 식별하세요. 그런 다음 의도된 SSD 엔드포인트 수와 실제로 사용 가능한 독립 링크 또는 다운스트림 스위치 포트를 비교하세요.

  • 어댑터가 패시브인지 PCIe 스위치를 포함하는지 확인하세요.
  • 슬롯의 물리적 길이보다 전기적 레인 수를 확인하세요.
  • 해당 슬롯과 CPU가 지원하는 정확한 분할 모드를 확인하세요.
  • 온보드 M.2, SATA, 네트워크 및 기타 PCIe 장치의 공유 레인 규칙을 검토하세요.
  • 별도의 PCI 엔드포인트 열거를 이후 NVMe 및 스토리지 풀 감지와 분리하세요.
  • 모든 SSD가 나타난 후 협상된 링크 폭과 세대를 확인하세요.

이 접근법은 모든 어댑터가 동일하게 작동한다고 가정하지 않고 용량과 성능을 모두 설명합니다. 다른 홈 서버 확장 경로를 평가하는 독자는 이 PCIe 대 USB 확장 비교를 보조 자료로 사용할 수 있습니다; bifurcation 결정 자체는 여전히 플랫폼과 어댑터 토폴로지에 따라 달라집니다.

자주 묻는 질문

모든 다중 NVMe 어댑터가 PCIe Bifurcation을 필요로 합니까?

아니요. 수동 어댑터는 자체적으로 다운스트림 포트를 생성하지 않기 때문에 일반적으로 호스트 bifurcation과 호환되어야 합니다. 온보드 PCIe 스위치가 있는 카드의 경우 메인보드 bifurcation 없이도 하나의 업스트림 링크를 통해 여러 SSD 엔드포인트를 노출할 수 있지만, 그 드라이브들은 해당 업링크를 공유합니다.

BIOS 업데이트로 PCIe Bifurcation을 추가할 수 있습니까?

CPU 컨트롤러와 메인보드 라우팅이 이미 이를 지원할 때 bifurcation 옵션을 노출하거나 수정할 수 있습니다. 펌웨어 업데이트는 물리적 레인을 추가하거나 보드 배선 방식을 변경하거나 지원되지 않는 루트 포트 분할을 가능하게 할 수 없습니다.

왜 네 개 슬롯 어댑터에 NVMe 드라이브가 하나만 나타납니까?

일반적인 설명은 수동 어댑터가 여전히 하나의 PCIe 링크로 구성된 슬롯에 설치되어 활성 레인 그룹에 연결된 소켓만 성공적으로 트레이닝된다는 것입니다. 슬롯 배선, 장착 순서, 공유 레인, 호환되지 않는 M.2 드라이브 유형 또는 장치 고장은 bifurcation이 입증되기 전에 여전히 제외되어야 합니다.

PCIe Bifurcation이 NVMe 드라이브를 RAID로 결합합니까?

아니요. Bifurcation은 독립적인 PCIe 링크를 생성하여 호스트가 별도의 엔드포인트를 열거할 수 있게 합니다. RAID 또는 다른 스토리지 풀링 계층은 이후 펌웨어, 운영 체제 또는 스토리지 소프트웨어에서 구성됩니다. 네 개의 드라이브를 감지하는 것과 네 개의 드라이브를 결합하는 것은 별개의 작업입니다.

기술 및 AI 허브

더 읽어보기

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.