miércoles, 30 de junio de 2010

Incrementados los límites de VM soportadas en Hyper-V R2 cluster

Hasta hace unos días, el límite de VM´s en un un nodo de clúster de Hyper-V R2 era de 64 máquinas en hasta 16 nodos de cluster, lo que nos daba un resultado máximo de 1024 máquinas

Se han incrementado dichos límites y ahora está soportado por nodo de clúster hasta 384 máquinas por nodo ó 1000 VM´s en total en el clúster.

La referencia a ésto la encontraís en : http://technet.microsoft.com/en-us/library/ee405267(WS.10).aspx

Powershells para ESX 4.0 con Powercli

Esta semana me está tocando pelearme con unos reports para un generoso Datacenter de virtualización de VMWAre de un cliente digamos.... "de los grandes".
Y como uno es así... y barriendo un poco para casa, estoy rehaciendo scripts en powershell para Vsphere Powercli . Powercli es una Snapin adicional para nuestro Powershell que nos ayudará a conectarnos a los virtualcenter y a sus respectivos ESX y trabajar con ellos directamente, acciones contra los Appliances,etc,etc,etc.



Powercli añade un catálogo de cmdlets bastante curioso. El requisito que tendremos será tener una máquina con los puertos de escucha del Virtual Center abiertos (en mi caso 443), la powershell 1.0 y que ejecutemos powercli con un usuario que esté dado de alta en la administración de VMware. La otra forma sería instalar la powercli en cada uno de los virtualcenter y ya desde allí ejecutar en local los scripts. En micaso opté por la primera opción, puesto que no quiero dejar ningún software adicional en los appliance.

Para la descarga he necesitado me proporcionen credenciales de VMware en la web :-

Bueno, aquí os paso algunos cmdlets que he usado:

Para obtener datos del HW de los ESX

Get-VMHost Get-View ForEach-Object { $_.Summary.Hardware } Select-object Vendor, Model, MemorySize, CpuModel, CpuMhz, NumCpuPkgs, NumCpuCores, NumCpuThreads, NumNics, NumHBAs

Para obtener datos de los virtual Center:

pasamos la variable
$vcversion = get-view serviceinstance

y la usamos para pedirle versionados, nombres,etc.
$vcversion.content.about select Version, Build, FullName

Otras variables y sentencias que he usado para los datos del cluster:


$clusters = Get-Cluster Sort Name
$vmhosts = Get-VMHost -Location $cluster
$NumHosts = ($vmhosts Measure-Object).Count
$vmhosts Sort Name -Descending % { $server = $_ get-view; $server.Config.Product select { $server.Name }, Version, Build, FullName }
$vms = Get-VM -Location $cluster Where {$_.PowerState -eq "PoweredOn"}


Para los snapshots:


$snap = get-vm get-snapshot
$snap select vm, name,created,description


Más info en: http://blogs.vmware.com/vipowershell/2009/09/how-to-run-powercli-scripts-from-vcenter-alarms.html

y aquí todos los nuevos cmdlets: http://www.vmware.com/support/developer/windowstoolkit/wintk40u1/html/index.html

lunes, 21 de junio de 2010

Script para añadir discos passtrough a controladoras IDE y a controladoras SCSI

Aquí os dejo un par de scripts para añadir discos virtuales a nuestras máquinas virtuales. Será tu elección y diseño la que te haga escoger si tu disco será IDE o SCSI.
Como ya sabéis, con controladora SCSI y con Windows 2008 R2 este script nos ayudará a ampliar en CALIENTE el espacio en disco de nuestras máquinas. Sistemas como Linux deberán ser con controladora IDE. Para ejecutarlos, guarda el script desde las líneas discontínuas a un bloc de notas y guardalo con extensión .ps1


Un saludo.



PARA CONTROLADORA IDE
--------------------------------------------------------------------------------------
$HyperVGuest = "Demo-VM-Passtrough"

#DAMOS DE ALTA EL ESPACIO DE NOMBRE PARA EL SCRIPT#
#SE ESTABLECE EL ESPACIO DE NOBMRE ROOT\VIRTUALIZATION PARA LA VARIABLE HYPERVGUEST#

$VMManagementService = Get-WmiObject -class "Msvm_VirtualSystemManagementService" -namespace "root\virtualization"
$Vm = Get-WmiObject -Namespace "root\virtualization" -Query "Select * From Msvm_ComputerSystem Where ElementName='$HyperVGuest'"

# SE DEFINE QUÉ CONFIGURACIÓN DE MÁQUINA NOS INTERESA INVESTIGAR #
$VMSettingData = Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$Vm} Where ResultClass=Msvm_VirtualSystemSettingData AssocClass=Msvm_SettingsDefineState"

# SE DEFINE LA CONTROLADORA QUE QUEREMOS ESCOGER: IDE CONTROLLER#

$VmIdeController = (Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$VMSettingData} Where ResultClass=Msvm_ResourceAllocationSettingData AssocClass=Msvm_VirtualSystemSettingDataComponent" |`
where-object {$_.ResourceSubType -eq "Microsoft Emulated IDE Controller" -and $_.Address -eq 0})
# SE DEFINE LA LOCALIZACIÓN DEL DISCO #
$DiskAllocationSetting = Get-WmiObject -Namespace "root\virtualization" -Query "SELECT * FROM Msvm_AllocationCapabilities WHERE ResourceSubType = 'Microsoft Physical Disk Drive'"
$DefaultHardDisk = (Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$DiskAllocationSetting} Where ResultClass=Msvm_ResourceAllocationSettingData AssocClass=Msvm_SettingsDefineCapabilities" | `
where-object {$_.InstanceID -like "*Default"})

$Disk = Get-WmiObject -Namespace "root\virtualization" -Query "select * from Msvm_DiskDrive Where DriveNumber=2"
#$Disk = Get-WmiObject -Namespace "root\virtualization" -Query "select * from Msvm_DiskDrive Where ElementName Like '%Lun 200%'"

$DefaultHardDisk.Parent = $VmIdeController.__Path
$DefaultHardDisk.Address = 0
$DefaultHardDisk.HostResource = $Disk.__PATH

#AÑADE EL DISCO VIRTUAL#
$VMManagementService.AddVirtualSystemResources($VM, $DefaultHardDisk.PSBase.GetText(1)) | ProcessWMIJob $VMManagementService "AddVirtualSystemResources"

---------------------------------------------------------------------------------


PARA CONTROLADORA SCSI

--------------------------------------------------------------------------------------
$HyperVGuest = "Demo-VM-Passtrough"

#DAMOS DE ALTA EL ESPACIO DE NOMBRE PARA EL SCRIPT#
#SE ESTABLECE EL ESPACIO DE NOBMRE ROOT\VIRTUALIZATION PARA LA VARIABLE HYPERVGUEST#

$VMManagementService = Get-WmiObject -class "Msvm_VirtualSystemManagementService" -namespace "root\virtualization"
$Vm = Get-WmiObject -Namespace "root\virtualization" -Query "Select * From Msvm_ComputerSystem Where ElementName='$HyperVGuest'"


# SE DEFINE QUÉ CONFIGURACIÓN DE MÁQUINA NOS INTERESA INVESTIGAR #

$VMSettingData = Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$Vm} Where ResultClass=Msvm_VirtualSystemSettingData AssocClass=Msvm_SettingsDefineState"

# SE DEFINE LA CONTROLADORA QUE QUEREMOS ESCOGER: SCSI CONTROLLER#

$VmScsiController = (Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$VMSettingData} Where ResultClass=Msvm_ResourceAllocationSettingData AssocClass=Msvm_VirtualSystemSettingDataComponent" | `
where-object {$_.ElementName -eq "SCSI Controller"})
# SE DEFINE LA LOCALIZACIÓN DEL DISCO #

$DiskAllocationSetting = Get-WmiObject -Namespace "root\virtualization" -Query "SELECT * FROM Msvm_AllocationCapabilities WHERE ResourceSubType = 'Microsoft Physical Disk Drive'"


$DefaultHardDisk = (Get-WmiObject -Namespace "root\virtualization" -Query "Associators of {$DiskAllocationSetting} Where ResultClass=Msvm_ResourceAllocationSettingData AssocClass=Msvm_SettingsDefineCapabilities" | `
where-object {$_.InstanceID -like "*Default"}) $Disk = Get-WmiObject -Namespace "root\virtualization" -Query "select * from Msvm_DiskDrive Where DriveNumber=2"


#$Disk = Get-WmiObject -Namespace "root\virtualization" -Query "select * from Msvm_DiskDrive Where ElementName Like '%Lun 200%'"
$DefaultHardDisk.Parent = $VmScsiController.__Path


$DefaultHardDisk.Address = 0
$DefaultHardDisk.HostResource = $Disk.__PATH
#AÑADE EL DISCO VIRTUAL#
$VMManagementService.AddVirtualSystemResources($VM, $DefaultHardDisk.PSBase.GetText(1)) | ProcessWMIJob $VMManagementService "AddVirtualSystemResources"

Lista de todas las actualizaciones posibles para Hyper-V

Hola.
El equipo de producto de Microsoft revisa estos dos enlaces asiduamente, donde están ubicadas todas las actualizaciones para Hyper-V tanto para Windows 2008 como para Windows 2008 R2.

Hyper-V Update List for Windows Server 2008: http://technet.microsoft.com/en-us/library/dd430893(WS.10).aspx


Hyper-V Update List for Windows Server 2008 R2: http://technet.microsoft.com/en-us/library/ff394763(WS.10).aspx

Os recomiendo tengáis las dos urls presentes en vuestros despliegues.

viernes, 4 de junio de 2010

Pregunta en relación con las copias de seguridad e Hyper-V

Hola.

El miércoles pasado me hicieron una consulta sobre copia de seguridad en Hyper-V con DPM y creo que sería positivo compartirlo con vosotros.

La pregunta venía enfocada al artículo http://technet.microsoft.com/en-us/library/dd347838.aspx en la que indica la existencia de un escenario no soportado:


Unsupported Scenarios

DPM 2007 SP1 does not support the backup of virtual machines that do not have storage on the host. However, if you have at least one virtual hard disk (VHD) of the virtual machine on the local host, DPM protects the local VHD.


Aquí os dejo mi contestación y consideraciones. DPM 2007 y DPM 2010 realiza los backups de las máquinas virtuales a través de tecnología de snapshots con Volume Shadow Services (VSS). Como ya sabréis, existe la posibilidad de “mapear” discos físicos de hosts Hyper-V a máquinas virtuales, los famosos “Pass Through Disks”. Bien, pues DPM no “soporta” el Backup directo de dichos discos pass-trough. Recordemos que en el host el disco pass-trough está físicamente despresentado, por lo tanto el administrador de discos no tiene propiedad de él y DPM no puede realizar backup de algo que no es "visible".

¿Existe solución o alternativa? Si. A la máquina virtual se le instalaría el agente de Backup de DPM y se realizará el Backup de la unidad lógica como si de una máquina física se tratara.


Un saludo, Samuel García.