Proxmox
December 25, 2024

Обход ограничения SATA контроллера в Proxmox для XPEnology

У меня на хосте с Proxmox есть пачка SATA и NVME дисков. Так же есть ВМ XPEnology, в которой уже занято 6 виртуальных sata (sata0-sata5).

В этой статье я расскажу как обойти ограничение виртуального SATA контроллера и прокинуть физически весь диск до ВМ.

Моя конфигурация выглядит так:

Пробовал добавлять VIRTIO и SCSI девайсы, но DSM их не определяет.

Находим целевые диски

ls -l /dev/disk/by-id

Останавливаем ВМ. Открываем конфиг ВМ и редактируем строку.

Замени номер ВМ на свою, в данном примере 110.
nano /etc/pve/qemu-server/110.conf

Я буду добавлять 2 диска. На текущем этапе они вайпнуты с разметкой GPT. После добавления их в SHR разметка изменится и в Proxmox это отобразится.

Обращаю внимание, что в конфиг ВМ args добавляется одной строкой. В мануале указал с отступами и абзацами для удобства восприятия (должны быть только пробелы). Добавляем в конец конфига со своими правками:

args: -device ahci,id=ahci1,multifunction=on,bus=pci.0,addr=0xb 
      -drive file=/dev/disk/by-id/ata-ST2000DL003-9VT166_5YD616J8,if=none,id=drive-sata6,format=raw,aio=threads,detect-zeroes=unmap 
      -device ide-hd,bus=ahci1.1,drive=drive-sata6,id=sata6 
      -drive file=/dev/disk/by-id/ata-ST2000DM001-1CH164_S1E1D5T7,if=none,id=drive-sata7,format=raw,aio=threads,detect-zeroes=unmap 
      -device ide-hd,bus=ahci1.2,drive=drive-sata7,id=sata7

Пояснение:

  • -device ahci: Создаёт контроллер AHCI.
    • id=ahci1: Уникальный идентификатор контроллера.
    • multifunction=on: Разрешает подключение нескольких устройств.
    • bus=pci.0,addr=0xb: Указывает на PCI-шину ВМ.
  • Первый диск:
    • Привязывается через -drive с параметром file=/dev/disk/by-id/ata-ST2000DL003-9VT166_5YD616J8.
    • Подключается к первому порту контроллера ahci1 через -device ide-hd.
  • Второй диск:
    • Привязывается через -drive с параметром file=/dev/disk/by-id/ata-ST2000DM001-1CH164_S1E1D5T7.
    • Подключается ко второму порту контроллера ahci1 через -device ide-hd.

Должно получиться так:

Ctrl+X, Y, Enter

Запускаем ВМ и смотрим чтобы не было ошибок при старте

qm start 110

Видим, что диски 6 и 7 добавлены.

Создаем новый пул

Я обратил внимание не сразу, но после рестарта DSM или спустя некоторое время разметка дисков обновилась в дисках Proxmox, что в целом логично.

Если вам нужно подключить больше 6 устройств к ВМ с использованием AHCI:

1. Добавьте дополнительные контроллеры AHCI:
Вы можете добавить ещё один контроллер AHCI (например, ahci2) через параметры args в конфигурации виртуальной машины.

2. Пример конфигурации с двумя контроллерами AHCI:

args: -device ahci,id=ahci1,multifunction=on,bus=pci.0,addr=0xb
      -device ahci,id=ahci2,multifunction=on,bus=pci.0,addr=0xc
      -drive file=/path/to/disk1.img,if=none,id=drive-sata0,format=raw
      -device ide-hd,bus=ahci1.0,drive=drive-sata0,id=sata0
      -drive file=/path/to/disk7.img,if=none,id=drive-sata7,format=raw 
      -device ide-hd,bus=ahci2.0,drive=drive-sata7,id=sata7

3. Ограничение на количество контроллеров:
Проблемы начнутся при превышении общего числа PCI-устройств, поддерживаемых QEMU для одной виртуальной машины. По умолчанию QEMU поддерживает до 32 PCI-устройств, включая виртуальные сетевые карты, видеокарты, и дисковые контроллеры, если мы не затрагиваем PCI bridges или перейти на архитектуру PCI Express, которая поддерживает большее количество устройств за счет иерархической структуры и расширенных возможностей адресации.

https://www.qemu.org/docs/master/devel/pci.html

http://onreader.mdl.ru/RHEL7/VirtualizationDeploymentAndAdministrationGuide/content/Ch17.html