Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Tygodnie zbierania wiedzy, dni spedzone na przygotowaniu laboratoriów, godziny tworzenia prezentacji a potem kilkadziesiat minut i juz po MTS. Jeszcze raz bardzo dziekuje wszystkim, dzieki którym mieszczaca 3000 osób sala nie wygladala wcale na pusta. Mam nadzieje, ze sie podobalo! Jezeli tak – na stronie MTS jest ankieta, w której podzielicie sie dobra ocena. Prelegentom zalezy na ocenach. Jezeli cos bylo nie tak, jakbyscie chcieli – na stronie MTS jest ankieta i mozecie ponarzekac. Prelegentom na krytycznych opiniach tez zalezy. Dla Was to male pare minut a dla prelegentów i organizatorów konferencji szansa, zeby za rok bylo jeszcze lepiej. Facebook, fora, blogi, prywatne maile i pare innych metod kontaktu jest byc moze wygodne, ale nawet w malym procencie nie tak skuteczne jak ankieta na stronie konferencji. Bardzo, bardzo prosze. Dajcie prelegentom choc tyle w zamian za nasz czas i chec podzielenia sie wiedza.
Dla tych, którzy wola bardziej techniczne aspekty konferencji, mam pokazywany w ostatniej sesji demo skrypt oraz pare slów komentarza. Tak jak wspomnialem w czasie sesji, jezeli potrzebuje duzej ilosci podobnych maszyn wirtualnych, to instaluje sobie system raz, po czym wykonuje sysprep i kazdy nowy system jest klonem tego wzorca. Sysprep jest niezbedny, zeby maszyny-klony mialy unikalne identyfikatory. Tam, gdzie jest to zasadne, mozna sobie sysprep zautomatyzowac chocby po to, zeby w kazdej nowej maszynie nie trzeba bylo wpisywac numeru czy potwierdzac zgody na warunki licencyjne. Dla prawdziwych twardzieli automatyzacja to reczna dlubanina w plikach XML, normalniejsi opra sie pewnie na pakiecie WAIK, ale to juz zupelnie inny temat. W kazdym razie, mam wzorcowy obraz, na którym bede opieral wszystkie nowe maszyny. Metody klonowania sa dwie: kazdorazowe kopiowanie dysku-wzorca albo tworzenie dysku róznicowego, dla którego wzorzec jest "rodzicem". Osobiscie wole zwykle te druga metode, bo ma pare wyraznych zalet: oszczedza miejsce, jest szybsza, pozwala na umieszczenie dysku róznicowego na innym dysku fizycznym (najchetniej SSD) oraz w lepszy sposób wykorzystuje systemowe mechanizmy cache. Maszyne wzorcowa najlepiej skasowac zaraz po przygotowaniu, poniewaz jej przypadkowe uruchomienie spowoduje zmiany na dysku wirtualnym i dyski potomne moga przestac dzialac, co zwykle jest naprawde powaznym problemem.
Po tym wstepie, skoro wiadomo jak wygladaja zalozenia, mozemy przejsc do realizacji. Moja procedura tworzenia nowej maszyny wyglada nastepujaco:
- Tworzymy róznicowy dysk VHDX bazujacy na wczesniej przygotowanym wzorcu. (New... Hard Disk... w GUI)
- Tworzymy nowa maszyne wirtualna (New... Virtual Machine) i w na zakladce wyboru dysku (Connect Virtual Hard Disk) wskazujemy wczesniej utworzony dysk. W ramach kreatora nowej maszyny, poza dyskiem mozemy od razu skonfigurowac pamiec startowa i podlaczony switch (u mnie byl to External2). Do pamieci jeszcze wrócimy, poniewaz z poziomu kreatora nie mozna ustawic minimalnej i maksymalnej wartosci pamieci dynamicznej. Dlatego otwieramy konfiguracje maszyny (prawy klik... Settings... w GUI) i ustawiamy:
- Ilosc wirtualnych procesorów na 12
- Pamiec dynamiczna na 512MB pamieci startowej, 256MB pamieci minimalnej i 4096 pamieci maksymalnej.
- W zaawansowanych opcjach sieci wlaczamy SR-IOV
Zamykamy ustawienia i uruchamiamy maszyne wirtualna.
Jako, ze chcialem powyzsza strukture oskryptowac, uzylem wbudowanego w Windows Server 2012 PowerShella 3.0. Najpierw stworzylem sobie zmienna $vhdtemplate wskazujaca na dysk rodzica oraz petle, która automatycznie wygeneruje mi nazwy maszyn od VM0001 do VM0050 (w zmiennej $vmname) i odpowiednie sciezki do dysków potomnych (w zmiennej $vhdpath). Wewnatrz petli umiescilem polecenia odpowiadajace kolejnym krokom opisanym powyzej:
- New-VHD -Path $vhdname -ParentPath $vhdtemplate -Differencing
- New-VM -Name $vmname -SwitchName "External2" -VHDPath $vhdname
- Set-VMProcessor -VMName $vmname -Count 12
- Set-VMMemory -VMName $vmname -DynamicMemoryEnabled $true -StartupBytes 512MB -MinimumBytes 256MB -MaximumBytes 4GB
- Set-VMNetworkAdapter -VMName $vmname -IovWeight 1
Start-VM -Name $vmname
I gotowe! Trudno wyobrazic sobie prostsze polecenia i z pewnoscia doceni je kazdy, kto próbowal zautomatyzowac Hyper-V we wczesniejszych wersjach systemu.
Poniewaz tworzenie dysku i uruchamianie kolejnych maszyn zajmuje troche czasu, cala operacje mozna zrównoleglic tak, zeby w czasie, w którym uruchamiana jest maszyna n, tworzony byl dysk maszyny n+1. W tym celu do pierwszego i ostatniego polecenia dodac mozna parametr -AsJob. W mojej ocenie ma to sens tylko w celach demonstracyjnych, poniewaz w normalnych zastosowaniach takiego skryptu lepiej robic wszystko solidnie i po kolei nawet, jezeli tworzenie pojedynczej maszyny trwa z tego powodu kilka sekund dluzej.
Oczywiscie caly powyzszy przyklad jest bardzo prosty. Wlasnie taki byl potrzebny w ramach demonstracji na MTS. Jezeli jednak ktos zechce sam glebiej "podlubac" – portal TechNet zapewni cala potrzebna wiedze na temat zarzadzania wirtualizacja. Warto sie pobawic nawet, jezeli w danej chwili potrzebujemy utworzyc czy zmodyfikowac tylko jedna maszyne.
Autor: Grzegorz Tworek [MVP]
PS skrypt, którym na koncu "posprzatalem" wszystkie automatycznie utworzone i uruchomione maszyny mial postac: Get–VM | Stop–VM -Force -Passthru | Remove–VM -Force -AsJob Z oczywistych powodów prosze nie stosowac go w srodowisku produkcyjnym.