XenServer Commands Cheat Sheet

Here you are a XenServer Commands Cheat Sheet!

  • Configure SR-IOV
    • /opt/xensource/libexec/xen-cmdline –set-xen iommu=1
    • lspci
    • xe vm-param-set other-config:pci=0/0000:07:10.0 uuid=uuid_of_the_VM
  • Enable and Disable Open VSwitch
    • xe-switch-network-backend bridge
    • xe-switch-network-backend openvswitch
  • Setup Diagnostic Website
    • cd /opt/xensource/www
    • ln –s /opt/xensource/debug/www debug
    • http://masterserverip/debug/index.html
  • Configure Auto Start VMs
    • Pool Config : xe pool-param-set uuid=… other-config:auto_poweron=true
    • VM Config: xe vm-param-set uuid=… other-config:auto_poweron=true
  • iSCSI Commands
    • discover: iscsiadm –mode discovery –type sendtargets –portal <IP-Address of the iSCSI target>
    • login: iscsiadm –mode node –targetname <target IQN you have discovered before> –portal <IP-Address of your Target>:3260 –login
    • logout: iscsiadm –mode node –targetname <target IQN you have discovered before> –portal <IP-Address of your Target>:3260 –logout
  • View TapDisks
    • tap-ctl list
    • ls -l /var/run/sr-mount/…..
  • Compare Template Differences
    • xe template-list name-label=Citrix\ XenApp\ on\ Windows\ Server\ 2003\ \(32-bit)\) params=all >> /root/2k3-32
    • xe template-list name-label=Citrix\ XenApp\ on\ Windows\ Server\ 2008\ \(32-bit)\) params=all >> /root/2k8-32
    • diff –side-by-side –suppress-common-lines /root/2k3-32 /root/2k8-32 (to see which parameters differ)
    • or
    • diff –suppress-common-lines /root/2k3-32 /root/2k8-32 (to see the full difference)
  • Reclaim Disk Space from Deleted XenServer Snapshots (http://support.citrix.com/article/CTX123400)
    • xe host-call-plugin host-uuid=<host-UUID> plugin=coalesce-leaf fn=leaf-coalesce args:vm_uuid=<VM-UUID>
  • Emergency Master Server Failure Recovery
    • xe host-emergency-ha-disable force=true
    • xe pool-emergency-transition-to-master
    • pool-designate-new-master host-uuid=<UUID of member XenServer host to become new master>
    • cat /etc/xensource/pool.conf to reflect to the new master.
    • Restarted XAPI service and it back to the pool.
  • Remove a Lost server from a Resource Pool

xe host-list
xe -s [ip address] -u root -pw PASSWORD pool-sync-database
xe -s [ip address] -u root -pw PASSWORD host-forget uuid=[the above command will provide the UUID]
xe pool-eject host-uuid

  • Copy a VM to another XenServer

xe vm-list (note the name of the VM you wish to copy)
xe sr-list (note the name of the storage you will to copy the VM to)
xe vm-copy (needs the following parameters to complete)
xe vm-copy vm=<name of VM to copy> sr-uuid=<UUID of SR to copy VM to> new-name-label=<NewNameofVM> new-name-description=”Description of VM”

  • Force Pool master Selection

xe pool-emergency-transition-to-master
xe pool-recover-slaves
xe host-list
xe pool-sync-database
xe host-forget

  • Check if XenServer is a Pool Master

cat /etc/xensource/pool.conf
Output says “master” , slaves output “slave:<master host IP>”

  • Enable Open vSwitch

xe-switch-network-backend openvswitch
xe host-list params=software-version

  • Enter XenServer Config Menu via SSH

xsconsole

  • Configure HA Timeout
      • xe pool-ha-enable heartbeat-sr-uuids=021e7e21-1e64-a0b3-2e22-5bbfcfe559e9 ha-config:timeout=10
      • Minimum timeout is 10 seconds
      • Default is 30 Seconds
      • xe pool-ha-compute-max-host-failures-to-tolerate
  • Destroying or forgetting a SR (Storage Repository)


xe -s [host ip] -u root -pw [password] sr-list
xe -s [host ip] -u root -pw [password] pbd-list sr-uuid=
xe -s [host ip] -u root -pw [password] pbd-unplug uuid=
xe -s [host ip] -u root -pw [password] pbd-destroy uuid=
xe -s [host ip] -u root -pw [password] sr-forget uuid=

  • xentop

displays real-time information about Xen system.

  • xen-bugtool –yestoall
  • Set HA Timeouot

xe pool-ha-enable heartbeat-sr-uuids=##### ha-config:timeout=however many seconds you want.

  • VM Operations

xe task-list
xe task-cancle uuid=xe
vm-shutdown –force vm=

  • Overload CPU for testing Workload Balancing

while true ; do true ; donewhile true ; do true ; done &while true ; do `ls –lR /` ; done

  • How to Create a Local Storage Repository (CTX121313)

# cat /proc/partitions
# ll /dev/disk/by-id
Find the disk ID of the “sdb” or “cciss/c0d1”disk. The “scsi-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” or “cciss-xxxxxxxxxxxxxxxxxxxxxxxxxx”format is what you need.
Create a Storage Repository (SR):
# xe sr-create content-type=user device-config:device=/dev/disk/by-id/<scsi-xxxxxxxxxxxxxxxxxxxxxxxxx> host-uuid=<host-uuid> name-label=”Local Storage 2” shared=false type=lvm-
Or –
# xe sr-create content-type=user device-config:device=/dev/disk/by-id/<cciss-xxxxxxxxxxxxxxxxxxxxxxxxx> host-uuid=<host-uuid> name-label=”Local Storage 2” shared=false type=lvm

  • Cancel XenServer Tasks

xe task-list
xe task-cancel uuid=<task uuid>

  • Install XenTools on Linux

mount /dev/xvdd /mnt
cd /mnt/Linux
./install.sh

QLogic, run scli
Emulex, run hbanywhere
Emulex: /bin/sbin/ocmanager
QLogic FC: /opt/QLogic_Corporation/SANsurferCLI
QLogic iSCSI: /opt/QLogic_Corporation/SANsurferiCLI
Enable HA

  • xe vm-param-set uuid=<vm_uuid> ha-restart-priority=<1> ha-always-run=true
  • xe pool-ha-enable heartbeat-sr-uuids=<sr_uuid>

Reboot Host in HA

  • host-disable host=<hostname>
  • host-evacuate uuid=<host uuid>
  • host-shutdown host=<hostname>

Designate new master

  • Xe pool-designate-new-master host-uuid=<UUID of member XenServer host to become new master>

Pool Emergency Actions

  • host-emergency-ha-disable –force
  • pool-recovery-slaves
  • pool-eject host-uuid=<host UUID>
  • pool-emergency-reset-master master-address=<ip address of pool master>
  • pool-emergency-transition-to-master uuid=<host uuid>
  • xe pool-join master-address=<host1> master-username=<administrators_username> master-password=<password>

Snapshot Copy (Fast Clone)

  • xe snapshot-list snapshot-of=<vm uuid>
  • xe snapshot-copy new-name-label=<vm-template-name> snapshot-uuid=<uuid of the snapshot>
  • xe template-list
  • xe snapshot-export-to-template snapshot-uuid=<uuid of snapshot> filename=<template filename> (.XVA)
  • other-config snapmanager=true
  • xe vm-snapshot-with-quiesce vm=<vm uuid> ne-name-lablel=<name of new vm> (install-XenProvider.cmd)

Memory Consistent Snapshots

  • xe vm-checkpoint vm=<vm uuid> new-name-lable=<name of the snapshot>

Role Based Administration

  • xe subject-add subject-name=[active directory account name]
  • xe subject-role-add uuid=<subject uuid> role-name=<role_name>

Configure Management Interface

  • xe pif-scan, xe pif-list, xe pif-reconfigure-ip, xe host-management-reconfigure

Create NFS ISO Repository

  • xe sr-create host-uuid=<mast uuid> content-type=iso name-lable=<”name”> location=\\10.1.1.1:cds

Create a shared NFS SR on 192.168.1.10:/export1

  • xe sr-create host-uuid=<host_uuid> content-type=user name-label=<”Example shared NFS SR”> shared=true device-config:server=<192.168.1.10> device-config:serverpath=</export1> type=nfs

Physic NIC configuration

  • xe pif-scan
  • xe pif-plug
  • xe pif-introduce

VM in libo

  • xe vm-list
  • xe vm-reset-powerstate uuid=<uuid of VM> force=true

XAPI stack

  • service xapi status
  • service xapi restart
  • xe-toolstack-restart

XenServer Log Files

  • /var/log – XenServer Log Files
  • /etc/logrotate.conf – XenServer Log Rotation Configuration File

Search SR to locate metadata

  • xe sr-probe type=lvmoiscsi device-config:target=IP device-config:targetIQN=IQN device-config:SCSIid=SCSIID sm-config:metadata=true

Check VDI database

  • xe vm-list database:vdi-uuid=$my_vdi

Check inventory

  • . /etc/xensource-inventory
  • xe host-list uuid=$INSTALLATION_UUID

Exporting and Importing VMs via API – http://docs.vmd.citrix.com/XenServer/5.6.0fp1/1.0/en_gb/sdk.html#vm_import_and_export

  • curl http://root:foo@myxenserver1/export?uuid=<vm_uuid> -o <exportfile>
  • curl -T <exportfile> http://root:foo@myxenserver2/import?sr_uuid=<uuid_of_sr>
  • curl -T <exportfile> http://root:foo@myxenserver2/import
  • http://server/import_metadata
  • http://server/export_metadata.

Script para descargar videos flash en linux sin /tmp

Como todos sabemos la nueva versión de adobe flash plugin ya no deja los videos en la carpeta /tmp de linux, así que ese método ya no sirve para tal propósito. Por eso he creado un sencillo script para compartir aquí en mi blog, el cual explicaré como funciona de manera rápida y simple. Recuerda que si no te funciona bien o te gustaría ampliarlo lo puedes hacer de manera libre.
Continuar leyendo «Script para descargar videos flash en linux sin /tmp»

Linux Shell Scripting Cookbook

Linux-shell-scripting-cookbook

El uso apropiado de comandos por consola puede ayudarnos a encontrar soluciones para problemas con apenas algunas lineas de código.

La mayoría de los usuarios de GNU/Linux por falta de conocimiento desperdiciamos el potencial del shell de Linux.

Este buen libro nos ayuda de la manera más sencilla posible (con ejemplos) a sacarle provecho a esta maravillosa herramienta.

Linux-shell-scripting-cookbook

Fecha de publicación: Enero de 2011.

Idioma: Inglés

360 páginas

Formato: PDF (13 MB)

Pulsa AQUI para descargarte el libro Linux Shell Scripting Cookbook

Actualizar y corregir permisos (UIDs) en Plesk

permisos-de-archivos

permisos-de-archivos

Tal vez os haya pasado, que tras copiar contenidos desde otro servidor Plesk, sobretodo cuando se hace con el comando rsync, se desajustan los nombres de usuario y grupo que tenian originalmente. Aqui dejamos un script en bash totalmente operativo que corrige todos estos permisos. Recordar esto es solo script en bash  para Plesk, funciona en cualquiera de sus versiones de Plesk en cualquier distribucion Linux, no tiene ninguna funcionalidad en otros entornos

#!/bin/bash
# Corrige los permisos de los archivos y directorios de los dominios
cat /etc/passwd |egrep vhos > /tmp/$$
wc=`wc -l /tmp/$$ |awk ‘{ print $1 }’ `
for i in `seq 1 $wc`
do
linea=`head -$i /tmp/$$ |tail -1`
user=`echo $linea |awk -F: ‘{ print $1}’`
home=`echo $linea |awk -F: ‘{ print $6}’`
echo “$user – $home”
#corrigiendo el home
chown root.root $home
chmod 755 $home
#corrigiendo el httpdocs y demas principales
for dir in httpdocs httpsdocs cgi-bin anon_ftp
do
if [ -d $home/$dir ];then
#el directorio
chown $user.psaserv $home/$dir
chmod 750 $home/$dir
#el contenido
chown $user.psacln $home/$dir/* -R
chmod 777 $home/$dir/* -R
fi
done
for dir in statistics subdomains web_users
do
if [ -d $home/$dir ];then
chown root.psaserv $home/$dir
chmod 755 $home/$dir
if [ -d $home/$dir/httpsdocs ];then
chown $user.psaserv $home/$dir/httpsdocs
chmod 750 $home/$dir/httpsdocs
chown $user.psacln $home/$dir/httpsdocs -R
chmod 777 $home/$dir/httpsdocs -R
fi
fi
done
done

script para descargar ficheros con barra de progreso (wget & zenity)

script para descargar ficheros con barra de progreso

Un muy útil código que podemos utilizar en nuestros scripts cuando queremos descargar un fichero y mostrar una barra de progreso del mismo (requiere zenity instalado en la máquina).

Este es el Script Original en Ingles, Abajo os pondré el mio que modifique básicamente lo puse en español

script para descargar ficheros con barra de progreso

DOWNLOAD() {
rand="$RANDOM `date`"
pipe="/tmp/pipe.`echo '$rand' | md5sum | tr -d ' -'`"
mkfifo $pipe
wget -c $1 2>&1 | while read data;do
if [ "`echo $data | grep '^Length:'`" ]; then
total_size=`echo $data | grep "^Length:" | sed 's/.*\((.*)\).*/\1/' | tr -d '()'`
fi
if [ "`echo $data | grep '[0-9]*%' `" ];then
percent=`echo $data | grep -o "[0-9]*%" | tr -d '%'`
current=`echo $data | grep "[0-9]*%" | sed 's/\([0-9BKMG.]\+\).*/\1/' `
speed=`echo $data | grep "[0-9]*%" | sed 's/.*\(% [0-9BKMG.]\+\).*/\1/' | tr -d ' %'`
remain=`echo $data | grep -o "[0-9A-Za-z]*$" `
echo $percent
echo "#Downloading $1\n$current of $total_size ($percent%)\nSpeed : $speed/Sec\nEstimated time : $remain"
fi
done > $pipe &

wget_info=`ps ax |grep "wget.*$1" |awk '{print $1"|"$2}'`
wget_pid=`echo $wget_info|cut -d'|' -f1 `

zenity --progress --auto-close --text="Connecting to $1\n\n\n" --width="350" --title="Downloading"< $pipe
if [ "`ps -A |grep "$wget_pid"`" ];then
kill $wget_pid
fi
rm -f $pipe
}

if [ $1 ];then
DOWNLOAD "$1"
else
dllink=$(zenity --entry --text "Your download link :" --width="350" --entry-text "" --title="Download url")
if [ $dllink ];then
DOWNLOAD "$dllink"
fi
fi

lo Guardamos como download.sh le damos permisos con chmod +x download.sh & Lo ejecutamos ./download.sh

script para descargar ficheros con barra de progreso