Hyper-V: VM'lerin Otomatik Başlatma ve Önyükleme Sırasını Yapılandırma
Hyper-V'de, ana işletim sisteminizi başlattığınızda veya yeniden başlattığınızda sanal makineleriniz için otomatik başlatma ve kapatma seçeneklerini yapılandırabilirsiniz. Bu yazıda, bir Hyper-V ana bilgisayarının açıldığında veya düzgün bir şekilde kapatıldığında sanal makinelerde gerçekleştirmesi gereken eylemlerin nasıl yapılandırılacağını ve sanal makinelerin önyükleme sırasının nasıl ayarlanacağını göstereceğiz.
Hyper-V Sanal Makineleri İçin Otomatik Başlatma ve Kapatma Eylemini Yapılandırma
Varsayılan olarak, bir Hyper-V ana bilgisayarı, yeniden başlatıldığında kayıtlı sanal makinelerin durumunu kaydeder. Bu, yeniden başlatmadan önce bir VM çalışıyorsa, Hyper-V'nin onu otomatik olarak başlatacağı anlamına gelir. Otomatik başlatma ayarları, her VM için ayrı ayrı yapılandırılır.
Hyper-V konsolunu çalıştırın, herhangi bir VM'nin özelliklerini açın ve Ayarlar -> Otomatik Başlatma İşlemi'ne gidin. Bir sanal makinenin otomatik başlatılmasını yönetmek için üç seçenek mevcuttur:
Hiçbir şey - bir ana bilgisayar başlatıldığında, sanal makine otomatik olarak başlamaz (ana bilgisayar yeniden başlatılmadan önceki durumundan bağımsız olarak)
Hizmet durdurulduğunda çalışıyorsa otomatik olarak başlat - bir sanal makine, yalnızca ana makine kapatılmadan/yeniden başlatılmadan önce çalışıyorsa otomatik olarak başlatılır
-
Bu sanal makineyi her zaman otomatik olarak başlat - Hyper-V ana bilgisayarı önyükleme yaptığında her zaman bu sanal makineyi başlat.
Son seçenek olan Başlangıç Gecikmesi için bir parametre daha mevcuttur. Burada sanal makine için başlatma gecikme süresini (saniye olarak) belirleyebilirsiniz. Gecikmeyi kullanarak, sanal makinelerinizin önyükleme sırasını yönetebilir (örneğin, SQL Server ile bir VM'yi başlatmadan önce bir etki alanı denetleyicisini önyüklemek için) ve sırayla birden çok VM'yi başlatma nedeniyle disk deposundaki yükü azaltabilirsiniz.
Henüz Windows Admin Center'da (WAC) Hyper-V sanal makinelerinin otomatik olarak başlatılmasını yönetmek için herhangi bir seçeneğin olmaması ilginçtir.
Ayrıca, Otomatik Durdurma İşlemi bölümünde, ana makine kapatılırsa veya yeniden başlatılırsa sanal makinelerinizle ne yapacağınızı ayarlayabilirsiniz.
Ayar, acil durumların (beklenmedik elektrik kesintisi, BSOD) aksine, sanal makinelerin zarif bir şekilde kapanmak için zamanı olduğunda bir Hyper-V ana bilgisayarının doğru şekilde yeniden başlatılmasını ifade eder.
Sanal makine durumunu kaydet - sanal makinenin tam durumu kaydedilir (belleği dahil). Bir sonraki başlatmada, sanal makine bu noktadan devam edecektir. VM belleğinizi (*.BIN dosyaları) tutmak için diskinizde ek boş alan olması gerektiğini unutmayın. Konuk işletim sistemi yeniden başlatılmaz;
Sanal makineyi kapatın - bir Hyper-V ana bilgisayarı kapatıldığında, sanal makine de durdurulur (fiziksel bir bilgisayarın kapanmasıyla aynı şekilde). VM durumu kaydedilmez, konuk işletim sistemi tam önyükleme döngüsüyle başlatılır. Bu modda, sanal makinede çalışan uygulamalarda tutarsız veri alma riski vardır.
Konuk işletim sistemini kapatın - konuk işletim sistemi, Hyper-V entegrasyon hizmeti kullanılarak kapatılır (ayarlı kapatma). Sanal makinede çalışan tüm uygulamalar durdurulur ve tutarsız veri alma riski çok düşüktür.
PowerShell kullanarak Hyper-V sanal makinelerinizin otomatik başlatma ve kapatma ayarlarını görüntüleyebilir ve değiştirebilirsiniz.
Tüm VM'lerin geçerli başlatma ve kapatma ayarlarını görüntüleyin:
Get-VM -VMname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay,AutomaticStopActionAutomaticStartAction seçeneğini kullanarak bir sanal makinenin otomatik başlatma ayarlarını değiştirebilirsiniz. Olası değerleri
Nothing,
StartIfRunning,
StartGet-VM -VMname lon-win10| Set-VM -AutomaticStartAction StartGUI'si olmayan ücretsiz bir Windows Hyper-V Sunucu ana bilgisayarında sanal makine ayarlarını yapılandırmak için PowerShell'i kullanabilirsiniz.
Biri hariç tüm VM'ler için başlatma gecikmesini ayarlamak için (örneğin, FSMO rollerine sahip bir etki alanı denetleyicisi):
Get-VM -VMname * | Where-object -FilterScript {$_.vmname -notlike “lon-dc*”} | Set-VM -AutomaticStartDelay 90-AutomaticStopAction seçeneğini kullanarak, VM kapatma ayarlarını yapabilirsiniz (
Save,
TurnOff
,
ShutDown).
Hyper-V Sanal Makinelerin Önyükleme (Başlangıç) Sırası
Bağımsız bir Hyper-V ana bilgisayarı başlatılırken, bir yöneticinin üzerindeki sanal makinelerin başlatma sırasını yönetmesi gerekir. Örneğin, yalnızca etki alanı denetleyicisi kullanılabilir olduktan sonra önyükleme yapmak için Exchange VM'ye ve bir veritabanı sunucusundan sonra başlatmak için bir uygulama sunucusuna ihtiyacınız vardır. Hyper-V, başlatma gecikmesi seçeneği dışında sanal makinelerin başlatma sırasını yönetmek için herhangi bir yerleşik araca sahip değildir (
AutomaticStartDelay).
En basit durumlarda, onlar için farklı başlatma gecikmeleri ayarlayarak VM başlatma sırasını yapılandırabilirsiniz:
Get-VM -VMname lon-dc01| Set-VM -AutomaticStartDelay 0
Get-VM -VMname lon-exch1,lon-db01 | Set-VM -AutomaticStartDelay 90
Get-VM -VMname lon-rds01,lon-app01 | Set-VM -AutomaticStartDelay 180Başka bir yol da, bir PowerShell başlangıç komut dosyası kullanarak VM'leri sırayla başlatmaktır. Komut dosyasında, bir sonraki VM'yi başlatmadan önce bir gecikme ayarlayabilir ve VM'de bir uygulama veya hizmetin kullanılabilirliği için ek kontroller gerçekleştirebilirsiniz (uygulamanın veya hizmetin başlatıldığından emin olmak için). Daha kullanışlı hale getirmek için, etiketleri kullanarak birkaç VM'yi bir grupta birleştirebilirsiniz. Örneğin, VM'ler için aşağıdaki etiketleri ayarladım:
set-vm lon-dc01,lon-dc02 -Notes "Boot order 1"
set-vm lon-exch1, lon-db01 -Notes "Boot order 2"
set-vm lon-rds01,lon-app01 -Notes "Boot order 3"Aşağıdaki PowerShell betiği, sanal makineleri belirli bir sırayla başlatır ve PowerShell cmdlet'i Test-NetConnection'ı kullanarak VM'deki bazı hizmetler (TCP bağlantı noktaları) için ekstra kullanılabilirlik kontrolleri gerçekleştirir:
$VMtoStart = Get-VM | where notes -contains 'Boot order 1'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}
While (!(Test-NetConnection lon-dc01 -Port 445 -WarningAction SilentlyContinue).tcpTestSucceeded ){
Start-Sleep 30
}
$VMtoStart = Get-VM | where notes -contains 'Boot order 2'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}
While ((Test-NetConnection lon-exch1 -Port 25 -WarningAction SilentlyContinue).tcpTestSucceeded ){
Start-Sleep 30
}
$VMtoStart = Get-VM | where notes -contains 'Boot order 3'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}Ardından otomatik başlatma için PowerShell betiğini ekleyin veya Görev Zamanlayıcı'yı kullanarak çalıştırın (bu betiği kullanarak başlatılan tüm VM'ler için otomatik başlatmayı devre dışı bırakmayı unutmayın). PowerShell betiklerini çalıştırmanın Windows'ta varsayılan olarak kısıtlandığını unutmayın. Gerekirse, PS1 betiğini imzalayın veya PowerShell betiği yürütme ilkesini değiştirin.



