{ "meta": { "title": "Lägg till styrenhet eller NVMe i en VM | ProxMenux-dokumentation", "description": "PCI-passthrough av en lagringsstyrenhet (SATA/SAS-HBA) eller NVMe-enhet till en Proxmox-VM med ProxMenux. Hanterar aktivering av IOMMU, konfliktkontroll och tilldelning med qm set --hostpci.", "ogTitle": "Lägg till styrenhet eller NVMe i en VM | ProxMenux-dokumentation", "ogDescription": "Tilldela en hel SATA/SAS-HBA eller NVMe-enhet till en Proxmox-VM. ProxMenux hanterar IOMMU, konfliktkontroll och hostpci-tilldelningen." }, "header": { "title": "Lägg till styrenhet eller NVMe i en VM", "description": "Tilldela en hel SATA/SAS-värdbussadapter (HBA) eller NVMe-enhet till en Proxmox-VM via PCI-passthrough. ProxMenux kontrollerar IOMMU och aktiverar det med ditt samtycke, listar lämpliga enheter, filtrerar bort konflikter och konfigurerar tilldelningen med qm set --hostpci.", "section": "Diskhanterare · VM" }, "intro": { "title": "Vad detta gör (och inte) gör", "body": "Detta är passthrough på enhetsnivå: PCIe-kortet lämnar värdkärnans kontroll och binds till vfio-pci. VM:n ser själva styrenheten i stället för enskilt vidarebefordrade diskar och laddar sin egen drivrutin för modellen. Alla anslutna diskar följer automatiskt med, med inbyggda SMART-data, fullständiga firmwarefunktioner och utan ett Proxmox-lager emellan." }, "howRuns": { "heading": "Så körs skriptet", "body": "Flödet har två faser med tydlig separation mellan \"samla information, kontrollera IOMMU och lista kandidater\" och \"faktiskt fästa PCI-enheten\". Fram till den slutliga bekräftelsen skrivs ingenting till VM-konfig." }, "iommu": { "heading": "IOMMU-grupper – varför hela kortet lämnar samtidigt", "body": "Isoleringsgränsen för PCI-passthrough är IOMMU-gruppen, den minsta enhet som processorns IOMMU kan isolera. Enheter i samma grupp kan inte isoleras från varandra. Om en SATA-styrenhet delar grupp med en USB-styrenhet kan SATA-passthrough kräva att även USB frigörs från värden, eller hindra passthrough. Alla enheter i gruppen tilldelas inte automatiskt till VM:n.", "outro": "ProxMenux visar IOMMU-gruppen bredvid varje enhet och varnar dig när en grupp bär mer än bara den kontroller du vill ha. Du kan fortfarande fortsätta om de extra enheterna i gruppen är acceptabla (alla diskkontroller, till exempel), eller backa ut om de inte är det." }, "prereqs": { "heading": "Förutsättningar", "items": [ "Processor och moderkort stöder VT-d (Intel) eller AMD-Vi, och funktionen är aktiverad i firmware (BIOS/UEFI). ProxMenux kan aktivera kärnans inställning men inte ändra firmwareinställningen.", "Mål-VM:n är avstängd innan PCI-enheter ansluts.", "Controller/NVMe är inte den som innehar Proxmox root-filsystem. Skriptet döljer allt som används av värden.", "Gästoperativsystemet har drivrutiner för styrenhetens modell. Linux stöder praktiskt taget alla HBA:er direkt; Windows behöver tillverkarens drivrutin installerad innan du startar med styrenheten ansluten." ], "warnTitle": "Live migration är inte möjligt", "warnBody": "En VM med PCI-passthrough är knuten till noden där kortet sitter fysiskt. Livemigrering mellan noder misslyckas. Planera säkerhetskopiering och replikering därefter." }, "steps": { "heading": "Steg-för-steg", "stepLabel": "Steg", "list": [ { "title": "Välj mål-VM", "bodyRich": "ProxMenux läser qm list och visar alla VM:ar. Välj den som ska få styrenheten.", "img": "/disk/nvme-passthrough/vm-selection.png", "alt": "VM urvalsdialog", "caption": "VM urvalsdialog" }, { "title": "IOMMU-kontroll", "bodyRich": "Om IOMMU inte är aktiverat i kärnans kommandorad erbjuder ProxMenux att aktivera det. Skriptet redigerar /etc/kernel/cmdline för systemd-boot eller /etc/default/grub för GRUB och lägger till rätt parameter för din processor:", "items": [ "intel_iommu=on för Intel CPU.", "amd_iommu=on för AMD CPU." ], "outro": "En omstart krävs efter ändringen. Skriptet erbjuder omstart nu eller senare; passthrough kan inte fortsätta förrän kärnans nya kommandorad är aktiv.", "img": "/disk/nvme-passthrough/iommu-warning.png", "alt": "Dialogrutan IOMMU krävs", "caption": "IOMMU krävs: erbjudande om aktivering och omstart" }, { "title": "Enhetsuppräkning", "body": "ProxMenux listar varje lagringskontroll (SATA / SAS HBA) och varje NVMe-enhet på PCI-bussen. För varje enhet den visar:", "items": [ "PCI-adress (00:17.0, 01:00.0, ...).", "Leverantör / enhetsbeskrivning.", "IOMMU-grupp, med en ⚠-varning om gruppen delas med andra orelaterade enheter.", "Diskarna som är anslutna till styrenheten, så att du vet vilka som följer med till VM:n." ], "img": "/disk/nvme-passthrough/device-list.png", "alt": "Lista över styrenheter och NVMe-enheter", "caption": "Lista över styrenheter och NVMe-enheter med information om IOMMU-grupper" }, { "title": "Konfliktdetektering", "bodyRich": "Skriptet blockerar tydligt osäkra enheter: sådana som redan tilldelats en annan VM via hostpci i dess konfiguration, används av värden som styrenheten för rotdisken, eller ingår i en IOMMU-grupp vars övriga medlemmar inte kan identifieras säkert. Lämpliga enheter går att välja.", "img": "/disk/nvme-passthrough/conflict-warning.png", "alt": "Varning om upptäckt konflikt", "caption": "Konfliktdetektering - enhet blockerad med anledning" }, { "title": "Anslut och slutför", "bodyRich": "För varje vald enhet kör ProxMenux qm set <VMID> --hostpciN <pci-addr>,pcie=1 och väljer nästa lediga hostpci-plats. Om IOMMU aktiverades under sessionen påminns du om att starta om värden innan VM:n startas.", "img": "/disk/nvme-passthrough/assignment.png", "alt": "Tilldelningssammanfattning", "caption": "Tilldelningsöversikt: hostpciN-platser och anslutna PCI-adresser" } ] }, "manual": { "heading": "Manuell motsvarighet" }, "troubleshoot": { "heading": "Felsökning", "noGroupsTitle": "IOMMU aktiverade men inga grupper under /sys/kernel/iommu_groups/", "noGroupsBody": "En omstart krävs för att kärnans kommandorad ska börja gälla. Om grupperna fortfarande saknas efter omstart är VT-d/AMD-Vi troligen inaktiverat i firmware. Kontrollera BIOS/UEFI-inställningarna.", "busyTitle": "VM:n startar inte: \"hostpciN: device busy\"", "busyBody": "En annan process håller fortfarande PCI-enheten upptagen. Vanliga orsaker är en VM som kraschat utan att frigöra den eller att värdkärnan tog tillbaka den vid senaste starten. Kör lspci -nnk -s <addr> för att se den bundna drivrutinen; den bör vara vfio-pci. En fullständig omstart av värden brukar lösa problemet.", "noDisksTitle": "Gästen ser styrenheten men inte diskarna", "noDisksBody": "Gästen saknar drivrutin för styrenhetens modell. Det är ovanligt i Linux men förekommer i Windows: installera tillverkarens drivrutin, exempelvis LSI/Broadcom för äldre SAS-HBA:er, när kortet inte är tilldelat och starta sedan om med kortet tilldelat.", "sharedTitle": "IOMMU-gruppen innehåller en orelaterad enhet", "sharedBody": "Alternativ: (a) flytta kortet till en annan PCIe slot för att ändra sin grupp, (b) aktivera ACS override i kärnan för att dela grupper (säkerhet avvägning - forskning innan applicering), eller (c) välja ett annat kort i en renare grupp." }, "related": { "heading": "Relaterat", "items": [ { "href": "/docs/disk-manager/import-disk-vm", "label": "Importera disk till VM", "tail": " — alternativ: anslut en fysisk disk via Proxmox utan fullständig PCIe-passthrough." }, { "href": "/docs/hardware/gpu-vm-passthrough", "label": "Lägg till GPU till VM (Passthrough)", "tail": " - samma IOMMU / VFIO-koncept som tillämpas på en GPU." }, { "href": "/docs/help-info/gpu-commands", "label": "GPU Passthrough kommandon", "tail": " - IOMMU-verifieringskommandon gäller också för styrenhet / NVMe-genomgång." }, { "href": "/docs/disk-manager", "label": "Disk Manager översikt", "tail": "." } ] } }