domingo, 30 de marzo de 2014

Conceptos Virtualizacion Hyper-V 2012 R2

  • El Hypervisor tipo I está compuesto por el hardware fisíco, el hypervisor y una capa de paravirtualizacion de drivers y herramientas. Ej: VSphere, Xen, Hyper-V

  • El Hypervisor tipo II Compone todo lo expuesto en el tipo I, pero añade una capa mas que es el sistema operativo propio de la maquina en la que se ejecuta Ej: Microsoft Virtual Server, Workstation.


La virtualización de red no solo comunica las maquinas virtuales, sino que añade características propias de infraestructura de red (switches, Trunk, Vlan, etc)



Características de VMM

  • Despliegue de host con hyper-v
  • Creación de host y cluster Hyper-V
  • Grupo de Hosts
  • Gestion de varias plataformas
  • Configuración de Almacenamiento y Red
  • Ubicación inteligente y optimización dinámica
  • Optimización energética
  • PRO
  • PV2
Definición "App Controller": Una consola basada en web usada para proporcionar un acceso y delegación a nubes públicas y privadas asi como a maquinas virtuales. App Controller se conceta a varias instancias de VMM, Subscripciones de Azure o Recursos de Proveedores de Servicios.


Definición "MAP" Microsoft Assessment and Planning Toolkit: Herramienta de planificación y asesoramiento a la migración a Hyper-V de Microsoft.

Licenciamiento:

La versión Standard incluye la posibilidad de instalar dos maquinas virtuales junto con la del host.
La versión Enterprise incluye la posibilidad de instalar maquinas virtuales ilimitadas en el host.

La versión Hyper-V Server 2012 solo lleva el rol de Hyper-V y solo con línea de comando!! Ademas es gratuita, pero las maquinas a instalar han de ser licenciadas por separado (Quien regala bien vende si el que lo recibe lo entiend ;-) )

Windows 8.1 lleva Hyper-V igual que 2012 en todo menos en ciertas características como Alta disponibilidad o Live Migration.


Las maquinas virtuales requieren espacio en disco para:

  • Ficheros de discos duros virtuales
  • Ficheros de configuración
  • Checkpoints
  • Saved States o ficheros para guardar estado
Un servidor Hyper-V debería tener las siguientes tarjetas de red (6!!! cuidado con los blades...):

  • x1 NIC dedicada para gestión
  • x1 NIC dedicada para Red Máquinas virtuales
  • x2 NIC para almacenamiento compartido
  • x1 NIC para Comunicación interna del cluster
  • x1 NIC para Live Migratión
Después de la instalación de Hyper-V, Windows Server se mueve a la "Parent Partition" o Partición Raiz de Hyper-V

Hyper-V no tiene por que pertenecer a un Dominio, aunque bien es cierto que simplifica la administración. Si va a formar parte de un grupo de trabajo, hay que:

  •  Activar reglas Hyper-V del firewall (solo en el core servidor)
  •  Crear un usuario local con el mismo usuario y contraseña???
  •  Añadir el usuario local al grupo de administradores de Hyper-V
  •  Proporcionar permisos administrativos remotos a los usuarios locales.
El grupo "Hyper-V Administrators" local y de dominio está vacío por defecto, sus miembros tienen acceso completo a Hyper-V.

Remote FX: Proporciona una experiencia de escritorio remoto parecido a la local. Requiere:

  •   GPU dedicada
  •   Second Level Address Translation
  •   Servicio Rol RD Virtualization

Enhanced Session Mode: Remote Desktop sobre VMBus que permite cosas como portapaples compartido, redirección de impresoras, Smart Card para inicio de sesión, Redirección de dispositivos USB, Redirección de carpetas. Ser requiere cliente Windows 8.1, Windows Server 2012 R2 o Remote Desktop Users.

Offlloaded Data Tranfer: Función compatible con Hyper-V (llamada VAAI en VMWare). Esta función permite que las copias entre dos volúmenes en la misma SAN se realicen a nivel de SAN sin "intervención" directa de los host, ahorrando memoria y CPU.

SMB 3.0:

  •  Compatible con anteriores versiones de SMB
  •  SMB 3.0 en Windows Server 2012 R2  
  •  Solo se utiliza si ambos lados lo soportan
Novedades SMB 3.0 en Windows 2012 R2

  • SMB FailOver Transparente
  • SMB Scale Out
  • SMB Multicanal
  • SMB Direct (SMB sobre RDMA)
  • SMB Encriptado
  • VSS para comparticiones SMB
  • Gestión de comparticiones SMB por Power Shell
  • Hyper-V almacena sus ficheros en SMB 3.0 (ficheros de configuración, VHD & VHDX, Checkpoints)
  • El servidor de Ficheros y el de Hyper-V han de ser máquinas separadas! y miembros del mismo directorio activo
  • Las maquinas virtuales en ejecución pueden ser "deduplicadas" (VDI)
  • Sencillo de manejar y con la estructura existente.


La verison gratuita de Hyper-V al igual que la de Windows Server 2012 R2 soporta 64 nodos físicos en cluster y 8000 maquinas virtuales!











PowerShell para novatos III, Hyper-V Powershell

Bueno, parece ser que el Power Shell es de gran utilidad y uso en la gestión de Hyper-V.
He decidio crear esta entrada para mostrar algunas líneas que pueden ser útiles y en un momento dado pueden sacar de un entuerto ;-)

Para sacar todos los comandos que tiene Hyper-V:

Get-Command -Module Hyper-v

Una vez que vemos todos los comandos, podremos sacar información de uno que nos interese con, en nuestro caso "save-VM" (puede que se tenga que conectar para descargar la última versión):

Get-help save-VM

NOMBRE
    Save-VM

SINOPSIS
    Saves a virtual machine.


SINTAXIS
    Save-VM [-Name] <String[]> [-AsJob] [-ComputerName <String[]>] [<CommonParameters>]


    Save-VM [-VM] <VirtualMachine[]> [-AsJob] [<CommonParameters>]

DESCRIPCIÓN
    The Save-VM cmdlet saves a virtual machine. This is similar to hibernating a physical machine.


VÍNCULOS RELACIONADOS
    Online Version:
http://go.microsoft.com/fwlink/?LinkID=306936
NOTAS
    Para ver los ejemplos, escriba: "get-help Save-VM -examples".
    Para obtener más información, escriba: "get-help Save-VM -detailed".
    Para obtener información técnica, escriba: "get-help Save-VM -full".
    Para obtener ayuda disponible en línea, escriba: "get-help Save-VM -online"


Supongamos ahora que buscamos un comando del cual no sabemos nada... solo sabemos que es "part" o algo asi. En ese caso lanzaremos el siguiente comando:

PS C:\WINDOWS\system32> Get-Command *part*

CommandType     Name                                               ModuleName
-----------     ----                                               ----------
Function        Add-PartitionAccessPath                            Storage
Function        Get-NetCompartment                                 NetTCPIP
Function        Get-Partition                                      Storage
Function        Get-PartitionSupportedSize                         Storage
Function        New-Partition                                      Storage
Function        Remove-Partition                                   Storage
Function        Remove-PartitionAccessPath                         Storage
Function        Resize-Partition                                   Storage
Function        Set-Partition                                      Storage
Application     diskpart.exe


Para ver las características de varios host pondremos

Get-VMHost -ServerName host1,host2,

Name     LogicalProcessorCount MemoryCapacity(M) VirtualMachineMigrationEnabled
----     --------------------- ----------------- ------------------------------
host1 4                     8173,27734375     False

host2 4                     8173,27734375     True


Listado de las maquinas virtuales en sistema:

PS C:\WINDOWS\system32> Get-VM

Name      State CPUUsage(%) MemoryAssigned(M) Uptime   Status
----      ----- ----------- ----------------- ------   ------
HV-Ubuntu Off   0           0                 00:00:00 Funcionamiento normal
TestVM    Off   0           0                 00:00:00 Funcionamiento normal

Para sacar solo los datos que nos interesan, por ejemplo nombre y status:

PS C:\WINDOWS\system32> Get-VM |Format-List name,status

Name   : HV-Ubuntu
Status : Funcionamiento normal
Name   : TestVM
Status : Funcionamiento normal

Sacar información de los Switch de red en sistema


PS C:\WINDOWS\system32> Get-VMSwitch
Name             SwitchType NetAdapterInterfaceDescription
----             ---------- ------------------------------
Red Externa Wifi External   Qualcomm Atheros AR9285 Wireless Network Adapter
Red Interna      Private

Pero si queremos mas detalle del Switch como sus características completas usaremos -VMname para referirnos a el y format list * que nos mostrará todo.

Get-VmSwitch -VMName "MyVMswitch" | format-list *

Para ver el pool de recursos del servidor lanzaremos el siguiente comando (primordial hace referencia los mínimos montados por el sistema):

PS C:\WINDOWS\system32> Get-VMResourcePool

Name       ResourcePoolType       ParentName ResourceMeteringEnabled
----       ----------------       ---------- -----------------------
Primordial Processor                         False
Primordial FibreChannelConnection            False
Primordial FibreChannelPort                  False
Primordial VFD                               False
Primordial ISO                               False
Primordial VHD                               False
Primordial Ethernet                          False
Primordial Memory                            False


Crear disco virtual:

New-VHD -Path \\CAFSC01\HVCVMStorage\HAVM01.VHDX -Dynamic -Size 127GB

Crear maquina virtual

New-VM -Name HAVM01 -Path \\CAFSC01\HVCVMStorage -Memory 1GB -SwitchName
"KEMLABNET01" -BootDevice CD -VHDPath \\CAFSC01\HVCVMStorage\HAVM01.VHDX


Añadir disco a a maquina virtual:

 Add-VMDvdDrive -VMName HAVM01 -Path \\CAFSC01\ISO\WS2012RTM.ISO

 No establecer autostartup

Set-VM -Name HAVM01 -AutomaticStartAction Nothing


sábado, 29 de marzo de 2014

Novedades Hyper-V Virtual Switch en Windows Server 2012

En Windows Sernver 2012, Hyper-V Virtual Switch incluye nuevas características para gestión, seguridad, aislamiento, visibilidad y escalabilidad.

A continuación se muestra un breve resumen de las nuevas características:

  • Comandos PowerShell para los Switch de Hyper-V
  • Múltiples NICs Virtuales
  • Nuevas funcionalidades de Seguridad
  • PVLAN (Port Virtual Local Area Network) y "Modo Trunk"
  • Port Mirroring (espejo de puertos)
  • receive Side Scaling (RSS) y Dynamic Virtual Machine Queue (dVMQ)

Comandos PowerShell para los Switch de Hyper-V


Ahora se puede, desde la línea de comandos ejecutar comandos de forma manual o como parte de un script para configurar un Virtual Switch y sus características.

La sintaxis básica del PowerShell comprende <Verbo>-<Nombre>, como por ejemplo el siguiente ejemplo:

"Get-VMSwitch"

Los nombres que se pueden utilizar son:

  • VMNetworkAdapter
  • VMNetworkAdapterAc1
  • VMNetworkAdapterVlan
  • VMSwitch

Una "VMNetworkAdapter" incluye los siguientes elementos:

  • La tarjeta de red virtual en la VM (NIC)
  • Un Puerto de Hyper-V Switch
"VMNetworkAdapter" es el nombre principal que puedes utilizar para gestionar varias características de seguridad, Calidad de Servicio QoS, port mirrioring, y demás cuestiones. Seguramente es evidente y no merece indicarlo, pero hay que recordar que es conveniente abrir el PowerShell con la cuenta de administrador, ya que de otra manera los resultados que nos arroja pueden no ser reales.
Para mas información tecleas los siguiente en PowerShell.

Get-Help Set-VMNetworkAdapter
Get_Help *-VMNetworkAdapter (para obtener los verbos de PowerShell)


PS C:\Users\> Get-Help *-VMNetworkAdapter
Name                              Category  Module                    Synopsis
----                              --------  ------                    --------
Add-VMNetworkAdapter              Cmdlet    Hyper-V                   ...
Connect-VMNetworkAdapter          Cmdlet    Hyper-V                   ...
Disconnect-VMNetworkAdapter       Cmdlet    Hyper-V                   ...
Get-VMNetworkAdapter              Cmdlet    Hyper-V                   ...
Remove-VMNetworkAdapter           Cmdlet    Hyper-V                   ...
Rename-VMNetworkAdapter           Cmdlet    Hyper-V                   ...
Set-VMNetworkAdapter              Cmdlet    Hyper-V                   ...
Test-VMNetworkAdapter             Cmdlet    Hyper-V                   ...

Para ver el estado de los adaptadores VMNetworkAdapter tienes que conocer primero las maquinas que tienes en tu servidor y primero teclearías lo siguiente:

PS C:\WINDOWS\system32> Get-VM

Name      State       CPUUsage(%) MemoryAssigned(M) Uptime   Status
----      -----       ----------- ----------------- ------   ------
HV-Ubuntu OffCritical 0           0                 00:00:00 No se puede conectar al almacenamiento de configuración...
TestVM    Off         0           0                 00:00:00 Funcionamiento normal

Con el comando anterior sabemos que el modificador correspondiente a "-VMName" es en nuestro ejemplo "HV-Ubuntu" y "TestVM". Que podremos utilizar para el siguiente comando para obtener todos los detalles del adaptatador virtual:

Get‐VMNetworkAdapter –VMName MyVM | format‐list *
El para ver los Switch que tenemos:

 Get-VMSwitch

Pero si queremos mas detalle del Switch como sus características...

Get-VmSwitch -VMName "MyVMswitch" | format-list *
 
 

Múltiples NICs Virtuales

 
En versiones anteriores de Hyper-V, solo se soportaba una tarjeta virtual raíz, mientras que en Windows Server 2012 se soportan múltiples Tarjetas. Además de esto, ahora se puede compartir la tarjeta de red física que está asociada a un Hyper-V Switch con el sistema operativo de gestión.
 
Nota: Esta funcionalidad hay que activarla ya que no viene por defecto. En el panel de gestión de un virtual switch, hay que acceder al panel de detalles y seleccionar "
 
 
 

 
 
Puedes crear varias tarjetas de red virtuales principales que puedes utilizar para "live migration", almacenamiento, o gestión pero lo mejor es que puedes asignarle a cada una de ellas una VLAN diferente. También es posible crear diferentes políticas de QoS para cada interfaz virtual.
 
A continuación se muestra una representación visual de lo expuesto hasta ahora:
 
 
 
Para crear Tarjetas de red virtuales Virtuales para el sistema operativo de gestión se pueden utilizar los siguientes comandos en Power Shell:
 
Add-VMNetworkAdapter -ManagementOS -Name Management
Add-VMNetworkAdapter -ManagementOS -Name Storage
Add-VMNetworkAdapter -ManagementOS -Name "Live Migration"
 
Aunque es de lógica, para elmiminar estas nuevas "tarjetas" se requiere el siguiente comando:
 
remove-VMNetworkAdapter -ManagementOS -Name Management
remove-VMNetworkAdapter -ManagementOS -Name Storage
remove-VMNetworkAdapter -ManagementOS -Name "Live Migration"
 
 

Nuevas funcionalidades de Seguridad

 
En Hyper-V Virtual Switch tiene las siguientes mejoras:
 
  1. Port Access Control List (ACLs)
  2. MacAddressSpoofing
  3. RouterGuard
  4. DHCPGuard
  5. IPsec Task Offload (IpsecTO)
 
1-Port Access Control List (ACLs)
 
Un "port ACL" es una regla que puedes aplicar en un puerto del Hypwer-V Switch. La regla especifica que paquete está permitido o no en su acceso a la VM. ACLs tienen tres elementos con las siguiente estructura:
 
 
   Dirección Remota o Local
   Dirección
   Acción
 
 

Puedes especificar una Dirección local o remota, pero no puedes especificar ambas. El valor para esto puede ser IPv4, IPv6 o una dirección MAC o incluso un rango de direcciones IP.
 
Se pueden configurar varias reglas ACL en un puerto Hyper-V switch. La gestión del trafico ACL puede ser:
 
 Inbound (trafico entrante)
Outbound (trafico saliente)
Both (trafico entrante y saliente)
 
2-. MacAddressSpoofing
 
Esta funcionalidad te permite cambiar la dirección MAC origen de una maquina virtual es sus paquetes salientes. Si tienes una VM en que quieras activar esta funcionalidad solo tienes que ejecutar el siguiente comando:
 
Set-VMNetwoekAdapter -VMName MyVM .MacAddressSpoofing On
 
Y para bloquear la opción o deshabilitarla:
 
Set-VMNetwoekAdapter -VMName MyVM .MacAddressSpoofing Off
 
3-. RouterGuard
 
RouterGuard te permite especificar que mensajes de anuncio o redirección provenientes de una VM no autorizada deberían ser descartados.
 
Si tienen una VM que quieres que permita anuncio de rutas o mensajes de redirección desde maquinas no autorizadas, tendrías que ejecutar el siguiente comando:
 
Set-VMNetworkAdapter -VMName Myvm -RouteGuard off
 
Y para acctivarlo de nuevo...
 
Set-VMNetworkAdapter -VMName Myvm -RouteGuard on
 
 
4-, DHCPGuard
 
Permite especificar que mensajes DHCP provenientes de maquinas virtualies pueden ser descartados y asi evitar posible "daños" a nuestra organización. Para las maquinas que realizan esta función, se puede desactivar.
 
Set-VMNetworkAdapter - Name MyVM -RouteGuard Off (valor por defecto...)
 
Para desactivarlo...
 
Set-VMNetworkAdapter - Name MyVM -RouteGuard On
 
 
5-. IPsec Task Offload (IpsecTO)
 
Muchos algoritmos de encriptación hacen uso de forma intensiva del procesador, lo que puede llevar a un pobre rendimiento en la maquina virtual. Hyper-V Virtual Switch proporciona la posibilidad de usar IpsecTo que te permite derivar los procesos de encriptación a la Tarjeta de Red y por tanto utilizar menos CPU del host. Esta función, como es evidente, requiere de una tarjeta de red con esta función.
 

Port Virtual Local Área Network (PVLAN) y Trunk Mode

 
El aislamiento de red (Network Isolation) se relaciona también con la seguridad, pero a diferencia de IPSec, que encripta el trafico, el aislamiento segmenta el trafico de manera lógica
 
El uso de VLANs, por otro lado, sufre problemas de crecimiento sobre todo en entornos altamente virtualizados. El identificador de VLAN está compuesto por un número de 12 bits, y el rango de VLANs se encuentra entre 1-4095. En según que entornos, esto es un gran problema de gestión (lo se por experiencia incluso en entornos no virtualizados).
 
PVLAN soluciona alguno de los problemas de crecimiento de las VLANS. PVLAN es una característica de puerto del Switch. Con PVLAN existen dos VLAN IDs, un primario VLAN ID y otro secundario. Un PVLAN puede estar en uno de los siguientes tres modos:
 
 
  •    Isolated (aislado) Comunica solo con puertos Promiscuos en el PVLAN
  •    Promiscuous (promiscuo) Comunica con todos los puertos en la PVLAN
  •    Community (comunidad) Comunica con puertos en la misma comunidad y con puertos Promiscuos en la PVLAN
 
PVLAN puede ser usado para crear entornos en los cuales las VMs pueden solo interactuar con Internet y no tener visibilidad del trafico de red de otras VMs. Para lograr esto, coloca todas las VMs (en realidad sus puertos del Hyper-V Switch) en la misma PVLAN con configuracions "isolated" o aislada.El siguiente Script pone el puerto de una VM en una PVLAN en modo "aislado"
 
Set-VMnetwoerkAdapterVlan -VMName MyVM -Isolated -PrimaryVlanID 10 -SecondaryVlanID 20
 

Trunk Mode

 
El Hyper-V Virtual Switch proporciona soporte para "trunk mode" que permite a una VM la posibilidad de ver el tráfico de múltiples VLANS.
 
En este modo, un puerto switch recibirá trafico de todas las VLANS que se configuran en la lista de VLANs permitidas. También se puede configurar un puerto que de Switch que está conectado a una VM pero que no esta asociado a ninguna tarjeta de red y se requiere en modo trunk
 
En el siguiente ejemplo la maquina puede mandar y recibir en cualquier VLAN de la lista permitida (VLAN entre la 1 y la 100). Si no hay VLAN especificada en el paquete, el paquete se trata como si proviniera de la VLAN10
 
Set-VMnetworkadapterVlan -VMName MyVM -Trunk -AllowedVlanIDList 1-100 -NativeVLANId 10
 
 

Port Mirroring

 
Port Mirroring o duplicación de puerto consiste en que el trafico que circula por un puerto es copiado a un puerto duplicado. Esta opción se utiliza para multitud de cosas entre las que pasan depuración de errores de red, sondas, sistemas de analisis y seguridad etc.
 
En Hyper-V Switch puedes seleccionar varios puertos de Switch como "origen" del trafico o "source" y un puerto como destino o "destination". A continuación se muestra un ejemplo en el cual una máquina denominada "monitorVM" recibe todo el trafico con destino a "myVM" y "MyVM2".
 
Set-VMNetworkAdapter -VMName MyVM -PortMirroring Source
Set-VMNetworkAdapter -VMName MyVM2 -PortMirroring Source
Set-VMNetworkAdapter -VMName monitorVM -PortMirroring Destination
 
 

 

Receive Side Scaling (RSS) y Dynamic Virtual Machine Queue (dVMQ)

 
En temas de red, es conveniente resolver los casos en los que el trafico de red es bloqueado o omitido por que puede ocasionar latencia en general.
 
Para el tráfico nativo, RSS procesa el tráfico entrante de tal manera que no es manejado únicamente por una única CPU/core como ocurriría habitualmente. RSS se encarga de balancear de forma efectiva la gestión del trafico de red entre múltiples CPUs/cores.
 
dVMQ realiza una operación similar a RSS pero para el tráfico que llega externamente del servidor hacia el Hyper-V Virtual Switch. Con dVMQ, la MAC de destino es marcada para poner el trafico destinado para una Tarjeta de red virtual en una cola especifica. Al igual que ocurre con RSS, se balancea sobre multiples CPUs/cores. Si tus VMs en un un Hyper-V Virtual Switch reciben mucho trafico externo, es una buena idea usar dVMQ.
 
dVMQ incluye balanceo dinamico. Antiguamente, la mac era marcada de forma estatica, y era difícil de ser manejada por dVMQ. La gestión de dVMQ es es simple y está habilitada por defecto.
 
Si por algún motivo dVMQ se desactiva, puede ser activado de nuevo con el siguiente comando:
 
Enable-NetAdapterVmq "mihypervvirtualSwitch"