lunes, 25 de junio de 2018

Construye tu propia Game Boy por 30€

A modo de celebración del 10 aniversario de la plataforma Odroid, han sacado a la venta un kit de componentes que incluye una placa especial aniversario preparada para que puedas ensamblar todos los componentes a modo de una Game Boy.


Realmente esta es solo una de las funciones del proyecto, puesto que la idea es aprender cómo funcionan todos los elementos, a la vez que puedas divertirte. Y para ello, no solo puedes darle al invento la funcionalidad de un emulador de roms, sino que también te sirve para aprender su programación básica dia a dia, permitiendote también montarte tu propio juego de tetris, o montarte una estacion meteorológica portatil, o simplemente, aprender a añadirle una pantalla adicional... o yo que se, controlar via wifi las funciones de la placa, o comunicacion via terminal por bluetooth. Infinidad de posibilidades, vaya.


Aqui podeis ver un ejemplo de los ocmponentes que recibirás, pero tranquilo, porque hay mil totoriales sobre su montaje, para que no sufras mucho. Por ejemplo, en ESTE enlace, tienes uno bastante majo.

Os dejo un vídeo del juguetito en cuestión ya montado,


Y otro video más práctico donde se ve el paquete completo que recibes, y el montaje del mismo:


De todas maneras, lo mejor es pasarse por la web, AQUI, donde también puedes realizar la compra del Kit. Por cierto, puntualmente, está disponible en Amazon EEUU, en ESTE enlace, pero ahora mismo, está agotado. Por cierto, admiten pago con Paypal.

Con esto, tienes diversión asegurada para todo el verano, no solo con los emuladores, también con los proyectos a realizar con esta placa.

Creando copias de backup programadas con VeeamZIP

Ey, un momento... ¿Pero una de las pegas de VeeamZip no es que no se pueden programar copias, ya que es un software gratuito? Bueno...si, no se podía... hasta la segunda actualización de Veeam Backup 9.5, donde se ha agregado esta funcionalidad mediante cmdlets, lanzables con Start-VBRZIP en Powershell.


Veeam te facilita incluso el script preparado para descargar y configurar los parámetros conforme a tus necesidades. Aqui tienes el Script para VMware y para Hyper-V listos. De todas formas hago aqui el copypaste del script, para que le eches un ojo antes de descargarlo. Verás que es simple.

# Author: Vladimir Eremin
# Created Date: 3/24/2015
# http://forums.veeam.com/member31097.html
#

##################################################################
#                   User Defined Variables
##################################################################

# Names of VMs to backup separated by comma (Mandatory). For instance, $VMNames = “VM1”,”VM2”
$VMNames = ""

# Name of vCenter or standalone host VMs to backup reside on (Mandatory)
$HostName = ""

# Directory that VM backups should go to (Mandatory; for instance, C:\Backup)
$Directory = ""

# Desired compression level (Optional; Possible values: 0 - None, 4 - Dedupe-friendly, 5 - Optimal, 6 - High, 9 - Extreme)
$CompressionLevel = "5"

# Quiesce VM when taking snapshot (Optional; VMware Tools are required; Possible values: $True/$False)
$EnableQuiescence = $True

# Protect resulting backup with encryption key (Optional; $True/$False)
$EnableEncryption = $True

# Encryption Key (Optional; path to a secure string)
$EncryptionKey = ""

# Retention settings (Optional; By default, VeeamZIP files are not removed and kept in the specified location for an indefinite period of time.
# Possible values: Never , Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month)
$Retention = "Never"

##################################################################
#                   Notification Settings
##################################################################

# Enable notification (Optional)
$EnableNotification = $True

# Email SMTP server
$SMTPServer = ""

# Email FROM
$EmailFrom = ""

# Email TO
$EmailTo = ""

# Email subject
$EmailSubject = ""

##################################################################
#                   Email formatting
##################################################################

$style = "<style>BODY{font-family: Arial; font-size: 10pt;}"
$style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}"
$style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"
$style = $style + "TD{border: 1px solid black; padding: 5px; }"
$style = $style + "</style>"

##################################################################
#                   End User Defined Variables
##################################################################

#################### DO NOT MODIFY PAST THIS LINE ################
Asnp VeeamPSSnapin

$Server = Get-VBRServer -name $HostName
$MesssagyBody = @()

foreach ($VMName in $VMNames)
{
  $VM = Find-VBRViEntity -Name $VMName -Server $Server
 
  If ($EnableEncryption)
  {
    $EncryptionKey = Add-VBREncryptionKey -Password (cat $EncryptionKey | ConvertTo-SecureString)
    $ZIPSession = Start-VBRZip -Entity $VM -Folder $Directory -Compression $CompressionLevel -DisableQuiesce:(!$EnableQuiescence) -AutoDelete $Retention -EncryptionKey $EncryptionKey
  }
 
  Else
  {
    $ZIPSession = Start-VBRZip -Entity $VM -Folder $Directory -Compression $CompressionLevel -DisableQuiesce:(!$EnableQuiescence) -AutoDelete $Retention
  }
 
  If ($EnableNotification)
  {
    $TaskSessions = $ZIPSession.GetTaskSessions().logger.getlog().updatedrecords
    $FailedSessions =  $TaskSessions | where {$_.status -eq "EWarning" -or $_.Status -eq "EFailed"}
 
  if ($FailedSessions -ne $Null)
  {
    $MesssagyBody = $MesssagyBody + ($ZIPSession | Select-Object @{n="Name";e={($_.name).Substring(0, $_.name.LastIndexOf("("))}} ,@{n="Start Time";e={$_.CreationTime}},@{n="End Time";e={$_.EndTime}},Result,@{n="Details";e={$FailedSessions.Title}})
  }
  
  Else
  {
    $MesssagyBody = $MesssagyBody + ($ZIPSession | Select-Object @{n="Name";e={($_.name).Substring(0, $_.name.LastIndexOf("("))}} ,@{n="Start Time";e={$_.CreationTime}},@{n="End Time";e={$_.EndTime}},Result,@{n="Details";e={($TaskSessions | sort creationtime -Descending | select -first 1).Title}})
  }
 
  }  
}
If ($EnableNotification)
{
$Message = New-Object System.Net.Mail.MailMessage $EmailFrom, $EmailTo
$Message.Subject = $EmailSubject
$Message.IsBodyHTML = $True
$message.Body = $MesssagyBody | ConvertTo-Html -head $style | Out-String
$SMTP = New-Object Net.Mail.SmtpClient($SMTPServer)
$SMTP.Send($Message)
}



Por cierto, aunque lo indica la cabecera, no está de mas agradecerle el esfuerzo a Vladimir Eremin, un crack de Veeam y Powershell.

Yo me suelo cargar la parte de email formatting y notification settings porque la notificación la realizo posteriormente con otro sistema, pero esto va por gustos. En fin, seguimos:

En rojo, las partes que debes modificar conforme a tu sistema.

Hay una parte, $EnableEncryption = $True y $EncryptionKey = "" que hacen referencia a la introduccion de un sistema de encriptado e copias, altamente recomendado, por seguridad. Pero esta parte del script está incompleta. Es decir, si pones $EnableEncryption = $False, no hay problema, pero si pones True, previamente, en Powershell, necesitas ingresar las siguientes lineas:

$SecurePassword = Read-Host -Prompt "Enter password" -AsSecureString
$SecurePassword | ConvertFrom-SecureString > “Directorio donde la clave debería almacenarse; C:\SecureString.txt, for instance”

Despues de esto, en el script, manteniendo la encriptacion en $True, en la siguiente linea, la de $EncryptionKey, introduces la ruta del .txt que indicaste previamente. Esto es así porque powershell no admite contraseñas en cadenas regulares. 

Vamos ahora con la parte de la programación de la tarea programada para la ejecucion del script. A estas alturas de la película no voy a explicar cómo se crea una tarea programada, pero sí indicaré el único punto delicado de la configuración, la acción "Ejecutar un programa". El programador de tareas ejecuta por defecto CMD, no powershell, asi que hay que llamar a Powershell e indicarle como añadido la ruta del archivo a ejecutar:


O bien, lo haces como un parámetro agregado a la invocacion del programa, así:

Powershell -file "aqui la ruta del archivo .ps1" sin comillas

¡No tiene mas! Visto asi parece complicado, pero es muy sencillo, de veras. A ver si saco tiempo, y para el siguiente post indico cómo enlazar esta copia completa de la VM con un sistema de almacenamiento en la nube, permitiendonos dejar así unas copias perfectas para cubrir una contingencia tipo Disaster Recovery.

Por si acaso, una vez realizada la programación, ejecutala a mano. Nunca está de más asegurarse de que la tarea funciona.

viernes, 22 de junio de 2018

VeeamZip: ¡el backup gratis de VMs existe!

Ultimamente se está produciendo un giro al software gratuito por parte de las grandes empresas, viendolo como un método de entrada de su producto para las grandes licencias a futuro, lo que es una política bastante acertada. Muchas veces las empresas necesitan previamente un producto de prueba para valorar sus ventajas y debilidades. Otras, simplemente, la empresa es pequeña y no requiere el nivel de complejidad de determinados productos. Y aquí entra VeeamZip.


VeeamZip es una herramienta que viene incluida en Veeam Backup & Replication, pero que a la vez es lo que Veeam facilita como Veeam Backup Free Edition. Y es brutal. Para no tener coste, es una herramienta que te permite realizar copias de tus máquinas virtuales al punto de obtener granularidad a nivel de archivo, por si solo necesitas recuperar un pequeño dato, y no toda la VM. Pero ademas, los backups que realizas contienen los datos de configuración de las máquinas, contenido en un único archivo .vbx.  Esto es simplemente perfecto, puesto que el archivo obtenido puede ser fácilmente movido o copiado a cualquier medio que quieras, como un flashdrive, o incluso a la nube. Ademas, el archivo resultante tiene un peso reducido, e incluso permite ajustar el nivel de compresión del mismo. En definitiva, crea un archivo único con todos los datos necesarios para poder hacer una restauración completa, ideal para casos de Disaster Recovery.


Pero tiene todavía más ventajas. Permite realizar el backup de tus VMs en caliente, sin necesidad de apagar la máquina. Y si esta dispone de las correspondientes VM Tools, con quiescencia de archivos, incluso, para asegurarte un backup consistente y sin errores.

Incluso permite realizar un Storage vMotion (un movimiento de la VM de un datastore a otro, incluso de datastore local a compartido y viceversa) incluso si normalmente no puedes sin apagar la maquina, como puede pasar si tu licencia de VMware es por ejemplo una Essentials.

Puedes probarlo accediendo al enlace de descarga desde AQUI. Necesitarás registrarte con Veeam para obtener el enlace de descarga. Aunque, ya que VeeamZip es como un añadido a Veeam Backup, te recomiendo que mires mi anterior post, cómo conseguir una licencia Free para Veeam, y pruebes directamente la versión full.

Puedes obtener algo más de info en su web, https://www.veeam.com/es-lat/virtual-machine-backup-solution-free.html ya que esto que te comento es un resumen "rapidito" de sus ventajas. De todas formas, VeeamZip es tan condenadamente simple que te recomiendo que lo instales y juegues un poco con él, ya que le tomarás el pulso a la aplicacion más rapido que leyendo las 4 cosas de su web.

Una única pega: No permite crear tareas programadas, lo tienes que ejecutar de manera manual. Pero incluso esto también tiene solución, estate atento a los nuevos post sobre Veeam en el blog  ;)

jueves, 21 de junio de 2018

Cómo conseguir una licencia Free para Veeam

No hay sensacion más incómoda al trabajar con una aplicacion que has instalado para su evaluación y quizá posterior uso en la empresa, que ésta se encuentre limitada, complicándote su análisis y aprendizaje. Quizá por eso algunas empresas se han percatado de ello y facilitan licencias Full por "x" dias.


En el caso que nos atañe, vamos a ver cómo obtener una licencia gratuita para Veeam Availability Suite, lo que nos permitirá jugar tanto con Veeam Backup & Recovery como con Veeam One.

Es importante indicar que esta licencia que vamos a obtener es NFR, o lo que es lo mismo, "Not For Resale". Lo que quiere decir que tiene una serie de limitaciones, que son estas:

  1. Sólo se puede usar con fines de prueba, tanto da si es en un entorno doméstico, un "lab" de la empresa, o simplemente con la idea de formarse en el uso de la aplicacion. Esto es, que mientras no la uses para un entorno de producción empresarial, te sirve.
  2. La segunda limitación es al número de sockets: sólo 2 sockets, pero en la combinación de hipervisores que prefieras: con esto quiero decir que si tu entorno de pruebas está conformado por un ESXi por un lado y un Windows Server con Hyper-V por el otro, mientras sólo tengan 1 socket cada maquina (que no procesador, esto es, si la maquina es virtual puedes montarte 1 socket con 8 procesadores tranquilamente), la licencia agrupará ambos sistemas.


Pasamos a los requisitos para solicitar la licencia. Que son bien fáciles, he de decir.
Básicamente debes ser un profesional de IT certificado, y el tipo de certificación es bastante laxo. basta son ser vExpert, VCP, VCAP, VCI, VCDX, VMUG Leader, VTEC, VMCE, MVP, MCSE, MCSA, MCT, Cisco Champion, u "Other".

El único problema que se te puede presentar es que requieres un e-mail de empresa para realizar la solicitud, no valen cuentas gmail, hotmail o similares. Lamentablemente no se si sirven cuentas de correo universitario.

La web a la que tienes que ir para iniciar la solicitud es:
https://go.veeam.com/free-nfr-veeam-availability-suite

Tras completar el formulario, recibirás un mail con esta estructura:

Click para agrandar, porque si no, no se ve nada
Como ves, el mail incluye no solo la licencia, sino que con los datos facilitados te dan de alta en su portal, y te incluyen también los enlaces de descarga directamente del software Veeam Availability suite, que se compone de 2 ISOs.

A modo de curiosidad, tamto el soporte como algunos de los recursos disponibles en el portal están en castellano.

¡Venga, que ya tienes tarea para este verano!

Simulador de consumo de espacio de backups

Una de las tareas más complicadas a la hora de preparar el backup de tu infraestructura es el cálculo estimado del consumo de espacio necesario para realizarlo, especialmente si hablamos de soluciones de backup a disco, como las que ofrecen inicialmente VDP, Veeam o Nakivo, sin entrar luego en soluciones más complicadas de replicación o backup a cinta.


Así que una pequeña herramienta pensada originalmente para el cálculo de backups incrementales con copias full activas sobre Veeam Backup, nos viene al pelo. Esta herramienta la puedes encontrar AQUI,
y como ves, facilita todos los valores estándar para programar una copia en Veeam, y algunos extra, que tendrás que seguir introduciendo un poco "a ojo", como el parámetro "data after reduction".


Tengo la sensación que no realiza los cálculos contando con la deduplicación de datos, ni la que pueda realizar Windows sobre el almacenamiento, ni la que pueda realizar el espacio en datastore para Veeam, suponiendo que disponga de esta tecnología.


Por ejemplo, para la copia simulada de la primera imagen, nos da los resultados que se pueden ver aquí encima.Pero bueno, también hay que tener en cuenta que prevemos un peso inicial de 1 Tb, con 3 full images.

En la cabecera de la web disponeis de toda la info para ver cómo se realizan los cálculos, asó como el código empleado. Es un proyecto de Github, que podeis encontrar aquí: https://github.com/tdewin/rps/issues

Por cierto, viendo la documentacion del proyecto, ya se están planteando como tarea la consideracion de un ratio de deduplicación, que dejaría las estimaciones "clavadas". ¡Veremos si avanza el proyecto!

lunes, 18 de junio de 2018

Crear un Backup Job en Veeam Backup

Vamos a ver la tarea más básica en Veeam: crear una tarea de backup.  Bueno, ¡por algo hay que empezar para montar nuestro entorno de backup!


Para ello abrimos las aplicación, y pinchamos en la pestaña home, arriba del todo. Es fácil, como ves, los conceptos simples de Veeam se mueven sobre 3 únicos apartados, la pestaña de menú, a la izquierda del todo, la pestaña Home, donde gestionas las tareas de backup, y la pestaña server, para agregar servidores que deban ser protegidos.

En esta ocasión, pinchamos sobre "backup job", y seleccionamos VMware vSphere. Esto iniciará un wizard de configuración.


La primera pantalla nos solicitará el nombre de la copia. Como programaremos una tarea diaria, la llamaremos "diaria", y pulsamos Next.


Llegamos a la pantalla donde agregaremos las VM´s a ser protegidas. Solo tienes un par de botones disponibles, prácticamente. Añadir y excluir VM´s. Así que hacemos click en "add", y se desplegará una ventana con los host que agregamos previamente. Puedes seleccionar varias VM´s de forma simultánea, y le damos a "add". Se nos agregarán como podeis ver en la pantalla superior, y pulsamos Next.


Aquí tenemos mucha miga. Y no sólo porque llegamos a la pantalla de la programación del backup, sino porque incluye muchas opciones adicionales. Por ejemplo, en la pantalla principal, nos indica la configuracion del proxy si tenemos, el repositorio donde quieres crear las copias, las políticas de retención, e incluso si quieres, en esta misma tarea, generar un segundo destino para alojar copias, para mayor seguridad.

Pero si pinchamos en el botón "advanced", además nos permite configurar diversos modos de ejecucion de las tareas incrementales, como "reversal incremental", que permite ir generando un full backup constantemente, al inyectar la incremental en la imagen de Full Backup (aunque avisa que este es un proceso más lento), la incremental recomendada de toda la vida, que incluye ya marcada por defecto una casilla para hacer un full backup sintético  cuando se le pida, pero por defecto marca el sábado. Y adicionalmente, en la misma pestaña inicial, la posibilidad de realizar Full backups activos en las fechas que le indiques.
Todo esto, solo en la pestaña Backup del campo advanced. Luego tienes 6 pestañas más, que nombro brevemente, por agilizar este post, que si no, queda demasiado denso: La pestaña "maintenance", para programar chequeos de los archivos y evitar su corrupcion, la pestaña Storage para configurar deduplicación, compresion y encriptacion, la pestaña SNMP si quieres programar notificaciones de las tareas, la pestaña vSphere para utilizar  la posibilidad de la quiescencia de archivos proporcionada por las vm-tools, la pestaña "integracion" para seleccionar si los snapshots van a ser los de VMware o los de Veeam, y "Scripts", para lanzar un script antes o despues de comenzar la tarea programada. Simplemente, brutal. Sinceramente, no se me ocurre una contingencia que no pueda cubrir una simple tarea básica.


En la siguiente pantalla nos encontramos con algunas opciones más referentes al proceso de backup sobre la VM a proteger, relacionadas con funciones de las opciones avanzadas, como la quiescencia de archivos. Si utilizas estas opciones, solicitará el uso de credenciales para el acceso a las VM´s (recomendable credenciales de dominio).


La pantalla de scheduling es la típica de todos los programas. No hay mucho que decir aqui.
Una vez apliques, aparecerá una pantalla resumen del backup que te permitirá su ejecucion en el momento, si deseas una copia adicional para ya mismo. No es muy recomendable que hagas esto si no configuraste previamente el "aware processing" de dos pasos más atrás.

Y con esto, y el botón Finish, ¡tenemos lista nuestra tarea básica de copia!

viernes, 15 de junio de 2018

Test de rendimiento entre disco básico y seccionado

Vamos a realizar una pequeña prueba de rendimiento utilizando Crystal DiskMark para medir el rendimiento de un disco básico de Windows para luego montar un disco dinámico creado a partir de varios volúmenes individuales, pero todos en el mismo datastore.


Para ello vamos a montar unos cuantos discos de 10 GB que luego unificaremos, y uno de 50 Gb. Abrimos el administrador de discos de Windows, inicializamos los discos (boton derecho->inicializar) y seguidamente, sobre cualquiera de los discos, seleccionamos la opción de "Nuevo volumen seccionado"


La razón de hacer esto es una simple prueba de velocidad. Tal y como indica el wizard en la creación del volumen seccionado, lo que ocnseguimos con esto es que los datos se almacenen en secciones de varios discos, obteniendo un acceso más rápido a los datos en comparación con un volumen simple o distribuido.


Esto, cuando los discos son físicos, basicamente lo que consigues es acceder más rápidamente a los datos, por el simple hecho de haber más cabezales en los discos buscando y leyendo. Pero aqui lo que tenemos es un conjunto de discos virtuales que, aunque no están limitados en IOPs, sí que están limitados por las capacidades físicas del datastore que los aloja.


El último disco agregado, aunque es de 50 Gb, finalmente lo dejaremos en 40 GB formateados para que haya similitud de tamaño disponible con los discos seccionados.
¿Cual será el resultado? ¡Vamos a verlo! Lanzaremos 3 test, sobre el disco C: con el sistema operativo, sobre el disco E:, seccionado, y sobre el F:, que es como el C: pero sin lecturas causadas por el sistema operativo. Por cierto, dejo la explicacion que encuentras directamente en la web de Crystal Disk Mark sobre los distintos test que realiza la aplicacion:

  • All : All Test (“Seq Q32T1”, “4K Q8T8”, “4K Q32T1”, “4K Q1T1”)
  • Seq Q32T1: Sequential (Block Size=128KiB) Read/Write with multi Queues & Threads
  • 4K Q8T8: Random 4KiB Read/Write with multi Queues & Threads
  • 4K Q32T1: Random 4KiB Read/Write with multi Queues & Threads
  • 4K Q1T1: Random 4KiB Read/Write with multi Queues & Threads
...¡Y vamos alla!


Aqui tenemos el resultado del disco C:. Unos resultados normalitos, para un datastore de discos SAS, con los resultados habituales, como son una alta lectura secuencial, pero con pérdidas en el resto de lecturas.


La sorpresa llega con el disco seccionado. Como se ve rápidamente, el acceso secuencial a disco se pierde, implicando esto que la copia de, por ejemplo, archivos de gran tamaño, va a ir curiosamente más lenta. Pero a cambio el acceso de datos aleatorio se dispara, llegando a casi 20.000 IOPs, que no está nada mal!

Vamos con el último disco de nuestro test, la unidad F: a partir de un volumen simple MBR.


Pues los resultados tampoco distan mucho del disco seccionado! Lo extraño es la caida de lectura-escritura frente al disco C: La posible explicación del rendimiento de C: frente a F: puede ser al trabajo de caché del disco de sistema, que influye directamente en las lecturas/escrituras del test. Quizá si trabajasemos con un archivo de pruebas de tamaño mucho más grande, los resultados serian distintos. El problema es que tambien se falsearían las lecturas de datos no secuenciales.

De manera que creo que podemos entender que los discos seccionados permiten una ganancia de IOPs sobre todo en escritura y posiblemente no tanto en lectura, en base a las distintas funciones de cacheo, paginacion, ballooning memory y demas con los que pueda trabajar VMware y el propio Windows con el fin de mejorar tiempos de respuesta.

Para cualquier duda, consulta aclaracion o corrección, ¡no dudeis en comentar!