A Windows virtuális gépekhez tartozó VMWare lemez méretének növelése vagy törlésekor néha nehéz megérteni, melyik virtuális lemez VMware megfelel egy Windows virtuális gép adott lemezéhez. Ha nem sok lemez van, és mindegyikük különbözik egymástól, könnyű megtalálni a megfelelőt. De mi a teendő, ha több azonos méretű VMDK (vagy RDM) meghajtót hozunk létre a virtuális géphez, vagy több virtuális SCSI vezérlőt hozunk létre a virtuális géphez? Hogyan nem tévedhet el, és pontosan válassza ki azt a meghajtót, amelyet kibővíteni (vagy csökkenteni) szeretne a Windows rendszergazdáját.
Ebben a cikkben megvizsgáljuk, hogyan lehet a Windows lemezeit virtuális lemezekre (VMDK) hozzárendelni a VMWare virtuális gépeken..
Tartalom:
- Az SCSI eszköz számának ellenőrzése Windows és VMWare rendszerekben
- Hogyan kell a Windows-meghajtókat VMDK-fájlokhoz leképezni az UUID / SerialNumber segítségével a PowerShell segítségével?
Az SCSI eszköz számának ellenőrzése Windows és VMWare rendszerekben
Nyissa meg a Disk Manager lemezkezelő konzolt (diskmgmt.msc) Windows rendszeren (a példánkban a Windows Server 2016). Az SCSI-vezérlő neve és a rajta található SCSI-eszköz száma nem jelenik meg a meghajtók listájában. Az eszköz SCSI-számának meghatározásához kattintson a meghajtóra és válassza a lehetőséget Tulajdonságok. Mint láthatja, a lapon általános a mezőn elhelyezkedés Az eszköz portjának adatai meg vannak jelölve VMWare virtuális lemez SCSI lemezes eszköz.
- Hely 160 = SCSI buszvezérlő 0
- Cél azonosítója 1 = Az 1. eszköz SCSI azonosítója
Kombinálja a kapott adatokat és kapja meg a lemez címét SCSI (0: 1).
Most nyissa meg a VMWare virtuális gép tulajdonságait a vSphere Client alkalmazásban. Keresse meg azt a meghajtót, amelynek virtuális eszköz csomópontja megegyezik a kapott azonosítóval. Példánkban ezt SCSI (0: 1) 2. merevlemez.
Ha sok virtuális lemezt különféle SCSI vezérlőkkel konfigurálnak a virtuális gépen (legfeljebb 4 SCSI vezérlőt adhat hozzá 16 lemezzel minden virtuális gépben), akkor az SCSI eszköz számának manuális megkeresése meglehetősen nehéz. Ne feledje továbbá, hogy a Windows és a VMWare SCSI-vezérlőinek száma eltérhet..
Hogyan kell a Windows-meghajtókat VMDK-fájlokhoz leképezni az UUID / SerialNumber segítségével a PowerShell segítségével?
A VMWare virtuális lemezek hozzárendelésének másik módja a vendég virtuális gép belsejében levő lemezekhez az, hogy összehasonlítsuk őket egyedi lemezazonosítójuk alapján. A VMWare-től ezt az attribútumot hívják UUID (Egyedi azonosító) és Windows rendszeren - Sorozatszám. Lássuk, hogyan lehet beszerezni a virtuális lemezek UUID-jét és SerialNumber-jét a PowerShell-en keresztül.
Alapértelmezés szerint az összes VMWare virtuális gép engedélyezve vandisk.EnableUUID = TRUE
, ez azt jelenti, hogy a vendég operációs rendszernek virtuális lemez azonosítókat kell látnia.A Windows lemezekkel kapcsolatos információkért használhatja a tárolómodul parancsmagjait vagy a WMI kéréseket. mert a mi esetünkben továbbra is vannak virtuális gépek a Windows Server 2008 R2 verzióval, amelyekben nincs tároló modul, a WMI-t fogjuk használni.
A vezérlő SCSI-számának, a rajta lévő eszköz SCSI-számának, a virtuális lemez sorozatszámának (SerialNumber / UUID), méretének és lemezeszámának a Windowshoz való beszerzéséhez futtassa a PowerShell parancsot:
$ DiskInfo = foreach ($ disk a Get-WmiObject Win32_DiskDrive fájlban) [pscustomobject] @ "DeviceID" = $ disk.DeviceID; "Felirat" = $ disk.Caption; "Kapacitás (GB)" = [matematika] :: Kerek ($ disk.size / 1GB, 0); "SerialNumber" = $ disk.SerialNumber "SCSIControllerNum" = $ disk.scsiport; "SCSIDeviceNum" = $ disk.scsitargetid; $ DiskInfo | ft
Példánkban meghatároztuk, hogy a Windows három meghajtót lát:
- FIZIKAI DRIVE0: SCSI 0. port, SCSI 0. cél, 6000c2939b153417dedbdce371ed497b sorozat
- FIZIKAI ADAT1: SCSI 0. port, SCSI 1. cél, 6000c2950ee961954909259642bb03bf
- FIZIKAI ADAT1: SCSI 4. port, SCSI 10. cél, 6000c2995fc3c4728de8b0596bb02ce3 sorozat
Most próbáljuk megszerezni az SCSI-vezérlők és a lemezek UUID-jeinek számát, amelyeket a VMware virtuális gép beállításai tartalmaznak. Virtuálisgép-paraméterek beolvasásához használja a PowerCLI-t.
Import-Modul VMware.VimAutomation.Core -ErrorAction SilentlyContinue connect-viserver vcenter1 $ vmName = "msk-sql1" $ vmHardDisks = Get-VM -Name $ vmName | Get-HardDisk $ vmDatacenterView = Get-VM -Name $ vmName | Get-Datacenter | Get-View $ virtualDiskManager = Get-View -Id VirtualDiskManager-virtualDiskManager $ vmresults = @ () foreach ($ vmHardDisk a $ vmHardDisks fájlban) $ string = $ vmHardDisk.Filename $ vmHardDiskUuid = ($ vmHardDack.Eachuidida.Eachuidida.Eachuidida.Eachuidida.hu) -Object $ _. Csere (","). Csere ('-', ")) $ vmresult =" "| Kiválasztás-objektum vmHardDiskDatastore, vmHardDiskVmdk, vmHardDiskName, vmHardDiskSize, vmHardDiskUuid $ vardHardDHHDDHHDDHHDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDNDDNDDDNDDNDDNDDDVDDDDDNDDDDDDDDDDDDDDDDVDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDHHHHHNHDDHVDNDDDHo árejévé váljāt az átalakítója. .split (']') [0] .split ('[') [1] $ vmresult.vmHardDiskVmdk = $ vmHardDisk.filename.split (']') [1] .trim () $ vmresult.vmHardDiskName = $ vmHardDisk .Name $ vmresult.vmHardDiskSize = $ vmHardDisk.CapacityGB $ vmresult.vmHardDiskUuid = $ vmHardDiskUuid $ vmresults + = $ vmresult $ vmresults | ft
Ez a szkript csatlakozik a vCenter szerverhez (vagy ESXi), és a megadott virtuális géphez megkapja a lemezt. A szkript futtatása után megkapja a virtuális gép virtuális lemezeinek listáját. Az eredménynek tartalmaznia kell a DataStore nevét, a vmdk fájl elérési útját, a lemez számát, méretét és UUID-ját..
Most a kapott UUID-k segítségével manuálisan leképezheti a vendég Windows-ban látható lemezeket a VMWare virtuális lemezekkel.
Ha rendszergazdai jogokkal rendelkezik egy virtuális gépen, amelyhez a Windows lemezeket és a vmdk fájlokat le kell térképeznie a VMWare-ben, használhat egy egyszerűbb PowerShell-parancsfájlt. A szkript a hálózaton keresztül fér hozzá a vendég Windows-hoz, információkat gyűjt a helyi lemezekről és bemutatja a VMWare lemezekkel való levelezést.
Teljes PowerShell szkriptkód:
Import-Modul VMware.VimAutomation.Core -ErrorAction SilentlyContinue connect-viserver vcenter1 $ vmName = "msk-sql1" $ WinHostName = "msk-sqlclu1.winitpro.ru" # A VMWare lemezek felsorolása $ VmDisks = $ vmName | Get-HardDisk $ vmDatacenterView = Get-VM -Name $ vmName | Get-Datacenter | Get-View $ virtualDiskManager = Get-View -Id VirtualDiskManager-virtualDiskManager # Rendszergazdai fiók és jelszó a vendég OS eléréséhez $ cred = if ($ cred) $ cred else Get-Credential # A Windows lemezeinek és partícióinak listája. WMI-n keresztül $ winDisk = Get-WmiObject -Class Win32_DiskDrive -ComputerName $ WinHostName -Credential $ cred $ diskToDriveVolume = Get-WmiObject Win32_DiskDrive -ComputerName $ WinHostName -Credential $ kred | % $ disk = $ _ $ partíciók = "ASSOCIATORS OF" + "Win32_DiskDrive.DeviceID = '$ ($ disk.DeviceID)'" + "WHERE AssocClass = Win32_DiskDriveToDiskPartition" Get-WmiObject -Query $ partíciók -ComputerNName -Hitelesítő $ kred | % $ partition = $ _ $ drives = "ASSOCIATORS OF" + "Win32_DiskPartition.DeviceID = '$ ($ partition.DeviceID)'" + "WHERE AssocClass = Win32_LogicalDiskToPartition" Get-WmiObject -Query $ drives -ComputerNName -Hitelesítő $ kred | % New-Object - Type PSCustomObject -Property @ Disk = $ disk.DeviceID DriveLetter = $ _. DeviceID VolumeName = $ _. VolumeName # # szerezze meg a meghajtó foreach sorozatszámát ($ disk a $ winDisk fájlban) $ disk | Add-Member -MemberType NoteProperty -Name AltSerialNumber -Value $ null $ diskSerialNumber = $ disk.SerialNumber if ($ disk.Model -notmatch 'VMware Virtual disk SCSI Disk Device') if ($ diskSerialNumber -match '^ \ S 12 $ ') $ diskSerialNumber = ($ diskSerialNumber | foreach [byte []] $ bytes = $ _. ToCharArray (); $ bytes | foreach $ _. ToString (' x2 ')) -join " $ disk.AltSerialNumber = $ diskSerialNumber # Az összes virtuális gép lemezeinek felsorolása, a Windows lemezekhez való hozzárendelése a SerialNumber / UUID segítségével $ diskMaps = @ () foreach ($ vmDisk a $ vmDisks fájlban) $ vmDiskUuid = $ virtualDiskManager.queryvirtualdiskuuid. , $ vmDatacenterView.MoRef) | foreach $ _. csere (","). csere ('-', ") $ windowsDisk = $ winDisk | ahol $ _. SerialNumber -eq $ vmDiskUuid if (-not $ windowsDisk) $ windowsDisk = $ winDisk | ahol $ _. AltSerialNumber -eq $ vmDisk.ScsiCanonicalName.substring (12,24) $ curDiskMap = "" | válasszuk a vmDiskDatastore, vmDiskVmdk, vmDiskName, WindowsDiskIndex, vmDiskUuid, WindowsDeviceID, meghajtók, kötetek $ curDiskMap.vmDiskDatastore = $ vmDisk.filename.split (']') [0] .split ('[') [m] $ vmDisk.filename.split (']') [1] .trim () $ curDiskMap.vmDiskName = $ vmDisk.Name $ curDiskMap.windowsDiskIndex = if ($ windowsDisk) $ windowsDisk.Index else "FAILED TO MATCH" $ curDiskMap.vmDiskUuid = $ vmDiskUuid $ curDiskMap.windowsDeviceID = if ($ windowsDisk) $ windowsDisk.DeviceID else "FAILED TO MATCH" $ driveVolumes = $ diskToDriveVolume | ahol $ _. Disk -eq $ windowsDisk.DeviceID $ curDiskMap.drives = $ driveVolumes.DriveLetter $ curDiskMap.volumes = $ driveVolumes.VolumeName $ diskMaps + = $ curDiskMap $ diskMaps = $ diskMaps | sort [int] $ _. vmDiskName.split (") [2] $ diskMaps | ft
Ezenkívül információkat küld a meghajtó betűiről és a Windows kötetcímkéiről.
Most könnyen kiderítheti, hogy a Windows melyik virtuális meghajtója felel meg..
Ha a Windows virtuális lemezeit csatlakoztatási ponton keresztül csatlakoztatják, akkor a kimenet nem tartalmaz információt a hozzárendelt meghajtó betűjéről és a kötetcímkéről.