Виртуальные машины поколения 1: Модернизируйте их и обновите
Удивительно, как быстро может пройти время и насколько технологии могут продвинуться за это время. Рассмотрим Hyper-V. Он был выпущен еще в 2008 году — 12 лет назад! Несмотря на то, что большинство организаций, вероятно, не используют Hyper-V на Windows Server 2008 (которая больше даже не поддерживается), могу поспорить, что в большинстве организаций есть виртуальные машины, которые почти так же стары, как и сам Hyper-V. В моей организации нет ничего настолько старого, но у меня есть несколько устаревших виртуальных машин, которые были созданы задолго до того, как была выпущена их текущая гостевая операционная система. К счастью, есть несколько вещей, которые вы можете сделать, чтобы обновить эти виртуальные машины. Если ваша цель — модернизировать ваши виртуальные машины Hyper-V, то первое, что я рекомендую сделать, — это посмотреть, есть ли у вас какие-либо виртуальные машины, которые все еще являются виртуальными машинами поколения 1.
Прежде чем я покажу вам, как это сделать, я должен указать, что наличие виртуальных машин первого поколения не обязательно плохо. Некоторые операционные системы не могут работать на виртуальных машинах поколения 2. Точно так же многие современные виртуальные устройства (например, виртуальное устройство AWS Storage Gateway) создаются как виртуальные машины первого поколения. Дело в том, что вы не должны просто предполагать, что все виртуальные машины поколения 1 необходимо заменить виртуальными машинами поколения 2.
Виртуальные машины поколения 1 по-прежнему полностью поддерживаются
Помните, что даже сегодня виртуальные машины поколения 1 по-прежнему полностью поддерживаются. Учитывая объем усилий, затраченных на перестроение виртуальной машины поколения 1 в виртуальную машину поколения 2, это может не стоить усилий. Стоит подумать, оправдывают ли преимущества усилия. Вот несколько потенциальных преимуществ:
- Потенциально более высокая производительность (хотя повышение производительности не гарантируется).
- Доступ к функциям безопасности, таким как TPM и безопасная загрузка.
- Возможность выделить больше ЦП и памяти, чем это возможно с виртуальными машинами поколения 1.
Когда рассматривать Gen 2
Мое общее эмпирическое правило заключается в том, что если виртуальная машина Windows работает под управлением Windows Server 2012 или более поздней версии, то она, вероятно, должна работать на виртуальной машине поколения 2, хотя есть исключения. Например, 32-разрядная ОС не может работать на виртуальной машине поколения 2. Точно так же виртуальные машины поколения 2 не поддерживают некоторые виртуальные аппаратные устройства, такие как гибкие диски или COM-порты.
Если виртуальная машина поколения 1 работает под управлением ОС, отличной от Windows, то, вероятно, лучше оставить виртуальную машину как виртуальную машину поколения 1.
Еще одна вещь, которую я должен упомянуть, прежде чем я покажу вам, как отслеживать виртуальные машины поколения 1, заключается в том, что не существует официально поддерживаемого способа преобразования виртуальной машины поколения 1 в поколение 2. Сказав это, некоторые приложения резервного копирования могут выполнять преобразование в окольным путем. Также можно вручную перестроить виртуальную машину как машину поколения 2.
Найти виртуальные машины первого поколения довольно просто. Командлет PowerShell Get-VM поддерживает параметр VirtualMachineSubType. Этот параметр отражает поколение виртуальной машины. Просто используйте команду, подобную этой, чтобы получить генерацию виртуальной машины:
Get-VM <virtual machine name> | Select-Object VirtualMachineSubType
Если вы хотите, чтобы PowerShell сортировал все виртуальные машины на заданном хосте и определял виртуальные машины поколения 1, вам потребуется объединить командлет Get-VM с командлетом Where-Object. Вот как выглядит команда:
Get-VM | Where-Object {$_.VirtualMachineSubType -eq “Generation1”}
Как отмечалось ранее, следует ли перестраивать виртуальную машину поколения 1 в виртуальную машину поколения 2, зависит от множества факторов, не последним из которых является гостевая ОС. К сожалению, командлет Get-VM не возвращает ОС виртуальной машины. Если у вас есть System Center Virtual Machine Manager (VMM), вы можете использовать специальный командлет VMM, чтобы определить, какая ОС работает на виртуальной машине. Для этого используется команда:
Get-SCVirtualMachine -Name <vm name> | Select-Object OperatingSystem
Если у вас нет System Center Virtual Machine Manager, единственный способ определить операционную систему виртуальной машины из PowerShell — использовать командлет Get-CimInstance для прямого запроса виртуальной машины.
Версии виртуальной машины
Еще одна вещь, которую вы можете сделать для обновления своих виртуальных машин Hyper-V, — это обновить их версию виртуальной машины. Когда вы создаете новую виртуальную машину Hyper-V, этой виртуальной машине присваивается номер версии, соответствующий операционной системе хоста. Например, виртуальные машины, созданные на Windows Server 2016, получают номер версии 8.0.
Номер версии виртуальной машины определяет, на каких хостах может работать виртуальная машина. Предположим, например, что у вас есть старая виртуальная машина, созданная на Windows Server 2012 R2. Этой виртуальной машине был бы присвоен номер версии 5.0. Если предположить, что номер версии виртуальной машины не обновлялся на протяжении многих лет, она сможет работать на хосте Windows Server 2012 R2 Hyper-V или более новой версии Hyper-V. Однако если виртуальная машина работает в новой версии Hyper-V, ее номер версии может привести к тому, что виртуальная машина не сможет использовать все преимущества новейших функций Hyper-V. Виртуальная машина по существу поддерживается в состоянии обратной совместимости.
Хорошей новостью является то, что назначение номера версии виртуальной машины не является постоянным. Виртуальную машину можно обновить до более высокой версии, если нет шансов, что она будет работать в более старой версии Hyper-V. Позвольте мне показать вам, как это работает.
Если вы посмотрите на рисунок ниже, то увидите, что я использовал командлет Get-WMIObject на хосте Hyper-V для получения имени его операционной системы. В этом случае хост работает под управлением Windows Server 2019 Datacenter. Затем я использовал командлет Get-VMHostSupportedVersion, чтобы получить список версий виртуальных машин, поддерживаемых операционной системой, и имя операционной системы, связанное с каждой версией.
Следующим шагом в этом процессе является использование командлета Get-VM для получения списка имен и версий виртуальных машин. В моем случае у меня не так много виртуальных машин, поэтому я просто использовал команду ниже. Если у вас много виртуальных машин; однако вы можете включить командлет Where-Object для поиска конкретных номеров версий. Вот команда, которую я использовал:
Get-VM | Select-Object Name, Version
Чтобы обновить версию виртуальной машины, чтобы она соответствовала версии хоста, на котором она работает, просто используйте эту команду:
Update-VMVersion <VM name>
Помните, что как только вы обновите версию виртуальной машины, она не сможет работать на хосте с операционной системой, которая старше, чем хост, на котором она работает в данный момент.
Виртуальные машины поколения 1: посмотрите, прежде чем перейти к поколению 2
Обновить версию виртуальной машины несложно, но нет прямого способа обновить поколение виртуальной машины без перестроения виртуальной машины. Даже в этом случае восстановление виртуальной машины может стоить усилий, поскольку виртуальные машины поколения 2 обычно работают лучше, чем их аналоги поколения 1. Просто убедитесь, что нет никаких требований к операционной системе, приложению или виртуальному оборудованию, требующих дальнейшего использования Поколения 1.