Varför saknar en hemserver NVMe-enheter utan PCIe-bifurkation?

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

En hemserver kan bara upptäcka en SSD på en multi-NVMe-adapter när kortet passivt kopplar flera M.2-kontakter till en PCIe-plats men plattformen exponerar den platsen som en enda länk. Den första enheten kan etablera en länk, medan de andra enheterna saknar en oberoende nedströmsanslutning för firmware och operativsystem att enumerera.

PCIe-bifurkation löser detta för kompatibla passiva adaptrar genom att dela upp en bred rotportsanslutning i flera smalare länkar, till exempel x16 som blir x4/x4/x4/x4. Det krävs inte för varje multi-NVMe-kort: en adapter med en inbyggd PCIe-switch kan skapa egna nedströmsportar, även om varje enhet då delar kortets uppströmslänk.

En osplittrad PCIe-länk kan inte exponera alla enheter på en passiv adapter

En passiv multi-NVMe-adapter beter sig inte som en lagringskontroller som kombinerar flera SSD:er bakom ett enhetsgränssnitt. Den leder främst bangrupper, referensklockor, återställningssignaler och ström mellan kantkontakten och separata M.2-kontakter. Varje NVMe SSD förblir sin egen PCIe-endpoint och behöver en användbar länk in i värdens topologi.

Om rotporten förblir konfigurerad som en bred länk har värden inte skapat separata logiska länkar för varje kontakt på det passiva kortet. En SSD kan visas medan de andra saknas innan en NVMe-drivrutin eller filsystem blir relevant. Därför är symtomet vanligtvis ”endast en enhet upptäckt”, inte fyra enheter med reducerad kapacitet.

PCIe-bifurkation skapar flera länkar från en fysisk plats

Bifurkation ändrar portkonfigurationen på CPU- eller chipset-sidan. En fysisk x16-anslutning kan delas upp i två x8-länkar, en x8 plus två x4-länkar eller fyra x4-länkar när plattformen stödjer dessa lägen. Varje resulterande länk kan kopplas till en annan enhet på adaptern.

Delningen utförs inte av operativsystemet efter uppstart. Den beror på processorens PCIe-kontroller, moderkortets ledningsdragning och plattformsfirmware. ASUS officiella PCIe-bifurkationskompatibilitetsguide visar att antalet M.2-enheter som ett kort kan exponera varierar med moderkort, CPU, plats och banallokering.

Passiva och switchbaserade NVMe-adaptrar bygger olika PCIe-topologier

Två kort kan ha samma antal M.2-kontakter men ställa mycket olika krav på värden. Ett passivt kort är beroende av root complex för att tillhandahålla flera länkar. Ett switchbaserat kort presenterar en uppströmsport till värden och skapar flera nedströmsportar för SSD:erna.

Adaptertopologi Krav från värdsidan Hur SSD:er blir synliga Bandbreddsgräns
Passivt kort utan bifurkation En odelad värdlänk Endast kontakten kopplad till den aktiva bangruppen kan enumereras Oanvända kontakter får inte bandbredd från de återstående fysiska banorna
Passivt kort med kompatibel bifurkation Stödd delningsläge och matchande banuppkoppling Varje SSD tränar på sin egen värdskapade länk Varje enhet begränsas av sin tilldelade länkbredd och generation
Adapter med PCIe-switch En användbar uppströmslänk; värdbifurkation krävs vanligtvis inte Switchen exponerar separata nedströmsportar bakom en uppströmsanslutning Samtidig SSD-trafik delar switchens uppströmsbandbredd

Broadcoms PEX 8612-dokumentation ger ett konkret exempel på en switch med en uppströmsanslutning och flera nedströmsportar. Den exakta chip- och portbredden varierar beroende på kort, men den arkitektoniska skillnaden kvarstår: en switch skapar förgrening; ett passivt kort kopplar bara banor som värden redan har delat upp.

En fullängdsplats garanterar inte sexton användbara banor

Mekanisk platslängd och elektriskt antal banor är olika egenskaper. En kontakt som fysiskt accepterar ett x16-kort kan vara kopplad som x8, x4 eller till och med x1. På kompakta system kan en andra fullängdsplats få banor från chipset istället för direkt från CPU:n, eller dela dem med en annan M.2-kontakt, nätverkskontroller eller expansionsplats.

Detta ändrar både de tillgängliga bifurkationslägena och antalet enheter som kan anslutas. En x4 elektrisk plats kan inte leverera fyra oberoende x4-länkar bara för att adaptern har fyra uttag. NVM Express-organisationen noterar att M.2 kan stödja upp till en x4 PCIe-länk; x4 är en vanlig fullprestandaanslutning, inte ett löfte om att varje värdplats tillhandahåller fyra lanes till varje installerad SSD.

Firmware bestämmer vilka bifurkationslägen plattformen kan använda

Bifurkationsinställningar kan visas under namn som PCIe lane-konfiguration, slot-konfiguration eller ett explicit x8/x8 eller x4/x4/x4/x4-alternativ. Den tillgängliga menyn är plattformspecifik. En CPU kan ha tillräckligt med lanes medan moderkortet inte leder de nödvändiga grupperna till den platsen, eller så kan hårdvaran stödja en topologi som firmwaren inte exponerar.

En firmwareuppdatering kan lägga till eller korrigera stöd på vissa plattformar, men den kan inte skapa lane-kopplingar eller kontrollerfunktioner som hårdvaran saknar. Den auktoritativa källan är moderkortets eller hemserverns manual för exakt CPU, plats och BIOS-version. Ett generellt påstående att ”PCIe Gen3 stöder bifurkation” är otillräckligt eftersom PCIe-generationen inte fastställer hur en viss root-port är kopplad eller konfigurerad.

De saknade enheterna försvinner under PCI-enumeration

Vid uppstart upptäcker plattformsfirmware och operativsystem PCI-enheter genom att traversera topologin och läsa konfigurationsutrymmet. Linux-kärndokumentation förklarar att enheter under en värdbrygga kan hittas genom standard PCI-enumeration. En NVMe-drivrutin kan bara ansluta efter att motsvarande PCI-endpunkt har upptäckts och tilldelats resurser.

Detta lokaliserar felgränsen. Om de extra SSD:erna saknas i PCI-enhetsträdet kan inte ändringar av partitioner, RAID-inställningar, filsystem eller NAS-lagringspoolprogramvara avslöja dem. Om varje SSD visas som en PCI-endpunkt men en saknas från lagringsgränssnittet, går undersökningen vidare från bifurkation till NVMe-drivrutinen, enhetens hälsa eller lagringskonfiguration.

Länkbredden påverkar prestandan även efter att varje SSD har identifierats.

Lyckad enumerering garanterar inte full genomströmning per enhet. Ett kort med fyra enheter som körs som x4/x4/x4/x4 ger varje SSD en bredare oberoende länk än en topologi som tilldelar färre banor per enhet. PCIe-generationen ändrar också bandbredden per bana, så länkbred och generation måste läsas tillsammans.

En switchbaserad adapter introducerar en annan begränsning. Flera nedströms SSD:er kan vara synliga och individuellt snabba vid lätt användning, men samtidiga överföringar samlas på uppströmslänken. NVM Express diskussion om NVMe RAID och uppströmsflaskhalsar förklarar varför flera x4 SSD:er kan mätta en smalare delad anslutning.

Andra fel vid NVMe-detektering kan likna saknad bifurkation.

Att se en enhet istället för flera tyder starkt på en topologimissmatch på en passiv adapter, men det är inte avgörande. En regel för delning av banor kan inaktivera en plats när en annan kontakt är upptagen, en viss plats kan vara inaktiv med den installerade CPU:n, eller adapterens mappning från sockel till bana kan kräva att enheter installeras i en specifik ordning.

Formfaktorn spelar också roll. M.2 beskriver en fysisk modul och kontaktfamilj; det betyder inte att varje M.2-enhet använder NVMe. En SATA M.2 SSD kan inte fungera i en sockel som bara bär PCIe-signaler. Dålig anslutning, en icke stödd PCIe-generation tvingad i firmware, otillräcklig kylning eller en trasig SSD kan skapa ytterligare detekterings- eller stabilitetssymptom.

Läs PCIe-banekartan innan du tolkar en multi-NVMe-konfiguration.

Börja med topologin snarare än numret som står på platsen. Identifiera platsens elektriska bredd, dess CPU- eller chipsetkälla, stödda bifurkationslägen, regler för delning av banor och adapterarkitekturen. Jämför sedan det avsedda antalet SSD-slutpunkter med de oberoende länkarna eller nedströms switchportarna som faktiskt finns tillgängliga.

  • Bekräfta om adaptern är passiv eller innehåller en PCIe-switch.
  • Kontrollera platsens elektriska lane-antal snarare än dess fysiska längd.
  • Verifiera exakt vilken split-läge som stöds för den platsen och CPU:n.
  • Granska regler för delade lanes för inbyggda M.2, SATA, nätverk och andra PCIe-enheter.
  • Separera PCI-ändpunktens enumerering från senare NVMe- och lagringspooldetektion.
  • Kontrollera förhandlad länkbredd och generation efter att varje SSD dyker upp.

Detta tillvägagångssätt förklarar både kapacitet och prestanda utan att anta att varje adapter fungerar på samma sätt. Läsare som utvärderar andra expansionsvägar för hemservrar kan använda denna jämförelse mellan PCIe och USB-expansion som kompletterande kontext; bifurkationsbeslutet beror fortfarande på plattform och adaptertopologi.

Vanliga frågor

Kräver varje multi-NVMe-adapter PCIe Bifurkation?

Nej. Passiva adaptrar kräver normalt kompatibel värdbifurkation eftersom de inte själva skapar nedströmsportar. Ett kort med en inbyggd PCIe-switch kan exponera flera SSD-ändpunkter genom en uppströmslänk utan moderkortsbifurkation, även om dess enheter delar den uppkopplingen.

Kan en BIOS-uppdatering lägga till PCIe Bifurkation?

Det kan exponera eller fixa ett bifurkationsalternativ när CPU-kontrollern och moderkortets routing redan stödjer det. En firmwareuppdatering kan inte lägga till fysiska lanes, ändra hur kortet är kopplat eller göra en icke-stödd root-port-split möjlig.

Varför visas bara en NVMe-enhet på en adapter med fyra platser?

Den vanliga förklaringen är att en passiv adapter är installerad i en plats som fortfarande är konfigurerad som en PCIe-länk, så endast sockeln som är ansluten till den aktiva lane-gruppen tränar framgångsrikt. Platsens ledningsdragning, ordning för befolkning, delade lanes, inkompatibel M.2-enhetstyp eller enhetsfel bör fortfarande uteslutas innan bifurkation betraktas som bevisad.

Kombinerar PCIe Bifurkation NVMe-enheter till RAID?

Nej. Bifurkation skapar oberoende PCIe-länkar så att värden kan enumerera separata ändpunkter. RAID eller ett annat lagringspoolingslager konfigureras därefter i firmware, ett operativsystem eller lagringsprogramvara. Att upptäcka fyra enheter och att kombinera fyra enheter är separata operationer.

Teknik- och AI-hubb

Mer att läsa

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.