Kompatibilita procesorů pro Quick a Live Migration v Hyper-V
Jednou z velkých nevýhod Hyper-V je fakt, že není možné provést živou migraci mezi servery, které využívají různé procesory. Tím nejjednodušším příkladem mohou být 2 servery v clusteru, kde jeden ze serverů obsahuje procesory AMD a druhý Intel – zde je situace jasná. Nicméně problém je poněkud širší, není možné migrovat například mezi servery kde jeden server má novější a druhý starší procesory.
Celý problém se točí kolem použité instrukční sady v jednotlivých procesorech. V rámci Windows Server 2008 (ne R2) nebylo možné zjistit, zdali se migrace v rámci clusteru povede, dokud tato migrace nenastala. Windows Server 2008 R2 obsahuje nové WMI metody, které napomohou detekovat kompatibilitu mezi servery (resp. procesory v rámci clusteru). I v případě Windows Server 2008 R2 se nedozvíte, zdali je migrace možná až do chvíle, kdy se o ni pokusíte.
Třída Msvm_VirtualSystemManagementService obsahuje metody GetSystemCompatibilityInfo () a CheckSystemCompatibilityInfo() pro kontrolu kompatibility procesorů v rámci skriptů. Pojďme se na tyto informace podívat blíže.
Jako první je použita metoda GetSystemCompatibilityInfo(). Vstupem pro metodu je CIM_ComputerSystem REF ComputerSystem. Návratem z volání metody je pak uint CompatibilityInfo[].
Ravikanth Chaganti vytvořil pěkný vbsrcipt, který zjednoduší zjištění kompatibility procesorů mezi dvěma servery. Pravda, script je zapotřebí trochu poupravit (komentovat Option Explicit) a výstup není také ideální, ale script plní funkci – potvrdí, zdali je možné provést Live/Quick Migration.
V případě, kdy zjistíte, že není možná Live/Quick migration, je možné nastavit kompatibilitu procesorů v nastavení virtuálního stroje.
Typ procesoru, který je hlášený virtuálnímu stroji se následně mění také dle použitého operačního systému ve virtuálním stroji. Primárním rozdílem je počet registrů, které jsou dostupné ve virtuálním stroji (fyzický HW 10 virtuální 6). Tyto registry ukládají informace o tom, co daný procesor obsahuje za instrukce atd. Také se instrukční sady liší dle výrobce Intel / AMD.
Intel obvykle podporuje následující:
-
SSE3 instrukce
- Hyperthreading
AMD obvykle podporuje:
-
3DNow! instrukce
-
Fast FXSAVE
-
Rozšíření pro MMX instrukce
-
PREFETCHW instrukce
- SAHF a LAHF instrukce
Popis virtuálních procesorů Hypervisoru (nikoliv Hyper-V) je uveden např. zde http://msdn.microsoft.com/en-us/library/ff541644.aspx