Гостевая ОС Windows через гипервизор kvm не сохраняет состояние диска после подключения сетевого интерфейса
Я имею openstack
основанная облачная среда. я имею kvm/qemu
на основе гипервизоров. я создал Windows
гостевая ОС vm на одном из гипервизоров. И я приложил громкость (VHD) к VM. Я изменил статус диска на online
в гостевой ОС. Затем я подключил (горячим) сетевой интерфейс к VM. Я мог видеть добавленный сетевой интерфейс в xml-файле vm на гипервизоре. Я перезапустил vm и все еще вижу все диски и сетевые интерфейсы в файле xml. Но их слоты переставлены. Затем я проверяю состояние диска на гостевой ОС и он показывает Offline
, Я не понимаю, где проблема. Если я просто перезагружаю виртуальную машину без подключения дополнительного сетевого интерфейса, то состояние диска сохраняется. Кто-нибудь знает, почему это происходит? Это не происходит в гостевой ОС Linux, поэтому я предполагаю, что это проблема уровня гостевой ОС, может быть virtIO
проблема, связанная с водителем. Проблема не имеет никакого отношения к горячему подключению, потому что это все еще происходит, даже если я присоединяю сетевой интерфейс после выключения vm.
1 ответ
Nova намеренно не дает никаких гарантий относительно слотов PCI, назначенных устройствам. Они динамически назначаются каждый раз гостю, и поэтому, если вы добавляете / удаляете устройства, особенно с помощью hotplug, они гарантированно меняются при каждой загрузке.
Точное поведение, которое вы видите, связано с тем, каким образом назначаются адреса устройств. IIRC, PCI-адреса сначала назначаются всем перечисленным NIC, а затем назначаются дискам / дисковым контроллерам. Поэтому, если вы добавите дополнительные сетевые адаптеры, то все диски получат увеличенный слот PCI, чтобы освободить место для этого дополнительного сетевого адаптера при следующей перезагрузке.
Учитывая это, вы не должны полагаться на слоты PCI для идентификации устройств в OpenStack. Для дисков вы должны идеально идентифицировать устройства, посмотрев на метку файловой системы или UUID, или для сетевых карт использовать их MAC-адрес для идентификации.