Crontab Format

* * * * * *
| | | | | | 
| | | | | +-- Year              (range: 1900-3000)
| | | | +---- Day of the Week   (range: 1-7, 1 standing for Monday)
| | | +------ Month of the Year (range: 1-12)
| | +-------- Day of the Month  (range: 1-31)
| +---------- Hour              (range: 0-23)
+------------ Minute            (range: 0-59)

Examples:

* * * * * *                         Each minute


59 23 31 12 5 *                     One minute  before the end of year if the last day of the year is Friday
									
59 23 31 DEC Fri *                  Same as above (different notation)


45 17 7 6 * *                       Every  year, on June 7th at 17:45


45 17 7 6 * 2001,2002               Once a   year, on June 7th at 17:45, if the year is 2001 or  2002


0,15,30,45 0,6,12,18 1,15,31 * 1-5 *  At 00:00, 00:15, 00:30, 00:45, 06:00, 06:15, 06:30,
                                    06:45, 12:00, 12:15, 12:30, 12:45, 18:00, 18:15,
                                    18:30, 18:45, on 1st, 15th or  31st of each  month, but not on weekends


*/15 */6 1,15,31 * 1-5 *            Same as above (different notation)


0 12 * * 1-5 * (0 12 * * Mon-Fri *) At midday on weekdays


* * * 1,3,5,7,9,11 * *              Each minute in January,  March,  May, July, September, and November


1,2,3,5,20-25,30-35,59 23 31 12 * * On the  last day of year, at 23:01, 23:02, 23:03, 23:05,
                                    23:20, 23:21, 23:22, 23:23, 23:24, 23:25, 23:30,
                                    23:31, 23:32, 23:33, 23:34, 23:35, 23:59


0 9 1-7 * 1 *                       First Monday of each month, at 9 a.m.


0 0 1 * * *                         At midnight, on the first day of each month


* 0-11 * * *                        Each minute before midday


* * * 1,2,3 * *                     Each minute in January, February or March


* * * Jan,Feb,Mar * *               Same as above (different notation)


0 0 * * * *                         Daily at midnight


0 0 * * 3 *                         Each Wednesday at midnight

In extended mode, crontab notation may be abridged by omitting the rightmost asterisks.

Examples: (only for extended mode)

Full notation                         Abridged notation

* * * * * * 

59 23 31 12 5 2003                    59 23 31 12 5 2003

59 23 31 12 5 *                       59 23 31 12 5

45 17 7 6 * *                         45 17 7 6

0,15,30,45 0,6,12,18 1,15,31 * * *    0,15,30,45 0,6,12,18 1,15,31

0 12 * * 1-5 *                        0 12 * * 1-5

* * * 1,3,5,7,9,11 * *                * * * 1,3,5,7,9,11

1,2,3,5,20-25,30-35,59 23 31 12 * *   1,2,3,5,20-25,30-35,59 23 31 12

0 9 1-7 * 1 *                         0 9 1-7 * 1

0 0 1 * * *                           0 0 1

* 0-11 * * * *                        * 0-11

* * * 1,2,3 * *                       * * * 1,2,3

0 0 * * * *                           0 0

0 0 * * 3 *                           0 0 * * 3

Both in classic and extended modes, nnCron users can use a «nonstandard» character «?» in the first four fields of cron format. It stands for time of nnCron startup, i. e. when a field is processed, startup time will be substituted for the question mark: minutes for Minute field, hour for Hour field, day of the month for Day of month field and month for Month field.

For example, if you write the following:

Time: ? ? * * * *

the task will be executed on nnCron startup and then will be executed daily at the same time (unless the user doesn’t restart nnCron, of course): question marks will be «replaced» by nnCron startup time. For example, if nnCron was started at 8:25, question marks will be substituted this way:

Time: 25 8 * * * *

Some more examples:

\ task will be executed only on nnCron startup 
\ (this has the sane effect  as "Time: START-TIME")
Time: ? ? ? ? * *

\ task will be executed on nnCron startup (e.g. at 10:15) 
\ and then will be executed again each hour: 
\ at 11:15, 12:15, 13:15 etc.
Time: ? * * * * *

\ task will be started each minute after nnCron startup until the next hour starts. 
\ The next day, if nnCron has not been restarted in the meanwhile,  
\it will be executed again each minute during the same hour.
Time: * ? * * * * 

\ task will be executed daily,  every five minutes,
\ during the hour when nnCron was started.
Time: */5 ? * * * *

Restaurar una VM desde los punteros de la cabina NetApp

Ojo, esta documentación es para casos críticos de perdida total de una VM, esta restauración se hace directamente desde la cabina y no desde el software de Backup.
Una vez hemos llegado a la situación en que la máquina por cualquier razón no funciona, no arranca, ha perdido datos, tiraremos teóricamente del software de backup, pero este método también es válido y funciona bastante rápido.
Lo primero que tenemos que hacer es irnos a la cabina y buscar el volumen donde esta instalado o ubicada la virtual machine que ha muerto.
La teoría, en este entorno y por buenas prácticas, nos encontraremos volúmenes por proyectos, y esto segmenta mucho el proceso a la hora de restaurar. 

Los volúmenes están todos clonados, el volumen name_mirror es una copia del volumen principal que se guarda en la segunda cabina, todos los volúmenes están agregados en todos los servidores, esto es importante ya que para crear un HA es necesario que todos los nodos tengan accesibles todos los datastores.
Una vez localizado el volumen ya nos podemos ir a la cabina, a través de la dirección web de la cabina principal del cluster,
Dentro de la cabina Storage nos iremos a la sección de Storage, y dentro de Storage buscaremos volúmenes

En esta página le daremos al + del volumen en cuestión que queremos usar para recuperar la virtual machine, dentro de las especificaciones buscaremos abajo a la derecha «Show more details»

En la siguiente pantalla nos saldrá de manera detallada toda la información del volumen, arriba a la derecha tenemos el botón «Actions», le daremos ahí, seguidamente clone>create>volumen, con esta operación lo que hacemos es coger todo el volumen entero y prepararlo para restaurarlo con un snapshot concreto.

Nos saldrá una pantalla con las configuraciones básicas que queremos aplicar a la clonación del volumen, aqui definiremos 3 parametros esenciales:

  • El nombre, pondremos el nombre del volumen_clone, ej. si el volumen se llama gestión, el clonado lo podemos llamar gestión_clone
  • Thin Provisioning chequeado, esto hará que aun que el volumen tenga asignado 2tb solo ocupe lo que tenga usado en ese momento
  • Use an existing Snapshot copy, esto nos permite elegir (dependemos de la programación que tenga dicho volumen) el puntero que necesitamos de ese volumen, por norma dependiendo de que volumen sea, encontraremos por horas, cada 8 horas y algún día

Una vez clonado, tenemos que prepara el volumen para ofrecérselo a VMware por NFS (red), en este caso nos iremos debajo de volúmenes a NameSpace, cuando se monta un volumen nuevo la Netapp detecta que no esta montado y al darle a mount montaré directamente este nuevo volumen.
Una vez llegados a este paso nos iremos a Vmware, seleccionaremos un servidor y le montaremos el volumen, para esto es conveniente mirar los datos del volumen «origen» que hemos clonado, ya que tienen una ip asignada para ser localizados por la red. Estas ips las podemos encontrar dentro de la web de la cabina en Network Interfaces

No obstante, también lo podemos ver en VMware, ya que el volumen que clonemos se asignará automáticamente al mismo SVM en el que está el volumen original, véase esta foto de los volúmenes en VMware

Para agregar el nuevo volumen le daremos a Add Storage, seleccionaremos Network File System (NFS), todo esto dentro de Home, Inventory, Datastores, nota, esto en el web client puede cambiar pero mas menos será así.

Una vez realizada la selección de NFS, pondremos los datos básicos, leer mas arriba de este documento para saber de donde sacarlos.

El proceso final de restauración requiere que la máquina virtual estropeada se pare por completo, y poder finalizar el proceso. (En el ejemplo que he realizado por primera vez, sucedió que el Servidor Installation Server de Data Protector explotó y se restauró de la siguiente manera)
Paso de restauración una vez se tiene disponible el volumen con las máquinas:

  • Lo primero de todo es eliminar la virtual machine actual del inventario (ojo no la eliminaremos aun del Datastore, solo del listado de máquinas virtuales)
  • Seguidamente hacemos un relocate, para realizar un relocate nos iremos a la carpeta de la virtual machine restaurada y navegaremos dentro de ella en busca del archivo vmx, le daremos al botón de la derecha y seguidamente Add to Inventory
  • Con este paso lo que habremos conseguido es que nuestro Vcenter vea la máquina restaurada y pueda levantar en un estado anterior, una vez agregada, directamente le daremos al play para que levante. (Recordar que la máquina rota o a restaurar tiene que estar apagada)
  • Una vez levantada la máquina, verificamos que todo esta ok, nota, en servicios críticos donde hay perdidas de datos estas intervenciones son mas complicadas, hay que tener muy en cuenta cuando se produce el error y a finar con los horarios.
  • Después de realizar todas las verificaciones pertinentes y si vemos que todo funciona correctamente y que la máquina rota no esta interactuando con nada, eliminaremos desde el Datastore la máquina averiada, el objetivo de esto es liberar del volumen en cuestión el problema y poder mover la máquina que funciona a este datastore para poder desmontar el clonado .
  • Una vez eliminado, nuestra licencia nos permite mover en caliente la máquina entre datastores, procedemos a mover la máquina restaurada del datastore clonado, al datastore de producción, con este paso ya tenemos liberado el volumen clonado para poder desmontarlo. (Es muy importante tener claro que no hay dependencias y que hacemos bien estos pasos, ya que un error aquí puede producir la pérdida de la máquina y nos tocaría realizar otra vez todo el proceso)
  • En este punto, tenemos acabado el trabajo de recuperación, a partir de ahora realizaremos los pasos a la inversa para realizar la segunda fase, se trata de desmontar y eliminar el volumen clonado.

Para proceder a desmontar el volumen, tendremos que estar en la sección de Home, Inventory, Datastores. Una vez aquí buscaremos el datastore clonado y con el botón de la derecha encima le daremos a unmount, con esto desvincularemos Vmware del volumen que aun sigue existiendo en la Netapp.

Ahora iremos a la página de configuración de nuestra cabina de Netapp, en concreto a la parte de NameSpaces, donde procederemos a desmontar la conexión creada en particular para el volumen creado, recordemos que se crea en el mismo SVM que el original.
Seleccionamos el Path que queremos desmontar, y seguidamente le damos a desmontar.

Después de esto nos vamos a la sección de volúmenes dentro de la cabina, en la cual es conveniente seleccionar el SVM correspondiente o le podremos dar a ver todos los volúmenes, una vez allí seleccionamos el volumen clonado que queremos desmontar, y seguidamente le daremos a Action->Change Status to->Offline.

Cuando el volumen pasa a estado Offline, se pondrá rojo en vez de verde, esto significa que ya podemos proceder a su eliminación total de la cabina

Le damos clic con el botón principal y seguidamente arriba veremos que ya tenemos disponible el botón de delete, le damos a borrar y confirmamos borrado, con esto habremos completado el proceso completo de restauración de un Snapshot desde la cabina.

Licenciamiento ROK VM

Las licencias ROK, son licencias de proveedor (Dell, HP, IBM, etc) que suelen ser mas baratas que las normales, estas licencias el requisito imprescindible que tienen es que si tienes un servidor del y compras una licencia ROK Windows 2012 Server R2 Standar, esta licencia tiene que consultar la BIOS del servidor y verificar que el servidor es Dell.
Cuando montamos una virtual machine a la cual queremos asignar una licencia de este tipo, tenemos que editar el archivo vmx (este archivo contiene las configuraciones básicas de la máquina virtual adjunto contenido de uno de estos archivos, en este caso es la VM DCPP03, el domain controler de la intranet) este archivo lo tendremos que editar directamente en la carpeta que se genera para la virtual machine y añadir esta linea.

smbios.ReflectHost = "true"
.encoding = "UTF-8"
config.version = "8"
virtualHW.version = "11"
vmci0.present = "TRUE"
floppy0.present = "FALSE"
svga.vramSize = "8388608"
memSize = "4096"
sched.cpu.units = "mhz"
tools.upgrade.policy = "manual"
scsi0.virtualDev = "lsisas1068"
scsi0.present = "TRUE"
sata0.present = "TRUE"
sata0:0.deviceType = "cdrom-raw"
sata0:0.clientDevice = "TRUE"
sata0:0.fileName = "emptyBackingString"
sata0:0.present = "TRUE"
scsi0:0.deviceType = "scsi-hardDisk"
scsi0:0.fileName = "DCPP03.vmdk"
sched.scsi0:0.shares = "normal"
scsi0:0.present = "TRUE"
ethernet0.virtualDev = "vmxnet3"
ethernet0.networkName = "INSIDE"
ethernet0.addressType = "vpx"
ethernet0.generatedAddress = "00:50:56:8d:08:61"
ethernet0.present = "TRUE"
displayName = "DCPP03"
guestOS = "windows8srv-64"
toolScripts.afterPowerOn = "TRUE"
toolScripts.afterResume = "TRUE"
toolScripts.beforeSuspend = "TRUE"
toolScripts.beforePowerOff = "TRUE"
tools.syncTime = "TRUE"
messageBus.tunnelEnabled = "FALSE"
uuid.bios = "42 0d 8e a4 ee ad d0 aa-c2 f2 a7 b3 e3 13 86 35"
vc.uuid = "50 0d 1e 64 15 98 a1 75-9f 2d 56 7f 3e d1 35 21"
sched.cpu.latencySensitivity = "normal"
tools.guest.desktop.autolock = "false"
nvram = "DCPP03.nvram"
pciBridge0.present = "true"
svga.present = "true"
pciBridge4.present = "true"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "true"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "true"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "true"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
hpet0.present = "true"
sched.scsi0:0.throughputCap = "off"
disk.EnableUUID = "true"
smbios.ReflectHost = "true"
virtualHW.productCompatibility = "hosted"
replay.supported = "false"
pciBridge0.pciSlotNumber = "17"
pciBridge4.pciSlotNumber = "21"
pciBridge5.pciSlotNumber = "22"
pciBridge6.pciSlotNumber = "23"
pciBridge7.pciSlotNumber = "24"
scsi0.pciSlotNumber = "160"
vmci0.pciSlotNumber = "32"
sata0.pciSlotNumber = "33"
scsi0.sasWWID = "50 05 05 64 ee ad d0 a0"
vm.genid = "419626835176286023"
vm.genidX = "3206259774675202547"
monitor.phys_bits_used = "42"
vmotion.checkpointFBSize = "4194304"
softPowerOff = "false"
ethernet0.pciSlotNumber = "192"
ethernet0.uptCompatibility = "TRUE"
toolsInstallManager.lastInstallError = "0"
tools.remindInstall = "false"
toolsInstallManager.updateCounter = "5"
vmotion.checkpointSVGAPrimarySize = "8388608"
svga.guestBackedPrimaryAware = "true"
ctkEnabled = "true"
scsi0:0.ctkEnabled = "true"
guestinfo.toolsInstallErrCode = "1641"
migrate.hostlog = "DCPP03-5d4dfa5d.hlog"
sched.cpu.min = "0"
sched.cpu.shares = "normal"
sched.mem.min = "0"
sched.mem.minSize = "0"
sched.mem.shares = "normal"
sched.swap.derivedName = "/vmfs/volumes/06194ba9-b2a53997/DCPP03/DCPP03-85fa11a5.vswp"
uuid.location = "56 4d 75 95 9b fd d1 7e-34 5f 6c f3 c7 94 57 fd"
replay.filename = ""
scsi0:0.redo = ""
vmci0.id = "-485259723"
cleanShutdown = "FALSE"
extendedConfigFile = "DCPP03.vmxf"
config.readOnly = "FALSE"hola