musste bei Server 2008R2 der Speicherort der VMs geändert werden, war dies nur über Export und Import der Maschine möglich. Bei mehreren, oder sehr grossen Maschinen kann das sehr zeitaufwändig werden! Der Export bewirkt zudem eine Kopie der virtuellen Harddisk. Speicherplatz, der vorgehalten werden muss. Werden die Maschinen nur wegkopiert bzw. verschoben, ohne vorherigen Export, (VHD/VHDx, Konfiguration und Snapshot Dateien) werden diese beim Importvorgang nicht erkannt. Die Konfigurationsdatei kann nicht importiert werden, wie es beispielsweise bei VMware möglich ist. Hier kann der Ordner mit der VMDK, Konfiguration (vmx) usw. verschoben, und neu eingelesen werden.
Mit Server 2012 und auch in Windows 8, wurden sehr gute Features eingebaut, die die Administration erheblich erleichtern. Der Speicherort einer Maschine lässt sich im laufenden Betrieb komfortabel verschieben. Bei Mitgliedschaft der Source/Target Hyper-V Hosts in einer Domäne (oder über Trust verbundenen Domänen), kann die Maschine über die Live Migration verschoben werden. Ein zentrales Storage ist, dank der shared-nothing Live-Migration nicht notwendig.
Die folgende Schritte zeigen, wie eine LUN mit VMs, von einem Hyper-V auf einen anderen Hyper-V Host umgezogen wird.
1. Als ersten Schritt werden alle Snapshots/Checkpoints aufgelöst
2. Anschliessend stoppen wir den Service, der die VMs handled. Dies kann über den Hyper-V Manager erfolgen. Alternativ kann der Dienst über die Services MMC „Verwaltung für virtuelle Computer“ bzw. ‚net stop vmms‚ in der command line gestoppt werden
3. Als nächsten gehen wir im Explorer in folgenden Pfad: C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines
Hier gibt es Symlinks mit den Namen der XML Konfigurationsdateien der Guests, die auf diese verweisen. Diese Dateien werden beim Start des Services eingelesen.
4. kopieren wir diese Symlinks weg, haben wir die eigentlichen Ziele dieser Symlinks, nämlich die Konfigurationsdateien der VMs an einem Ort. Kopiert man die Dateien nach dem Umzug zurück, würde man nicht die eigentliche Konfigurationsdatei benutzen, sondern die Kopie, die wir nach C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines kopiert haben. Es müssen wieder Symlinks erstellt werden, die auf die Konfigurationsdateien zeigen.
5. Zum generieren der Symlinks gibt es den Command Line Befehl ‚mklink‘
1
2
3
4
5
6
7
|
cd C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines
mklink 4609AC14-B632-4E48-AA87-E8173A17E068.xml "D:\Hyper-V\_new\Virtual Machines\4609AC14-B632-4E48-AA87-E8173A17E068.xml"
symbolische Verknüpfung erstellt für 4609AC14-B632-4E48-AA87-E8173A17E068.xml <<===>> D:\Hyper-V\_new\Virtual Machines\4609AC14-B632-4E48-AA87-E8173A17E068.xml
|
Anschliessend wird der Service gestarted, wodurch die Konfigurationsdateien neu einegelesen werden. Wenn sich der Pfad für die VHD/VHDx ändert, muss der Pfad im .xml File selbst angepasst werden!
6. Bevor die Maschinen gestarted werden, müssen die Netzwerkadapter neu definiert und zugewiesen werden. Es hilft hier nicht, den gleichen Namen für die Adapter wie im alten Host zu verwenden.
Powershell Script zur Suche von .xml Dateien, und Erstellung der Symlinks
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# vm path
$vmpath = "C:\virtual machines\"
# tmp symlink location
$dest = "c:\symlinks\"
# make directory
if((Test-Path $dest) -eq 0)
{
New-Item -Path $dest -ItemType directory
}
# loop *.xml
ForEach ($file in Get-ChildItem -file -Recurse -path $vmpath | where {$_.extension –eq ".xml"} )
{
if((Test-Path $dest$file) -eq 0)
{
function mklink {cmd /c mklink $dest$file $file.versioninfo.filename}
mklink
}
}
|
die Symlinks werden aus dem temporären Verzeichnis nach C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines verschoben
Windows Server 2012R2, Windows 8.1