• Друзья! Этот ресурс создан в далеком 2019 году ;) для себя, чтобы структурировать и всегда иметь под рукой нужные решения, примеры, ссылки, описания и т.д., а при случае все это обсудить с коллегами. Если вам что-то подобное может быть интересно – присоединяйтесь! Добавляйте свои заметки! Если нужны дополнительные разделы – сообщайте!

РЕШЕНО Переключение диска Windows 10 VM с SATA на SCSI (VirtIO-SCSI) в Proxmox VE 8.3.5

AndreyG

Активист
Цель: безопасно изменить тип подключения основного диска Windows 10 с SATA на SCSI (VirtIO-SCSI) при загрузке UEFI (OVMF), не нарушив загрузку системы, с минимальными изменениями конфигурации.

1. Подготовка: проверка драйверов и создание снапшота
Перед изменениями убедитесь, что в гостевой Windows установлен драйвер VirtIO-SCSI, и создайте снапшот VM для резервной копии состояния. Проверьте наличие драйвера VirtIO-SCSI в Windows: Запустите VM с текущим SATA-диском. В Windows откройте «Диспетчер устройств» и найдите контроллер "Red Hat VirtIO SCSI" (или аналогичный) в разделе контроллеров хранения. Если он отображается без ошибок – драйвер установлен. Если драйвера нет, установите его (например, подключив ISO с VirtIO-драйверами и обновив драйвер неизвестного SCSI-устройства). Этот шаг гарантирует, что Windows распознает SCSI-контроллер. Если SCSI устройства в системе нет -

Создайте снапшот VM: Остановите виртуальную машину (желательно выполнить штатное выключение Windows). Затем создайте снапшот через веб-интерфейс Proxmox или командой qm snapshot. Например, через GUI: перейдите на вкладку Snapshots (Снапшоты) вашей VM и нажмите Take Snapshot (Сделать снапшот), укажите имя (например, "before-scsi") и сохраните. Через CLI это можно сделать так (где <VMID> – ID вашей VM):
qm snapshot <VMID> before-scsi --description "Состояние перед переключением SATA->SCSI"
Убедитесь, что снапшот создан успешно, чтобы иметь возможность откатиться, если что-то пойдет не так.

2. Перевод Windows в безопасный режим (Safe Mode)
Чтобы Windows без ошибок приняла новый интерфейс диска, рекомендуется загрузить ее в безопасном режиме перед переключением. В безопасном режиме Windows подгружает универсальные драйверы диска, что предотвращает ошибку INACCESSIBLE_BOOT_DEVICE при смене контроллера. Включите безопасный режим через BCDedit: Запустите Windows 10 (диск пока подключен как SATA). В самой Windows откройте командную строку с правами администратора. Выполните команду:
bcdedit /set {default} safeboot network
Эта команда настроит загрузчик на загрузку Windows в безопасном режиме с поддержкой сети (параметр network можно заменить на minimal для обычного безопасного режима:
bcdedit /set {default} safeboot minimal
). Успешное выполнение команды не выдаст ошибок.
Перезагрузите Windows: Перезагрузите VM обычным способом. Windows должна загрузиться в безопасном режиме (вы увидите соответствующий минимальный интерфейс). Это проверяет, что команду BCDedit применили правильно.
Выключите (Shutdown) виртуальную машину: В безопасном режиме теперь выполните завершение работы Windows (через Пуск -> Завершение работы). Убедитесь, что VM полностью выключилась.
Теперь Windows готова к смене контроллера диска.

3. Изменение интерфейса диска с SATA на VirtIO-SCSI в конфигурации VM
Далее изменим конфигурацию VM в Proxmox, чтобы подключить существующий диск через SCSI-контроллер VirtIO вместо SATA. Это можно сделать через веб-интерфейс или командной строкой qm set. Ниже описаны оба подхода:
Через веб-интерфейс (GUI):
Добавьте контроллер SCSI (если его ещё нет): Откройте вкладку Hardware (Оборудование) вашей VM. Нажмите Add -> SCSI Controller (Добавить -> SCSI-контроллер). В появившемся окне выберите Model (Модель) = VirtIO SCSI (или VirtIO SCSI Single – в Proxmox 8.x контроллер VirtIO SCSI Single используется по умолчанию с включенным IO Thread). Нажмите Add для добавления. (Если контроллер SCSI уже присутствует в списке оборудования, этот шаг можно пропустить.)
Отсоедините диск от SATA: На той же вкладке Hardware найдите ваш диск, подключенный как SATA (например, SATA0). Щелкните по нему и нажмите Detach (Отсоединить). Подтвердите действие. Важно: не нажимайте Remove (Удалить) с опцией удаления с хранилища – нужно именно отсоединить, чтобы диск стал «Unused Disk». В результате диск появится в списке как Unused Disk 0 (неиспользуемый диск).
Подключите диск на SCSI-контроллер: Выделите появившийся Unused Disk и нажмите Edit или Attach. В параметрах подключения выберите Bus/Device (Шина/устройство) = SCSI0 (либо следующий свободный номер SCSI, если есть другие диски). Убедитесь, что контроллер SCSI выбран как VirtIO-SCSI. Сохраните изменения. Теперь диск должен отображаться как SCSI0 в списке оборудования.
Установите порядок загрузки: Перейдите во вкладку Options (Опции) VM. Найдите параметр Boot Order (Порядок загрузки). Убедитесь, что SCSI0 (новоподключенный диск) стоит первым в списке загрузочных устройств. Если нужно, отредактируйте Boot Order: переместите SCSI0 на первую позицию (и убедитесь, что UEFI/OVMF включен как BIOS). Сохраните настройки.
Через CLI (команда qm set):
Добавление SCSI-контроллера (если требуется): Можно явно указать тип контроллера SCSI командой (здесь <VMID> – ID VM):
qm set <VMID> --scsihw virtio-scsi-pci
Эта команда задаёт модели контроллера SCSI = VirtIO SCSI. (Если вы планируете включить IO Thread для диска, используйте virtio-scsi-single.)
Удаление SATA-диска из конфигурации: Найдите обозначение диска в конфиге. Например, через qm config <VMID> вы увидите строку sata0: <storage>:vm-<VMID>-disk-0,.... Выполните команду удаления устройства SATA из конфигурации:
qm set <VMID> -delete sata0
Эта команда удалит привязку SATA0 из конфигурации, не удаляя сам образ диска с хранилища.
Привязка диска к SCSI: Выполните команду для подключения этого же диска на SCSI0. Например:
qm set <VMID> -scsi0 <storage>:vm-<VMID>-disk-0
Замените <storage>:vm-<VMID>-disk-0 на точное имя вашего дискового образа и хранилища (то же самое, что было после sata0: в выводе qm config). После выполнения команды диск появится как scsi0 в конфиге VM. Убедитесь, что для scsi0 включен нужный кэш и флаги (по умолчанию кэш No cache, при необходимости можно добавить параметр --scsi0 <disk>,cache=writeback для лучшей производительности).
Задание порядка загрузки: Установите, чтобы VM загружалась с нового SCSI-диска. Командой:
qm set <VMID> --boot order=scsi0
После этой команды в конфиге VM появится строка boot: order=scsi0;ide2 (проверьте через qm config).
После этих действий конфигурация VM обновлена: основной диск подключен как VirtIO-SCSI (scsi0), и Proxmox добавил соответствующий контроллер VirtIO SCSI. Теперь можно запускать VM.

4. Запуск VM и проверка загрузки Windows
Стартуйте виртуальную машину: В веб-интерфейсе нажмите Start, либо выполните qm start <VMID> в CLI. VM начнет загрузку под UEFI с диска scsi0. Благодаря подготовке (установленному драйверу и безопасному режиму) Windows должна успешно обнаружить диск на новом контроллере.
Проверьте загрузку в безопасном режиме: Windows 10 загрузится в безопасном режиме (Safe Mode), как мы настроили ранее. Войдите в систему (под учетной записью администратора, если требуется).
Отключите режим Safe Mode: Теперь нужно вернуть обычный режим загрузки Windows. Снова откройте командную строку от администратора внутри Windows и выполните команду для удаления флага безопасного режима:
bcdedit /deletevalue {default} safeboot
Успешное выполнение этой команды отменит принудительную загрузку в Safe Mode.
Перезагрузите Windows: Через Пуск – Перезагрузка перезапустите VM. На этот раз Windows 10 будет загружаться обычно, уже используя SCSI-диск через VirtIO-SCSI контроллер. Следите за консолью: загрузка должна пройти без BSOD. Если система успешно загрузилась – вы достигли цели.
Проверка устройства в Windows: После входа в систему убедитесь, что диск C: функционирует нормально. В Диспетчере устройств теперь основной загрузочный диск работает через VirtIO SCSI контроллер (убедитесь, что нет ошибок). Windows могла переустановить устройство при первом запуске, но благодаря драйверам проблем возникнуть не должно. Для надёжности можно выполнить несколько перезагрузок и убедиться, что ошибок нет, а производительность диска возросла (VirtIO-SCSI обычно быстрее SATA и поддерживает TRIM).

5. Восстановление при неудаче (при необходимости)
Если по какой-то причине Windows не загрузилась (например, получили BSOD INACCESSIBLE_BOOT_DEVICE), вы можете вернуться на SATA в обратном порядке описанном выше.
Если и тогда что-то пойдет не так, то откатиться на снапшот:
Откат на снапшот: Выключите проблемную VM. В Proxmox на вкладке Snapshots выберите ранее созданный снапшот и нажмите Rollback (Откатиться). Подтвердите откат — VM вернётся к прежней конфигурации (диск снова будет SATA, а ОС – к прежнему состоянию). После отката вы можете повторить процедуру, проверив все шаги.

Также можно загрузиться с ISO Windows (режим восстановления) и попытаться установить драйвер VirtIO-SCSI через dism вручную, но использование снапшота проще и быстрее.


Следуя этой инструкции, вы безопасно смените интерфейс диска с SATA на VirtIO-SCSI на Proxmox VE 8.3.5. Этот метод минимизирует риск сбоев загрузки, так как мы подготовили ОС заранее. В результате Windows 10 будет загружаться через высокопроизводительный SCSI-контроллер VirtIO, что соответствует лучшим практикам Proxmox и обеспечивает поддержку функций, таких как DISCARD/Trim и более высокая скорость ввода-вывода.
 
Последнее редактирование:
Сверху