Blog

SCVMM Ağ Yapılandırmasını Otomatik Yedekleme ve Geri Yükleme Rehberi

Modern veri merkezi yönetiminde ağ topolojilerinin doğru, kararlı ve tekrar üretilebilir olması kritik önem taşır. Özellikle çok sayıda Hyper-V host, birden fazla cluster, yüzlerce VM Network ve VLAN segmentine sahip büyük yapılarda bu gereklilik daha da belirgindir.

System Center Virtual Machine Manager (SCVMM), bu karmaşık yapıların tamamını merkezi bir noktadan yönetmeyi sağlayan en güçlü Microsoft çözümlerinden biridir. Ancak SCVMM’in yeniden kurulum, versiyon yükseltme, arıza sonrası recovery veya farklı bir ortama geçiş gibi durumlarda mevcut ağ konfigürasyonunun yeniden oluşturulması ciddi operasyonel bir yüktür.

Bu nedenle SCVMM ağ topolojisini tam otomatik şekilde dışa aktaran (export) ve yeni bir SCVMM’e eksiksiz olarak geri yükleyen (import) script mekanizması, büyük ve kompleks sanallaştırma altyapılarında yapı bütünlüğünün korunması için kritik bir gereklilik haline gelmiştir.

Bu makalede, SCVMM’in ağ modelini, export/import yaklaşımının neden kritik olduğunu ve hazırlanan PowerShell script’inin tam olarak ne iş yaptığını teknik açıdan ele alıyoruz.

SCVMM ve Network Yönetimi Nedir?

SCVMM (System Center Virtual Machine Manager), Microsoft’un Hyper-V başta olmak üzere sanallaştırma altyapılarını merkezi olarak yönetmek için geliştirdiği kurumsal bir yönetim ürünüdür.

Tek bir konsol üzerinden;

  • Hyper-V host ve cluster’ların yönetimini,
  • Sanal makinelerin oluşturulmasını ve yaşam döngüsünü,
  • Storage ve network (Logical Network, VM Network vb.) entegrasyonlarını,
  • Otomasyon ve template tabanlı dağıtımları
    gerçekleştirmenizi sağlar.

SCVMM içinde ağ bileşenleri üç temel yapı üzerinden modellenir:

1. Logical Network

SCVMM’de aLogical Network, fiziksel altyapının soyutlanmış halidir.SCVMM’de Logical Network, fiziksel ağın soyutlanmış halidir. Bir switch, router veya fiziksel donanım değildir; onların SCVMM’e tanıtılmış mantıksal karşılığıdır.

Örnek Logical Network isimleri:

  • Production-Network
  • Management-Network
  • DMZ
  • Backup-Network
  • StorageNet

Büyük veri merkezlerinde yüzlerce VLAN bulunabilir, ancak SCVMM bu fiziksel karmaşıklığı Logical Network altında standartlaştırır ve sınıflandırır.

✔️Logical Network şunları sağlar:

  • Ağ segmentasyonunun merkezileştirilmesi
  • VLAN + Subnet yapısının kurumsal standartlara göre modellenmesi
  • Host Group bazlı erişimin kontrol edilmesi
  • VM Network’lerin doğru segmentlere bağlanması

💡Neden gereklidir

Fiziksel network karmaşıktır; SCVMM’in VM ve host yönetimi için bu karmaşayı anlamlı bir yapıya dönüştürmesi şarttır.

2. Network Site (Logical Network Definition)

Logical Network tek başına yeterli değildir.
Her Logical Network’e bağlı bir veya birden fazla Network Site bulunur.

Bir Network Site içinde:

  • VLAN ID
  • Subnet (CIDR)
  • Bağlı olduğu Host Group bilgileri bulunur.

Bu katman sayesinde SCVMM şu kuralları bilir:

“Ankara’daki cluster, yalnızca VLAN 120 ve 10.120.0.0/16 subnet’i üzerinde trafik yönetebilir.”

Bu, veri merkezleri arasında bölgesel ayrımı, güvenlik segmentasyonunu ve çoklu cluster yapılarını doğru şekilde modellemek için zorunludur.

3. VM Network

SCVMM üzerinde bir sanal makine oluştururken seçtiğiniz ağ aslında VM Network’tür.
VM Network’ler, bağlı olduğu Logical Network üzerinden hangi VLAN/Subnet kullanılacağını bilir.

💡Örneğin:

  • VLAN120_Network
  • DMZ-Web
  • Management-Net

Bu katman, VM’lerin doğru VLAN’da konuşlandırılmasını otomatikleştirir. Yanlış VLAN/Subnet’e bağlanan bir VM, tüm servisleri devre dışı bırakabilir. Bu yüzden VM Network katmanının doğru yapılandırılması kritiktir.

SCVMM Yeniden Kurulumunda Ağ Topolojisi Sorunu Nasıl Çözülüyor?

Kurumsal ortamlarda SCVMM’in yeniden kurulmasına sıkça ihtiyaç duyulur:

  • SCVMM 2019 → 2022 → 2025 geçişi
  • Fiziksel/virtual sunucu değişikliği
  • SQL taşınması
  • SCVMM sunucusunun arızalanması
  • DR/Secondary SCVMM kurulumu
  • Database bozulması
  • Test ortamından üretim ortamına geçiş

❗Bu senaryolarda en büyük risk şudur:

SCVMM’e tanımlı tüm Logical Network, VLAN, Subnet, VM Network ve Network Site konfigürasyonları kaybolur.

✔️Elle yeniden oluşturmak:

  • Çok zaman alır,Hatalara açıktır.
  • Binlerce VLAN içeren yapılarda imkânsızdır.
  • Yanlış VLAN/Subnet → servis kesintisine neden olur.
  • Cluster hostları yanlış network profilleri ile eşleşebilir.

Bu nedenle ağ topolojisinin otomatik olarak taşınması kritik bir gereksinimdir.

SCVMM Ağ Topolojisi Script ile Nasıl Export/Import Ediliyor?

İncelediğimiz PowerShell script’i tam olarak bu sorunu çözüyor. Mevcut SCVMM üzerinde bulunan tüm ağ topolojisini okuyor ve yeniden oluşturma komutlarını .ps1 dosyasına yazıyor. Bu dışa aktardığı bilgiler:

  • Logical Network’ler
  • Network Site’lar
  • Subnet & VLAN tanımları
  • Host Group ilişkileri
  • VM Network’ler
  • VM Subnet’ler

✔️Bu sayede:

  • Yeni bir SCVMM kurulduğunda.
  • Sadece oluşan Import-SCNetworkConfig.ps1 dosyasını çalıştırarak.
  • Eski ağ topolojinin %100 aynısını otomatik olarak geri yükleyebilirsiniz.

Bu, özellikle 500+ VLAN, onlarca Logical Network ve karmaşık bir host cluster mimarisine sahip yapılarda hayati bir avantajdır.

<#

.SYNOPSIS
This script is intended to export SCVMM network configuration.

.DESCRIPTION
The script lists every logical networks and dependencies such as vm networks and sites from a SCVMM server and exports the results as a .ps1 file so it can be replay 
on a new SCVMM server. The script can be run from the powershell console of the SCVMM console or from a computer with the VirtualMachineManager already loaded and with
an access to the SCVMM server. Just use the Get-SCVMMServer beforehand with a user with sufficient permissions.

.EXAMPLE
"./Export-SCNetworkConfig.ps1" -Output "C:\Import-SCVNetworkConfig.ps1"

.INPUTS
Output : Filepath to the script which will be use to import resultas in the new scvmm server.

.COMPONENTS
Import-Module VirtualMachineManager

.NOTES
Original script by : Lucas Bablon
Modified for multi-subnet handling and full export by : Zafer & ChatGPT
    
#>

#required components
#requires -Module virtualmachinemanager

param 
(
    [Parameter(Mandatory=$false, HelpMessage="Save the results in a .ps1 script")]
    [string]$output="C:\Import-SCNetworkConfigv1.ps1"
)

##
## INIT IMPORT SCRIPT
##

# initialize the output file (overwrite)
"" | Out-File $output

Write-Output "<#" | Out-File $output -Append
Write-Output ".SYNOPSIS" | Out-File $output -Append
Write-Output "This script is intended to import network configuration on a SCVMM server." | Out-File $output -Append
Write-Output "" | Out-File $output -Append
Write-Output ".DESCRIPTION" | Out-File $output -Append
Write-Output "This script was automatically generated by Export-SCVNetworkConfig.ps1. Run the import script from the SCVMM console of the server you want to import in." | Out-File $output -Append
Write-Output "#>" | Out-File $output -Append

Write-Output "" | Out-File $output -Append
Write-Output "#required components" | Out-File $output -Append
Write-Output "#requires -Module virtualmachinemanager" | Out-File $output -Append

Write-Output "" | Out-File $output -Append
Write-Output "#script" | Out-File $output -Append

##
## EXPORT LOGICAL NETWORKS
##

# all logical networks
$logicalNetworks = Get-SCLogicalNetwork

Write-Host "Exporting creation commands to $output..."

$i = 1

$logicalNetworks | ForEach-Object {

    $logicalNetwork      = $_
    $logicalNetworkName  = $logicalNetwork.Name

    # progress bar
    $completed = [math]::Round(($i / $logicalNetworks.Count) * 100)
    Write-Progress -Activity "Exporting configuration" -Status "$completed% complete" -PercentComplete $completed
    $i++

    # LOGICAL NETWORK
    Write-Output "" | Out-File $output -Append
    Write-Output "# Creates logical network $logicalNetworkName" | Out-File $output -Append

    $print = 'New-SCLogicalNetwork -Name "' + $logicalNetworkName + '" -LogicalNetworkDefinitionIsolation $true -EnableNetworkVirtualization $false -UseGRE $false -IsPVLAN $false'
    Write-Output $print | Out-File $output -Append

    ##
    ## SITES (LogicalNetworkDefinition)
    ##

    $sites = Get-SCLogicalNetworkDefinition -LogicalNetwork $logicalNetwork

    foreach ($site in $sites) {

        $siteName   = $site.Name
        $hostGroups = $site.HostGroups

        # birden fazla host group varsa ilkini alıyoruz, daha da gelişmiş istersen hepsini döneriz
        $hostGroupName = $hostGroups[0].Name

        $subnetVlans = $site.SubnetVLans

        Write-Output "" | Out-File $output -Append
        Write-Output "# Creates network site $siteName for logical network $logicalNetworkName" | Out-File $output -Append

        # allSubnetVlan değişkeni import script içinde kullanılacak
        Write-Output '$allSubnetVlan = @()' | Out-File $output -Append

        foreach ($sv in $subnetVlans) {
            $subnetStr = $sv.Subnet
            $vlanId    = $sv.VLanID

            # her subnet/vlan kombinasyonu için bir satır
            $print = '$allSubnetVlan += New-SCSubnetVLan -Subnet "' + $subnetStr + '" -VLanID ' + $vlanId
            Write-Output $print | Out-File $output -Append
        }

        # Logical Network Definition oluşturma
        $print = 'New-SCLogicalNetworkDefinition -Name "' + $siteName + '" -LogicalNetwork (Get-SCLogicalNetwork -Name "' + $logicalNetworkName + '") -VMHostGroup (Get-SCVMHostGroup -Name "' + $hostGroupName + '") -SubnetVLan $allSubnetVlan -RunAsynchronously'
        Write-Output $print | Out-File $output -Append


        ##
        ## VM NETWORK & VM SUBNET
        ##

        Write-Output "" | Out-File $output -Append
        Write-Output "# Creates VM Network for site $siteName" | Out-File $output -Append

        # VM Network
        $print = '$vmNetwork = New-SCVMNetwork -Name "' + $siteName + '" -LogicalNetwork (Get-SCLogicalNetwork -Name "' + $logicalNetworkName + '") -IsolationType VLANNetwork'
        Write-Output $print | Out-File $output -Append

        # VM Subnet için subnet/vlan objelerini hazırlıyoruz
        Write-Output '$subnetVLANs = @()' | Out-File $output -Append

        foreach ($sv in $subnetVlans) {
            $subnetStr = $sv.Subnet
            $vlanId    = $sv.VLanID

            $print = '$subnetVLANs += New-SCSubnetVLan -Subnet "' + $subnetStr + '" -VLanID ' + $vlanId
            Write-Output $print | Out-File $output -Append
        }

        # Logical Network Definition referansı (siteName ile)
        $print = '$logicalNetworkDefinition = Get-SCLogicalNetworkDefinition -Name "' + $siteName + '"'
        Write-Output $print | Out-File $output -Append

        # VM Subnet
        $print = 'New-SCVMSubnet -Name "' + $siteName + '" -LogicalNetworkDefinition $logicalNetworkDefinition -SubnetVLan $subnetVLANs -VMNetwork $vmNetwork'
        Write-Output $print | Out-File $output -Append

    }

}

Write-Host "Done. Import script generated at $output"

Script Çalıştıktan Sonra Ne Olur?

SCVMM ağ yapılandırma dışa aktarma betiği çalıştırıldığında, C:\ dizininde Import-SCNetworkConfig.ps1 adlı otomatik bir yeniden yapılandırma betiği oluşturur. Bu betik, hedef SCVMM ortamında çalıştırılmak üzere tasarlanmıştır ve şu bileşenleri içerir:

  • Yeni Logical Network oluşturma komutları
  • Network Site tanımları
  • VLAN ID + Subnet bilgileri
  • Host Group bağlama komutları
  • VM Network oluşturma komutları
  • VM Subnet tanımları

Betik, yeni SCVMM sunucusunda orijinal ağ topolojisini tamamen ve hatasız bir şekilde yeniden oluşturur. Bu sayede, hem yedekleme ve kurtarma hem de ortam taşıma senaryolarında tutarlılık sağlanır.

Bu yöntem, yalnızca bir yedekleme mekanizması değil, aynı zamanda bir altyapı kod olarak (Infrastructure-as-Code) standardı ve topoloji koruma stratejisi olarak da değerlendirilebilir.

💡Betiğin sağladığı faydalar şu şekildedir:

  • Network topolojisi kaybolmaz.
  • Migration ve upgrade süreçleri risksiz olur.
  • Büyük ortamlarda insan hatası ortadan kalkar.
  • Logical Network → Network Site → VLAN/Subnet → VM Network zinciri tamamen korunur.
  • DR/Secondary SCVMM senaryolarında hızlı kurulum sağlar.

Bu kapsamda paylaşılan tüm bilgiler ve teknik detayların, SCVMM altyapınızı daha güvenli, daha yönetilebilir ve daha tekrar üretilebilir hâle getirme konusunda sizlere faydalı olmasını dilerim..

İlgili Makaleler

Bir yanıt yazın

Başa dön tuşu