После последней перезагрузки виртуальной машины гостевая ОС Windows загружается только в режиме восстановления, при этом команды ниже, выполненные в консоли восстановления, показывают, что отсутствуют диски.
diskpart
list disk
До возникновения проблемы были установлены обновления KB5030214 и KB5030216 (или одно из них).
Обновление Windows KB5030214 нарушает код SeaBIOS, который обнаруживает загрузочные устройства Hyper-V, из-за чего гостевая ОС Windows не может обнаружить какие-либо диски и переходит в режим восстановления.
- Остановите виртуальную машину.
- Измените тип шины основного диска VM на IDE (выполнять команды нужно на узле Кибер Инфраструктуры, где активна роль Панель Управления):
- Проверьте и сохраните текущие настройки диска командами:
sudo -u postgres psql nova -c "select * from block_device_mapping" > bdm.bkp
sudo -u postgres psql nova -c "select * from block_device_mapping where instance_uuid='<VM_UUID>'" > bdm_VM.bkp
- Убедитесь, что есть только одна запись, а затем сохраните значение disk_bus:
sudo -u postgres psql nova -c "select disk_bus from block_device_mapping where instance_uuid='<VM_UUID>' and deleted=0"
Если результат выполнения запроса содержит более одной записи, НЕ ПРОДОЛЖАЙТЕ и обратитесь в службу технической поддержки.
- Измените тип шины на IDE:
sudo -u postgres psql nova -c "update block_device_mapping set disk_bus='ide' where instance_uuid='<VM_UUID>' and deleted=0"
- Запустите виртуальную машину.
- Войдите в консоль восстановления Windows, используя учетные данные администратора.
- Получите список установленных обновлений командой:
dism.exe /Image:D:\ /get-packages /format:table
- Найдите пакет с именем, заканчивающимся на 4851.1.5 (для Windows Server 2019) или 1970.1.61 (для Windows Server 2022).
- Удалите установленное обновление командой:
dism /image:D:\ /Remove-Package /PackageName:Package_for_RollupFix~31bf3856ad364e35~amd64~~17763.4851.1.5
- Выйдите из консоли восстановления и выключите виртуальную машину.
- Задайте диску тот тип шины, который был изначально, использовав ранее сохраненное значение disk_bus:
sudo -u postgres psql nova -c "update block_device_mapping set disk_bus='<BUS_VALUE>' where instance_uuid='<VM_UUID>' and deleted=0"
- Включите виртуальную машину.
Все команды, связанные с работой в БД вычислительного сервиса, необходимо выполнять на главном узле кластера управления, используя учетную запись с административными привилегиями.
Удаление обновления занимает значительное время (от часа и более). Рекомендуется не выключать и не перезагружать виртуальную машину в процессе удаления обновления.
1. Установите драйвер scsi с диска A (он всегда примонтирован к виртуальной машине) из среды восстановления Windows командой:
pnputil.exe /add-driver A:\Drivers\vioscsi\2k19\amd64\vioscsi.inf /install
2. Удалите обновления через GUI среды восстановления,
или в CLI среды восстановления командой:
DISM /Image:D:\ /Cleanup-Image /RevertPendingActions» где "D:" надо поменять на букву диска с Windows.
Удаление обновления занимает значительное время (от часа и более). Рекомендуется не выключать и не перезагружать виртуальную машину в процессе удаления обновления.