Обход ограничения 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
. - Второй диск:
Запускаем ВМ и смотрим чтобы не было ошибок при старте
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