Проброс физического диска в виртуальную машину Proxmox чаще всего требуется, когда внутри ВМ работает TrueNAS, Nextcloud или медиасервер, которым нужен прямой доступ к SMART и полный контроль над накопителем без прослойки виртуального диска. Если подключить диск обычным образом через веб-интерфейс, гостевая система увидит лишь виртуальный том и потеряет доступ к атрибутам здоровья диска — именно поэтому используется passthrough.
В Proxmox VE нет кнопки «пробросить диск» в графическом интерфейсе: операция выполняется через команду qm set в консоли гипервизора. Ниже разберём два рабочих способа — проброс отдельного диска целиком и проброс HBA-контроллера через PCI, а также типичные ошибки и способы их диагностики.
Подготовка: определяем нужный диск
Первое действие — точно идентифицировать накопитель, который пойдёт в виртуальную машину. Ошибка на этом этапе может привести к пробросу системного диска гипервизора и потере данных. Надёжнее всего использовать стабильные идентификаторы из каталога /dev/disk/by-id/, а не имена вида /dev/sdb, которые могут меняться после перезагрузки.
ls -l /dev/disk/by-id/
В выводе ищите строки формата ata-МодельДиска_СерийныйНомер или wwn-0x.... Именно серийный номер позволяет однозначно связать запись с физическим устройством — сверьте его с наклейкой на диске или с выводом smartctl -i /dev/sdX.
- 🔍 Проверьте, что диск не смонтирован и не входит в состав ZFS-пула или LVM на хосте.
- 📋 Запишите полный путь вида
/dev/disk/by-id/ata-...— он понадобится для команды проброса. - 🧱 Убедитесь, что на диске нет раздела, используемого Proxmox (проверить можно через
lsblk). - 💾 Сделайте резервную копию данных, если на накопителе есть что-то важное.
⚠️ Внимание: проброшенный диск нельзя одновременно использовать на хосте. Если накопитель входит в пул хранилища Proxmox, сначала выведите его из пула, иначе возможны конфликты и повреждение данных.
Способ 1: проброс диска через qm set
Основной метод — привязка физического устройства к ВМ как виртуального диска с прямым доступом. Выполняется одной командой на хосте, где 101 — ID виртуальной машины, а scsi1 — свободный слот подключения:
qm set 101 --scsi1 /dev/disk/by-id/ata-WDC_WD40EFRX-68N32N0_WD-WCC7KXXXXXXX
Тип интерфейса выбирайте осознанно. Вариант scsi с контроллером VirtIO SCSI обычно предпочтительнее: он поддерживает передачу SMART-команд в гостевую систему и горячее отключение. Вариант sata эмулирует контроллер SATA и тоже подходит, а virtio (blk) — самый быстрый, но может ограничивать доступ к SMART в зависимости от гостевой ОС.
Если ВМ уже работает, диск добавится «на горячую», но надёжнее остановить машину, выполнить qm set и запустить её заново — так исключаются ошибки инициализации устройства.
После выполнения команды проверьте конфигурацию: qm config 101. В выводе должна появиться строка с указанием пути к диску. Внутри гостевой системы накопитель появится как новое блочное устройство — для Linux-гостей это видно через lsblk или dmesg.
☑️ Проброс диска — порядок действий
Способ 2: проброс HBA-контроллера через PCI passthrough
Когда в ВМ нужно передать не один диск, а целую группу накопителей (типичный сценарий для TrueNAS в виртуалке), правильнее пробрасывать сам HBA-контроллер или SATA-контроллер целиком. Тогда гостевая система получает полный низкоуровневый доступ ко всем подключённым к нему дискам, включая SMART и управление питанием.
Для этого на хосте должны быть включены IOMMU (Intel VT-d или AMD-Vi) в BIOS/UEFI и в загрузчике. Для Intel в параметры ядра добавляется intel_iommu=on, для AMD — amd_iommu=on. После правки GRUB или systemd-boot требуется обновить конфигурацию загрузчика и перезагрузить хост. Точный синтаксис зависит от того, используется ли у вас GRUB или systemd-boot (при установке на ZFS обычно второй вариант) — сверяйтесь с официальной документацией Proxmox для вашей версии.
dmesg | grep -e DMAR -e IOMMU
Если IOMMU активен, найдите PCI-адрес контроллера через lspci и пробросьте его командой вида qm set 101 --hostpci0 03:00.0. Учтите, что устройства в одной IOMMU-группе могут тянуться за собой соседние — это зависит от конкретной материнской платы.
Сравнение способов подключения
| Способ | SMART в госте | Количество дисков | Сложность настройки |
|---|---|---|---|
| qm set + scsi (VirtIO SCSI) | Да, обычно доступен | Один диск на слот | Низкая |
| qm set + sata | Обычно доступен | Один диск на слот | Низкая |
| qm set + virtio-blk | Может быть ограничен | Один диск на слот | Низкая |
| PCI passthrough контроллера | Полный доступ | Все диски контроллера | Средняя/высокая |
Для одного-двух дисков достаточно qm set с интерфейсом scsi. Для NAS-виртуалки с массивом дисков правильнее пробрасывать HBA-контроллер через PCI passthrough.
Типичные ошибки и их диагностика
Наиболее частая жалоба — ВМ не стартует после проброса с ошибкой доступа к устройству. Возможная причина: диск занят хостом (смонтирован или входит в пул), либо указан путь /dev/sdX, который после перезагрузки указывает уже на другое устройство. Проверьте lsblk и zpool status на хосте, затем замените путь на стабильный из /dev/disk/by-id/.
Вторая распространённая ситуация — диск виден в госте, но smartctl выдаёт ошибку. Здесь проверьте тип контроллера: переключите слот с virtio на scsi и убедитесь, что в настройках ВМ выбран контроллер VirtIO SCSI single. Для Windows-гостей потребуются драйверы virtio-win, без них диск вообще не определится.
⚠️ Внимание: после проброса диска существующие снапшоты ВМ могут перестать работать для этого тома — passthrough-диски не поддерживают снапшоты средствами Proxmox. Планируйте резервное копирование таких данных отдельно, например через Proxmox Backup Server с исключением диска или средствами самой гостевой ОС.
Почему нельзя использовать /dev/sdb напрямую
Имена sdX назначаются ядром в порядке обнаружения устройств и могут поменяться после добавления нового диска или перезагрузки. После смены имени ВМ получит чужой диск или не стартует вовсе. Идентификаторы в /dev/disk/by-id/ привязаны к серийному номеру накопителя и остаются постоянными.
Производительность и тонкие настройки
При пробросе целого диска накладные расходы виртуализации минимальны — гостевая система работает с накопителем почти напрямую. Тем не менее есть параметры, которые стоит проверить. Опция discard=on актуальна для SSD и включает проброс TRIM, а ssd=1 сообщает гостю, что диск твердотельный. Для HDD эти параметры не нужны.
qm set 101 --scsi1 /dev/disk/by-id/ata-...,discard=on,ssd=1
Кэширование при passthrough обычно оставляют в значении по умолчанию (Default / No cache). Принудительное включение writeback-кэша на хосте для проброшенного диска повышает риск потери данных при аварийном отключении питания и оправдано только при наличии ИБП и понимании рисков.
- ⚡ Для SSD добавьте
discard=on,ssd=1— гость сможет отправлять TRIM. - 🌡️ Следите за температурой дисков: при passthrough хост перестаёт видеть SMART, мониторинг переносится в гостевую систему.
- 🔌 Убедитесь, что сервер подключён к ИБП, если отключаете защитные механизмы кэширования.
Мониторинг SMART проброшенных дисков удобно настроить прямо в гостевой ОС через smartd — хост после проброса не имеет доступа к этим накопителям и не сможет предупредить о деградации.
Как отключить проброшенный диск или контроллер
Откат изменений выполняется так же просто: команда qm set 101 --delete scsi1 убирает привязку диска из конфигурации ВМ. Сам физический накопитель при этом не затрагивается — данные на нём сохраняются. Для PCI-устройства аналогично: qm set 101 --delete hostpci0.
После удаления PCI passthrough может потребоваться перезагрузка хоста, чтобы устройство корректно вернулось под управление драйверов Proxmox. Также не забудьте убрать лишние параметры IOMMU из загрузчика, если проброс контроллера больше не нужен.
Любой проброс в Proxmox обратим: qm set --delete возвращает конфигурацию в исходное состояние без потери данных на физическом диске.
Часто задаваемые вопросы
Можно ли пробросить диск в работающую ВМ без перезагрузки?
Да, для интерфейсов scsi и virtio поддерживается горячее подключение — диск появится в гостевой системе сразу. Однако при проблемах с определением устройства надёжнее перезапустить ВМ. PCI passthrough контроллера всегда требует остановки виртуальной машины.
Почему в гостевой системе не работает SMART?
Возможные причины: используется интерфейс virtio-blk вместо scsi, либо контроллер ВМ настроен не как VirtIO SCSI. Переключите слот диска на scsi и проверьте тип контроллера в настройках ВМ. Для гарантированного полного доступа к SMART используйте проброс HBA-контроллера через PCI.
Можно ли пробросить только один раздел диска?
Технически можно указать путь к разделу (например, из /dev/disk/by-partuuid/), но такой подход не рекомендуется: гостевая система получит устройство без полноценного доступа к таблице разделов и SMART. Стандартная практика — проброс диска целиком.
Поддерживаются ли снапшоты для проброшенных дисков?
Нет, passthrough-диски исключаются из механизма снапшотов Proxmox. Резервное копирование данных на таких накопителях организуйте средствами гостевой ОС или внешними инструментами.
Что делать, если ВМ не стартует с ошибкой IOMMU-группы?
Это означает, что пробрасываемое PCI-устройство делит IOMMU-группу с другими устройствами. Варианты: пробросить все устройства группы в ту же ВМ, переставить контроллер в другой слот PCIe (разводка групп зависит от материнской платы) или проверить настройки ACS в BIOS. Точное поведение зависит от вашей аппаратной платформы.