tag:blogger.com,1999:blog-56232207393752029122024-02-08T09:03:15.696-06:00GNU/Linux y el Open Sourcerojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.comBlogger51125tag:blogger.com,1999:blog-5623220739375202912.post-2600526270055881432022-01-24T13:43:00.003-06:002022-01-24T13:44:02.998-06:00¿Cómo acelerar tu zabbix server?
El que ha configurado zabbix ha observado que zabbix consume espacio para el registro histórico, registro que puede eliminarse y en el siguiente ejemplo se dejan 60 dias equivalente a casi dos meses de registro histórico, esto acelera un poco el servicio del zabbix reduciendo la cantidad de información historica de logs almacenadas en la base de datos y dejando siempre información en la base de datos.
El lector puede ajustar la cantidad de tiempo que le convenga almacenar o si desea no perder esta información puede hacer un dump a estas tablas y almacenarlas en un espacio de almacenamiento histórico.
El usuario puede ejecutar este script cada cierto tiempo y mantener una base de datos reducida.
<pre>
#!/bin/bash
fromdate=$(date --date="60 day ago" +"%Y-%m-%d")
time mysql -u root -proot zabbix -e "
RENAME TABLE history_uint TO history_uint_old;
CREATE TABLE history_uint LIKE history_uint_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO history_uint (
SELECT * FROM history_uint_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE history_uint_old;
"
time mysql -u root -proot zabbix -e "
RENAME TABLE history_str TO history_str_old;
CREATE TABLE history_str LIKE history_str_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO history_str (
SELECT * FROM history_str_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE history_str_old;
"
time mysql -u root -proot zabbix -e "
RENAME TABLE history_log TO history_log_old;
CREATE TABLE history_log LIKE history_log_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO history_log (
SELECT * FROM history_log_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE history_log_old;
"
time mysql -u root -proot zabbix -e "
RENAME TABLE history_text TO history_text_old;
CREATE TABLE history_text LIKE history_text_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO history_text (
SELECT * FROM history_text_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE history_text_old;
"
time mysql -u root -proot zabbix -e "
RENAME TABLE history TO history_old;
CREATE TABLE history LIKE history_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO history (
SELECT * FROM history_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE history_old;
"
time mysql -u root -proot zabbix -e "
RENAME TABLE trends_uint TO trends_uint_old;
CREATE TABLE trends_uint LIKE trends_uint_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO trends_uint (
SELECT * FROM trends_uint_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE trends_uint_old;
"
time mysql -u root -proot zabbix -e "
RENAME TABLE trends TO trends_old;
CREATE TABLE trends LIKE trends_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO trends (
SELECT * FROM trends_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE trends_old;
"
</pre>rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-7001887778463914992022-01-21T15:48:00.003-06:002022-01-21T15:48:45.448-06:00Proxmox VLANS<p> Hola chicos.</p><p><br /></p><p>Tenía rato de no agregar artículos, pero recordemos que agrego cuando encuentro algo útil e importante.</p><p></p><p>Tutoriales existen por montón, pero cuando encuentro algo que no está claro me agrada compartirlo.</p><p>Proxmox VE, es un excelente virtualizador, hace poco me tocó configurar un troncal entre el equipo y un switch y luego respectivamente vincular la ip administrativa a esa vlan y las vm a sus vlans correspondientes.</p><p>Por defecto instalo openvswitch en todos los proxmox VE que instalo, uso preferentemente debian como ya saben.</p><p>OpenVswitch por defecto viene configurado en modo troncal por lo que no hay que agregar opciones adicionales.</p><p>La configuración de nuestro puerto físico vendría de la siguiente forma:</p>
<pre>
#Puerto físico
auto eno1
iface eno1 inet manual
ovs_type OVSPort
ovs_bridge vmbr1
ovs_options other_config:rstp-path-cost=20000 other_config:rstp-port-auto-edge=false other_config:rstp-enable=true other_config:rstp-port-admin-edge=false other_config:rstp-port-mcheck=true vlan_mode=native-untagged
#Puerto Administrativo
auto ovsip1
iface ovsip1 inet static
address 10.0.3.5/24
gateway 10.0.3.1
ovs_type OVSIntPort
ovs_bridge vmbr1
ovs_options tag=152
#Switch ovs
auto vmbr1
iface vmbr1 inet manual
ovs_type OVSBridge
ovs_ports eno1 ovsip1
</pre>
Creada la maquina virtual desde el proxmox en las opciones de la tarjeta de red se le coloca el switch vmbr1 y la vlan a la que se desea anexar, eso se realiza desde la web gui o se realiza en el archivo de configuración de la vm, en el siguiente ejemplo se miraría así:
<pre>
net0: virtio=56:45:13:00:38:AF,bridge=vmbr1,firewall=1,tag=160
</pre>
NOTA: Si observan configuro el RSTP, debido a que openvswitch no lo habilita por defecto, en mi caso prefiero hacerlo para evitar loops en la red.
rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-53688258735604611542021-11-11T17:39:00.000-06:002021-11-11T17:39:16.261-06:00Como renombrar<p>Renombrar múltiples archivos y automatizarlos es útil, una de las tareas en la que hago uso esta operación es para renombrar multiples archivos y usarlos para alimentar mi granja de servidores antispam.</p><p>Por ejemplo si nos llegan a multiples cuentas correos SPAM, basta que los usuarios desde el webmail o via IMAP y marcar los mensajes como SPAM y dejar que el servidor de correo aprenda gracias al usuario.</p><p>Sin embargo cuando el usuario no realiza su tarea o se tienen servicios antispam adicionales esta tarea se debe hacer un poco manual, capturamos una copia de los correos spam y los guardamos, pero al guardarlos se guardan con el asunto si usamos por ejemplo Thunderbird.</p><p>Por lo que es útil renombrarlos a un nombre más útil y que no cause problemas con caracteres no ASCII.</p><p>Se le recuerda al lector que si esta sumergido en el área de antispam también es útil crear un bulk para los correos HAM.</p>Para hacer este renombrado nos moveríamos a la carpeta ham o spam y ejecutamos lo siguiente:<br /><pre>find . -type f | (let i=0; while read f; do mv "$f" file-$i ; let i=$i+1; done)</pre><p>Otro método es mediante los inum de cada archivo y renombrarlo una vez identificado el inum.</p>rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-42562289540923209752021-11-11T17:10:00.001-06:002021-11-11T17:10:29.817-06:00Evitar que laptop no se duerma al cerrar la tapa<p>Digamos que deseas configurar una laptop en la casa pero tener la pantalla abierta es muy molesta o peligroso, los accidentes pueden ocurrir y puede ser golpeada, la basura se acumula en el teclado, etc.</p><p>Omitamos las razones para las que alguien desee dejar un servidor en casa ya sea UPNP, Gaming Server, VPN, LOCAL CLOUD, BACKUP, MEDIA SERVER, etc.</p><p>Para lograr este fin agregaremos en el siguiente archivo /etc/systemd/logind.conf como usuario root la siguiente linea:</p><p> <a class="tiddlyLink tiddlyLinkNonExisting" title="The tiddler 'HandleLidSwitch' doesn't yet exist">HandleLidSwitch</a>=ignore</p><p>Para evitar reiniciar el ordenador ejecutemos el siguiente comando, siempre como root:<br /><br />service systemd-logind restart<br /></p>rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-77073080344217243122021-11-11T17:03:00.003-06:002021-11-11T17:03:53.487-06:00REPOSITORIO OLD UBUNTU<pre>Si tienes una version ubuntu vieja y requieres algun paquete disponible o realizar la actualización, usa el siguiente repositorio: <br /></pre><pre>http://old-releases.ubuntu.com/ubuntu/dists/</pre>rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-71476503524576046442021-11-11T17:00:00.002-06:002021-11-11T17:00:14.957-06:00Configurando TCP FAST OPEN<h1><span style="font-weight: normal;"><span style="font-size: small;">E<span class="VIiyi" lang="es"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="es" data-language-to-translate-into="en" data-number-of-phrases="2" data-phrase-index="0"><span>xtensión para acelerar la apertura de conexiones sucesivas del Protocolo de control de transmisión (TCP) entre dos puntos finales.</span></span> <span class="JLqJ4b ChMk0b" data-language-for-alternatives="es" data-language-to-translate-into="en" data-number-of-phrases="2" data-phrase-index="1"><span>Funciona mediante el uso de una cookie TFO (una opción de TCP), que es una cookie criptográfica almacenada en el cliente y configurada en la conexión inicial con el servidor.</span></span></span></span></span> </h1><div style="text-align: left;">Establecer tcp fast open persistente a reinicios:<br /></div><pre>echo "net.ipv4.tcp_fastopen=3" > /etc/sysctl.d/30-tcp_fastopen.conf
</pre><br /><div style="text-align: left;"><span style="font-weight: normal;">Establecer tcp fast open en caliente:<br /></span></div><pre>echo "3" > /proc/sys/net/ipv4/tcp_fastopen
</pre>rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-88818094777277145412018-03-11T22:44:00.000-06:002018-03-15T13:04:12.822-06:00Zimbra Relay by Sender (User or Domain)Mientras navegaba en la internet buscando cosas interesantes esas que valen la pena probar y configurar, encontré este artículo:
<br>
<blockquote>https://wiki.zimbra.com/wiki/Relay_per_Domain</blockquote>
<br>
Mientras lo probaba encontré un problema, que usando zimbra 8.7 al modificar según la indicación el archivo "/opt/zimbra/common/conf/main.cf.default" y agregando la linea "sender_dependent_relayhost_maps = lmdb:/opt/zimbra/common/conf/bysender" luego de reiniciar el servicio y el servidor mismo, esto no se aplicaba nunca, desconozco la razón pero parece que el zimbra no usa main.cf.default como fuente para la configuración si no como plantilla.
<br>
La solución es configurar el postfix asi:
<br>
<blockquote>postconf -e sender_dependent_relayhost_maps=lmdb:/opt/zimbra/common/conf/bysender</blockquote>rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-6490488021180262792017-08-29T07:55:00.000-06:002017-08-29T07:55:11.514-06:00Nuevo debian nuevos cambiosRecuerdo que Debian era más sencillo y por eso lo he preferido siempre, pero los cambios que trae debian 9 no me estan gustando. Sin embargo decidí no tirar toda una distribución solo por un poco de inconformidad.
El problema inicia con el nombramiento de las interfaces, en sistemas nuevos veo que las interfaces toman nombres como "ens18", en lugar de "eth0" que es lo trandicional.
"Ok", me dije, un pequeño cambio que puede luego ser renombrado, solo es un label, pero luego cuando quise establecer el ip de la forma tradicional editando "/etc/network/interfaces", y haciendo un ifdown y un ifup tradicional, me lleve la gran sorpresa que no ocurria nada, adicionando que "net-tools" no venía incluido por defecto, lo cual me sorprendió.
Leyendo un poco al final resolví el acertijo, en debian9 ya no se puede hacer ifdown y un ifup de forma tradicional, al menos no con la versión que he instalado que es la "9.1" entiendo que es la última.
La forma bajo la cual realice lo deseado sin tener que apagar el equipo fueron los siguientes pasos:
# ifdown ens18
# ip address del 172.20.5.5 dev ens18
# vim /etc/network/interfaces
# /etc/init.d/networking restart
Con esto logré realizar el cambio de ip sin tener que reiniciar.rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-77562903190406202962017-07-18T17:37:00.002-06:002017-07-18T17:37:38.891-06:00Escribiendo Scripts para crear un respaldo usando mariadb como base de datosHacer un respaldo con mysqldump es algo que mola mucho y va de pasada, pero a veces tenemos un servidor con tantos usuarios y tantas bd que estar creando un script con un comando mysql que por parámetro con la opción '-e' le pasemos las consultas para hacer una query para obtener todas las bd, a veces puede resultar en catastrofes al darnos cuenta que mysqldump no respaldó toda la bd desde hace meses y que no lo ha venido haciendo correctamente, por lo tanto necesitamos un metodo más fiable que haga en verdad su trabajo y es acá donde entra xtrabackup.<br />
<br />
Como me gusta trabajar en scripts les comparto un script diseñado por mi para que alivie sus necesidades. Si encuentran algun bug me avisan y recuerden que deben ajustarlo a sus necesidades, aún voy a liberar una nueva versión donde pregunte si el respaldo es nfs o no, si lo es, que se pase por parámetro el ip remoto, por ahora es estático y se debe comentar la parte donde se monta el nfs remoto en caso de no tener uno:<br />
<br />
<pre>#!/bin/bash
Scripts_path="/Scripts"
femail="webmaster@dominio.ejemplo.test"
temail="soporte@dominio.ejemplo.test"
#Aqui va el ip del servidor nfs donde se ha de montar el respaldo
ipnfs="192.168.1.20"
dest="/backup"
host="localhost"
port=3306
user="backup"
password="U2FsdGVkX18WWIZ2IUg2hs+E8UWC82jp9jml40ruOJM="
hostname=$(hostname)
tool_mode="xtrabackup"
error_log=/var/log/$(echo $tool_mode)-backupm.log
lock_file=/tmp/$(echo $tool_mode)-backupm.lck
main_path="$dest/$hostname/$tool_mode"
last_full_backup="$main_path/last_full_backup.txt"
incremental_reg_backup="$main_path/incremental_reg_backup.txt"
history_full_backup="$main_path/history_full_backup.txt"
history_incremental_reg_backup="$main_path/history_incremental_reg_backup.txt"
function montar(){
montado=$(cat /etc/mtab | grep backup | wc -l)
if let "montado==0";then
echo "Mounting $ipnfs:/nfs/dbserver on $dest" >> $error_log 2>&1
mount -t nfs $ipnfs:/nfs/dbserver $dest
fi
}
function desmontar(){
montado=$(cat /etc/mtab | grep backup | wc -l)
if let "montado==1";then
echo "Unmounting $ipnfs:/nfs/dbserver on $dest" >> $error_log 2>&1
umount $dest
fi
}
function chk_files(){
if [[ ! -d $main_path ]];then
mkdir -pv $main_path >> $error_log 2>&1
fi
if [[ ! -f $last_full_backup ]];then
echo "Creating $last_full_backup" >> $error_log 2>&1
> $last_full_backup
fi
if [[ ! -f $incremental_reg_backup ]];then
echo "Creating $incremental_reg_backup" >> $error_log 2>&1
> $incremental_reg_backup
fi
}
function do_backup(){
host=$3
port=$4
user=$5
password=$(echo $6 | openssl enc -aes-128-cbc -a -d -salt -pass pass:wtf)
if [[ ! -f "$lock_file" ]];then
> $lock_file
fi
if [[ "$( cat $lock_file )" != "$(date +%Y%m%d)" ]];then
##########################################################
# Tomamos la fecha y ordenador al que el backup pertenece.
Yr=$(date +"%Y")
Mh=$(date +"%m")
Dy=$(date +"%d")
day=$(echo "$Yr$Mh$Dy")
let $folder "folder=(Mh-1)%3"
echo $day > $lock_file
echo " day $day --- folder $folder --- month $Mh" >> $error_log 2>&1
echo "---------------- $(date +"%Y/%m/%d - %H:%M:%S") ----------------" >> $error_log 2>&1
backup_path="$main_path/monthly/$folder"
if [[ ! -d $backup_path ]];then
mkdir -pv $backup_path >> $error_log 2>&1
fi
#If force yes then delete
if [[ "$2" == "1" ]]; then
if [[ -d $backup_path ]]; then
rm -rfv $backup_path >> $error_log 2>&1
fi
else
if [[ -d $backup_path ]]; then
error="La carpeta existe y no se hace nada use la opcion -(f) para forzar el respaldo!\n"
print "%s" "$error" >> $error_log 2>&1
print "%s" "$error"
exit 1
fi
fi
initialt=$(date +"%H:%H:%S")
if [[ ! -d $dest/files ]];then
mkdir -pv $dest/files >> $error_log 2>&1
fi
echo "---------------- [$day / $initialt] - [Backup of files and Scripts] ----------------" >> $error_log 2>&1
tar -czpf $dest/files/etc.tar.gz /etc/ >> $error_log 2>&1
tar -czpf $dest/files/Scripts.tar.gz $Scripts_path >> $error_log 2>&1
printf "Last Script runned on %d and stored in folder %s\n" "$day" "$backup_path" >> $main_path/date.txt
echo "---------------- [$day / $initialt] - [Initial Backup] ----------------" >> $error_log 2>&1
xtrabackup -u $user -p $password --backup --datadir=/var/lib/mysql/ --target-dir=$backup_path >> $error_log 2>&1
finalt=$(date +"%H:%H:%S")
echo "---------------- [$day / $finalt] - [Final Backup] ----------------" >> $error_log 2>&1
cat $last_full_backup >> $history_full_backup
echo "$day [$initialt - $finalt] | $backup_path" > $last_full_backup
echo "Cleaning old week backup" >> $error_log 2>&1
while read weekline;do
weekfolder=$(echo $weekline | awk '{print $6}' )
if [ -d $weekfolder ];then
rm -rfv $weekfolder >> $error_log 2>&1
fi
done < $history_incremental_reg_backup
#Updateing incremental registry
cat $incremental_reg_backup >> $history_incremental_reg_backup
> $incremental_reg_backup
rm $lock_file
fi
}
> $error_log
option=""
force=1
nfs_option=1
flag1=0
flag2=0
print_usage() {
backup_path="$main_path/monthly/[0-2]"
echo "Modo de empleo: $0.sh [-F|--force] [N|--noforce] [-T|--timestamp] [-O|--notimestamp] [-U|--user=\$user] [-P|--port=\$port] [-H|--host=\$host] [-p|--password=\$password] [--no_nfs] [-h|--help]
Realiza un respaldo completo de la base de datos usando el PATH $backup_path
Las opciones validas son:
-F|--force Forzar la carpeta destino si existe reescribe
-H|--host=\$host Nombre del servidor a conectarse para el respaldo (default=dbserver)
-N|--noforce Si la carpeta destino existe no reescribe
-O|--notimestamp Escribe directamente en $backup_path sin estampado de tiempo
-P|--port=\$port Puerto a conectarse para el respaldo (default=3306)
-T|--timestamp Agrega al $backup_path un directorio \$Y-\$m-\$d-\$H-\$M-\$s
-U|--user=\$user Usuario con el que se conectara al servidor para hacer el respaldo (default=backup)
-h|--help Imprime esta ayuda
--no_nfs No intenta montar directorio de respaldo
-p|--password=\$password Password para la autenticacion.
Las opciones por defectos son --force y --notimestamp
OPTIONS: -[F|H|N|O|P|T|U|h|p]
" >&2
}
while [[ "$1" != "" ]]; do
case $1 in
-F|--force)
if let "flag1==0";then
let $force "force=1"
let $flag1 "flag=1"
fi
;;
-N|--noforce)
if let "flag1==0";then
let $force "force=0"
let $flag1 "flag=1"
fi
;;
--no_nfs)
nfs_option=0
;;
-T|--timestamp)
if let "flag2==0";then
option=""
let $flag2 "flag2=1"
fi
;;
-O|--notimestamp)
if let "flag2==0";then
option="--no-timestamp "
let $flag2 "flag2=1"
fi
;;
-U)
user=$2
shift
;;
-P)
port=$2
shift
;;
-H)
host=$2
shift
;;
-p)
password=$(echo $2 | openssl enc -aes-128-cbc -a -salt -pass pass:wtf)
shift
;;
--user=*)
user=$(echo $1 | awk -F= '{print $2}')
;;
--port=*)
port=$(echo $1 | awk -F= '{print $2}')
;;
--host=*)
host=$(echo $1 | awk -F= '{print $2}')
;;
--password=*)
password=$(echo $1 | awk -F= '{print $2}' | openssl enc -aes-128-cbc -a -salt -pass pass:wtf)
;;
-h|\?|--help)
print_usage
exit 0
;;
*)
printf "Comando $1 no reconocido, favor consulte ($0 -h) para ver las opciones aceptadas.\n"
#print_usage
exit 1
;;
esac
shift
done
if [[ "$flag2" == "0" && "$option" == "" ]];then
option="--no-timestamp"
fi
if let "nfs_option==1";then
montar
fi
chk_files
do_backup $option $force $host $port $user $password
#if let "nfs_option==1";then
# desmontar
#fi
</pre>
rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-41722533770142389982015-11-09T11:33:00.000-06:002015-11-09T12:06:04.587-06:00Mariadb Galera Cluster y Debian Jessie con systemdDebian Jessie a cambiado de SysV a Systemd.<br />
<br />
<a href="https://www.debian.org/releases/stable/i386/release-notes/ch-information.en.html#systemd-upgrade-default-init-system" target="_blank">Cambios en Jessie</a><br />
<a href="https://wiki.debian.org/systemd" target="_blank">Más información</a><br />
<br />
Esto significa que el método para arrancar el cluster de galera mariadb según la documentación se debe iniciar de la siguiente forma:<br />
<br />
<div class="highlight-console">
<div class="highlight">
<pre><span class="gp">#</span> service mysql start --wsrep-new-cluster
</pre>
</div>
</div>
<br />
Para sistemas <tt class="docutils literal"><span class="pre">systemd</span></tt>:<br />
<br />
<div class="highlight-console">
<div class="highlight">
<pre><span class="gp">#</span> systemctl start mysql --wsrep-new-cluster
</pre>
</div>
</div>
<br />
El problema es que no arrancará con uno ni con el otro, debido a que el nuevo systemd no permite parámetros y el service no manda a cargar /etc/init.d/mysql, por lo tanto la forma rústica e incorrecta es configurar en my.cnf:<br />
<br />
wsrep_cluster_address = "gcomm://"<br />
<br />
Arrancar el servidor y luego modificar nuevamente el my.cnf:<br />
<br />
wsrep_cluster_address = "gcomm://ip1,ip2,ip3"<br />
<br />
Pero esta no es la forma correcta.<br />
<br />
La forma correcta es indicar por parámetros la primera vez lo deseado "--wresp-new-cluster" y dejando el wsrep_cluster_address con todos los integrantes.<br />
<br />
Lo primero que vamos a hacer es ejecutar el siguiente comando:<br />
<br />
# systemctl cat mysql.service<br />
<br />
Lo que nos devolverá la siguiente salida:<br />
<blockquote class="tr_bq">
# /run/systemd/generator.late/mysql.service<br />
# Automatically generated by systemd-sysv-generator<br />
<br />
[Unit]<br />
SourcePath=/etc/init.d/mysql<br />
Description=LSB: Start and stop the mysql database server daemon<br />
Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutdown.target<br />
After=remote-fs.target systemd-journald-dev-log.socket network-online.target nss-lookup.target time-sync.target<br />
Wants=network-online.target<br />
Conflicts=shutdown.target<br />
<br />
[Service]<br />
Type=forking<br />
Restart=no<br />
TimeoutSec=5min<br />
IgnoreSIGPIPE=no<br />
KillMode=process<br />
GuessMainPID=no<br />
RemainAfterExit=yes<br />
SysVStartPriority=2<br />
ExecStart=/etc/init.d/mysql start<br />
ExecStop=/etc/init.d/mysql stop<br />
ExecReload=/etc/init.d/mysql reload</blockquote>
Creamos el siguiente archivo que no existe "/etc/systemd/system/mysql.service" agregando el parámetro que deseamos:<br />
<br />
<blockquote class="tr_bq">
[Unit]<br />
SourcePath=/etc/init.d/mysql<br />
Description=LSB: Start and stop the mysql database server daemon<br />
Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutdown.target<br />
After=remote-fs.target systemd-journald-dev-log.socket network-online.target nss-lookup.target time-sync.target<br />
Wants=network-online.target<br />
Conflicts=shutdown.target<br />
<br />
[Service]<br />
Type=forking<br />
Restart=no<br />
TimeoutSec=5min<br />
IgnoreSIGPIPE=no<br />
KillMode=process<br />
GuessMainPID=no<br />
RemainAfterExit=yes<br />
SysVStartPriority=2<br />
ExecStart=/etc/init.d/mysql start --wsrep_new_cluster<br />
#ExecStart=/etc/init.d/mysql start<br />
ExecStop=/etc/init.d/mysql stop<br />
ExecReload=/etc/init.d/mysql reload</blockquote>
<br />
Listo, cuando ejecutemos por primera vez pasará por parámetro que debe iniciar el primer miembro del cluster, basta entrer y solo hacer un cambio en los comentarios, si se cae este servidor solo basta hacer un "service mysql restart" y cargará con el gcomm://ip1,ip2,ip3.<br />
<br />
Es más sólido modificar solo el parámetro de entrada que tocar el archivo de configuración.rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-75183671082431377522014-09-26T12:53:00.001-06:002014-10-02T11:11:27.427-06:00Instalando certificados a subdominios<div style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.0499992370605px; margin-bottom: 0.5em; margin-top: 0.4em;">
Primero que todo debemos saber que necesitamos un servidor zimbra proxy donde a él le apuntaremos y en el crearemos los certificados de los dominios internos.</div>
<pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); font-family: Consolas, Monaco, monospace; font-size: 13px; line-height: 1.1em; overflow-x: scroll; padding: 1em;"># mkdir /opt/zimbra/conf/domaincerts
# cd /opt/zimbra/conf/domaincerts
</pre>
<div style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.0499992370605px; margin-bottom: 0.5em; margin-top: 0.4em;">
Para cada dominio colocaremos sus llaves en estos directorios...
</div>
<ol style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.0499992370605px; list-style-image: none; margin: 0.3em 0px 0px 3.2em; padding: 0px;">
<li style="margin-bottom: 0.1em;">dominio.mi.com.key (el key privado)</li>
<li style="margin-bottom: 0.1em;">dominio.mi.com.crt (commercial.crt + intermediates + root_CA) [El orden de estos archivos es bien sensible y puede evitar al servidor que inicie - hay que ser cuidadoso - ver tambien el bug 57271 <a class="external free" href="http://bugzilla.zimbra.com/show_bug.cgi?id=57271" rel="nofollow" style="background: url(http://wiki.zimbra.com/skins/zimbra/external.png) 100% 50% no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;">http://bugzilla.zimbra.com/show_bug.cgi?id=57271</a> ]</li>
<li style="margin-bottom: 0.1em;">dominio.tu.com.key</li>
<li style="margin-bottom: 0.1em;">dominio.tu.com.crt</li>
<li style="margin-bottom: 0.1em;">..</li>
</ol>
<div style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.0499992370605px; margin-bottom: 0.5em; margin-top: 0.4em;">
... and do the following commands:</div>
<ul style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.0499992370605px; list-style-image: url(http://wiki.zimbra.com/skins/zimbra/bullet.gif); list-style-type: square; margin: 0.3em 0px 0px 1.5em; padding: 0px;">
<li style="margin-bottom: 0.1em;">Revisamos los keys:</li>
</ul>
<pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); font-family: Consolas, Monaco, monospace; font-size: 13px; line-height: 1.1em; overflow-x: scroll; padding: 1em;"># /opt/zimbra/bin/zmcertmgr verifycrt comm ./dominio.mi.com.key ./dominio.mi.com.crt
</pre>
<ul style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.0499992370605px; list-style-image: url(http://wiki.zimbra.com/skins/zimbra/bullet.gif); list-style-type: square; margin: 0.3em 0px 0px 1.5em; padding: 0px;">
<li style="margin-bottom: 0.1em;">Hacemos el deploy a los certificados:</li>
</ul>
<pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); font-family: Consolas, Monaco, monospace; font-size: 13px; line-height: 1.1em; overflow-x: scroll; padding: 1em;"># /opt/zimbra/libexec/zmdomaincertmgr deploycrts
</pre>
<ul style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.0499992370605px; list-style-image: url(http://wiki.zimbra.com/skins/zimbra/bullet.gif); list-style-type: square; margin: 0.3em 0px 0px 1.5em; padding: 0px;">
<li style="margin-bottom: 0.1em;">Guardamos:</li>
</ul>
<pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); font-family: Consolas, Monaco, monospace; font-size: 13px; line-height: 1.1em; overflow-x: scroll; padding: 1em;"># /opt/zimbra/libexec/zmdomaincertmgr savecrt dominio.mi.com dominio.mi.com.crt dominio.mi.com.key</pre>
<div style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.0499992370605px; margin-bottom: 0.5em; margin-top: 0.4em;">
Luego hay que decirle al servidor zimbra como interactuará con el dominio:</div>
<pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); font-family: Consolas, Monaco, monospace; font-size: 13px; line-height: 1.1em; overflow-x: scroll; padding: 1em;">zmprov md dominio.mi.com +zimbraVirtualHostName "dominio.mi.com" +zimbraVirtualIPAddress "aaaa.bbbb.cccc.dddd"</pre>
<div style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.0499992370605px; margin-bottom: 0.5em; margin-top: 0.4em;">
Donde el ip "aaaa.bbbb.cccc.dddd" corresponde al ip del servidor proxy.</div>
rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-58344152080221899982014-09-26T11:18:00.005-06:002014-09-26T11:18:50.863-06:00Aplicando un certificado a zimbra<div style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-family: Tahoma; font-size: 1.2em; margin-bottom: 15px; margin-top: 1px; outline: 0px; padding: 2px; vertical-align: baseline;">
Casi siempre resulta a veces que algunas versiones presentan el bug de error de certificado y hay que hacerlo manualmente estos serían los pasos para hacerlo desde el cli.</div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-family: Tahoma; font-size: 1.2em; margin-bottom: 15px; margin-top: 1px; outline: 0px; padding: 2px; vertical-align: baseline;">
Como root:</div>
<pre style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-size: 11px; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; width: 548px;"># openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr</pre>
<div style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-family: Tahoma; font-size: 1.2em; margin-bottom: 15px; margin-top: 1px; outline: 0px; padding: 2px; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-family: Tahoma; font-size: 1.2em; margin-bottom: 15px; margin-top: 1px; outline: 0px; padding: 2px; vertical-align: baseline;">
Luego comprar el certificado con el csr de esto se obtendran dos archivos uno en extension crt para el ejemplo usaremos (server.crt) y otro que dirá bundle:</div>
<pre style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-size: 11px; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; width: 548px;"># cp server.key /opt/zimbra/ssl/zimbra/commercial/commercial.key</pre>
<pre style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-size: 11px; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; width: 548px;"># cp server.crt /opt/zimbra/ssl/zimbra/commercial/commercial.crt
# cp server.ca-bundle /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt
</pre>
<pre style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-size: 11px; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; width: 548px;"><pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; width: 548px;"><span style="background: transparent; border: 0px; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Antes de hacer el deploy debemos verificar los certificados:</span></pre>
<div>
<span style="background: transparent; border: 0px; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span></div>
</pre>
<pre style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-size: 11px; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; width: 548px;"># /opt/zimbra/openssl/bin/openssl verify -CAfile commercial_ca.crt commercial.crt</pre>
<pre style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-size: 11px; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; width: 548px;"><span style="background: transparent; border: 0px; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
Si este paso falla asegurarse de tener los archivos bundle y el crt completos y correctos.
</span></pre>
<div style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-family: Tahoma; font-size: 1.2em; margin-bottom: 15px; margin-top: 1px; outline: 0px; padding: 2px; vertical-align: baseline;">
<span style="background: transparent; border: 0px; font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"># /opt/zimbra/bin/zmcertmgr deploycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.crt /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt</span></div>
<pre style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-size: 11px; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; width: 548px;"></pre>
<div style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-family: Tahoma; font-size: 1.2em; margin-bottom: 15px; margin-top: 1px; outline: 0px; padding: 2px; vertical-align: baseline;">
Ahora solo basta reiniciar</div>
<pre style="background: rgb(255, 255, 255); border: 0px; color: #2c2c29; font-size: 11px; outline: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap; width: 548px;"># su - zimbra
$ zmcontrol stop
$ zmcontrol start</pre>
rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-36516797009810777912014-09-18T14:54:00.000-06:002014-09-18T14:54:17.749-06:00Recuperando archivos desde linux<a class="external text" href="http://www.cgsecurity.org/" target="_blank">TestDisk</a> es un software OpenSource software y esta licenciado bajo los términos de <a class="external text" href="http://www.gnu.org/licenses/gpl.html" rel="nofollow" target="_blank">GNU General Public License</a> (GPL v2+).<br />
<br />
Esta pequeña herramienta me dejó sorprendido al probarlo, perfectamente recupero 100% de mis datos habiéndolos borrados intencionalmente para probarla.<br /><br />Hago hincapié que si desean probarla siempre manejen un respaldo. Jamás se arriesguen a probar herramientas de restauración sin haber respaldado primero la información a probar a ser recuperada.<br /><br />Esta herramienta funciona como todas las herramientas tradicionales de restauración y siempre hay que tener presente la siguiente etiqueta: "¡Jamás, restaures en el mismo disco dañado!" Los archivos encontrados deben de ser restaurados en una partición distinta o un disco duro distinto del que se esta trabajando, por lo tanto se requiere siempre de un disco externo o una partición sana en caso que se halla corrompido una de las particiones.<br />
<br />
Pueden existir otras herramientas, espero comentarios si conocen alguna otra herramienta excelente pero esta resultó ser perfecta para lo que necesitaba.rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-25137556676517006562014-09-02T08:06:00.001-06:002015-11-09T11:41:09.629-06:00Fake RaidPara habilitar el fake raid en Debian GNU/Linux se debe de agregar en el bootloader la opcion dmraid=enable<br />
<br />
https://wiki.debian.org/DebianInstaller/SataRaid<br /><br />Pero al final es más útil y recomendado usar software RAID que el FAKE RAID.<br />
<br />
¿Por qué? Si falla el hardware y se mueven los discos, es más fácil y rápido montar un software RAID que un FAKE RAID.rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-41100643910974339022014-03-12T13:09:00.000-06:002014-03-12T13:09:52.824-06:00Manipulando salidas repetidas del Shell Alguna vez nos ha pasado que buscamos un error en un log que se repite mas de una vez pero a la vez es variable su contenido, por ejemplo si es correo el error se repite para un mismo correo o mas.<br />
<br />
Si deseamos saber las veces totales unicas que el error a aparecido en el servidor es un poco dificil tratar de contarlos, generalmente puede solucionarse con sort y luego con vim eliminar los repetidos de esa salida. Sin embargo es muy rustico.<br />
<br />
El comando uniq viene a solventarnos el problema.<br />
<br />
Un ejemplo seria lo siguiente:<br />
<br />
# grep kernel /var/log/syslog | head -20<br />
Mar 12 08:09:50 myhostname kernel: [345422.277505] hp_wmi: Unknown event_id - 8 - 0x2<br />
Mar 12 10:52:22 myhostname kernel: [355159.298700] CPU2: Core temperature above threshold, cpu clock throttled (total events = 3401)<br />
Mar 12 10:52:22 myhostname kernel: [355159.298705] CPU3: Core temperature above threshold, cpu clock throttled (total events = 3401)<br />
Mar 12 10:52:22 myhostname kernel: [355159.298710] CPU0: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
Mar 12 10:52:22 myhostname kernel: [355159.298715] CPU1: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
Mar 12 10:52:22 myhostname kernel: [355159.298720] CPU3: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
Mar 12 10:52:22 myhostname kernel: [355159.298725] CPU2: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
Mar 12 10:52:22 myhostname kernel: [355159.299719] CPU0: Package temperature/speed normal<br />
Mar 12 10:52:22 myhostname kernel: [355159.299721] CPU1: Package temperature/speed normal<br />
Mar 12 10:52:22 myhostname kernel: [355159.299725] CPU3: Core temperature/speed normal<br />
Mar 12 10:52:22 myhostname kernel: [355159.299728] CPU2: Core temperature/speed normal<br />
Mar 12 10:52:22 myhostname kernel: [355159.299731] CPU3: Package temperature/speed normal<br />
Mar 12 10:52:22 myhostname kernel: [355159.299734] CPU2: Package temperature/speed normal<br />
Mar 12 10:54:14 myhostname kernel: [355271.844634] [Hardware Error]: Machine check events logged<br />
Mar 12 10:57:43 myhostname kernel: [355480.139160] CPU3: Core temperature above threshold, cpu clock throttled (total events = 3481)<br />
Mar 12 10:57:43 myhostname kernel: [355480.139165] CPU2: Core temperature above threshold, cpu clock throttled (total events = 3481)<br />
Mar 12 10:57:43 myhostname kernel: [355480.139170] CPU1: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
Mar 12 10:57:43 myhostname kernel: [355480.139176] CPU0: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
Mar 12 10:57:43 myhostname kernel: [355480.139180] CPU2: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
Mar 12 10:57:43 myhostname kernel: [355480.139185] CPU3: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
<div>
<br /></div>
El problema es que los 6 primeros campos nos son inutiles por lo tanto tendremos que eliminarlos, transformando la consulta a algo mas util:<br />
<br />
# grep kernel /var/log/syslog | awk -F"] " '{print $2}'| head -20<br />
hp_wmi: Unknown event_id - 8 - 0x2<br />
CPU2: Core temperature above threshold, cpu clock throttled (total events = 3401)<br />
CPU3: Core temperature above threshold, cpu clock throttled (total events = 3401)<br />
CPU0: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
CPU1: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
CPU3: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
CPU2: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
CPU0: Package temperature/speed normal<br />
CPU1: Package temperature/speed normal<br />
CPU3: Core temperature/speed normal<br />
CPU2: Core temperature/speed normal<br />
CPU3: Package temperature/speed normal<br />
CPU2: Package temperature/speed normal<br />
[Hardware Error]: Machine check events logged<br />
CPU3: Core temperature above threshold, cpu clock throttled (total events = 3481)<br />
CPU2: Core temperature above threshold, cpu clock throttled (total events = 3481)<br />
CPU1: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
CPU0: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
CPU2: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
CPU3: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
<div>
<br /></div>
Agregando el comando sort ordenamos todas las salidas y como veremos es mas sencillo encontrar unificados los problemas y nuestra tarea seria descartar los repetidos:<br />
<br />
# grep kernel /var/log/syslog | awk -F"] " '{print $2}'| sort | head -40<br />
CPU0: Package temperature above threshold, cpu clock throttled (total events = 12688)<br />
CPU0: Package temperature above threshold, cpu clock throttled (total events = 12689)<br />
CPU0: Package temperature above threshold, cpu clock throttled (total events = 29267)<br />
CPU0: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
CPU0: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
CPU0: Package temperature above threshold, cpu clock throttled (total events = 4977)<br />
CPU0: Package temperature above threshold, cpu clock throttled (total events = 6992)<br />
CPU0: Package temperature above threshold, cpu clock throttled (total events = 8079)<br />
CPU0: Package temperature/speed normal<br />
CPU0: Package temperature/speed normal<br />
CPU0: Package temperature/speed normal<br />
CPU0: Package temperature/speed normal<br />
CPU0: Package temperature/speed normal<br />
CPU0: Package temperature/speed normal<br />
CPU0: Package temperature/speed normal<br />
CPU0: Package temperature/speed normal<br />
CPU0: Package temperature/speed normal<br />
CPU1: Package temperature above threshold, cpu clock throttled (total events = 12688)<br />
CPU1: Package temperature above threshold, cpu clock throttled (total events = 12689)<br />
CPU1: Package temperature above threshold, cpu clock throttled (total events = 29267)<br />
CPU1: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
CPU1: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
CPU1: Package temperature above threshold, cpu clock throttled (total events = 4977)<br />
CPU1: Package temperature above threshold, cpu clock throttled (total events = 6992)<br />
CPU1: Package temperature above threshold, cpu clock throttled (total events = 8079)<br />
CPU1: Package temperature/speed normal<br />
CPU1: Package temperature/speed normal<br />
CPU1: Package temperature/speed normal<br />
CPU1: Package temperature/speed normal<br />
CPU1: Package temperature/speed normal<br />
CPU1: Package temperature/speed normal<br />
CPU1: Package temperature/speed normal<br />
CPU1: Package temperature/speed normal<br />
CPU1: Package temperature/speed normal<br />
CPU2: Core temperature above threshold, cpu clock throttled (total events = 12160)<br />
CPU2: Core temperature above threshold, cpu clock throttled (total events = 12161)<br />
CPU2: Core temperature above threshold, cpu clock throttled (total events = 26206)<br />
CPU2: Core temperature above threshold, cpu clock throttled (total events = 3401)<br />
CPU2: Core temperature above threshold, cpu clock throttled (total events = 3481)<br />
CPU2: Core temperature above threshold, cpu clock throttled (total events = 4571)<br />
<br />
<br />
Para facilitar la tarea usaremos el comando uniq a la salida:<br />
<br />
# grep kernel /var/log/syslog | awk -F"] " '{print $2}'| sort | head -40 | uniq -c<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 12688)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 12689)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 29267)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 4977)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 6992)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 8079)<br />
9 CPU0: Package temperature/speed normal<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 12688)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 12689)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 29267)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 4977)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 6992)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 8079)<br />
9 CPU1: Package temperature/speed normal<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 12160)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 12161)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 26206)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 3401)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 3481)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 4571)<br />
<div>
<br /></div>
Como vemos ahora es mas sencillo observar los errores, para nuestro ejemplo unifique la salida de los primeros 40, pero tambien podemos unificar la salida de todo el registro y luego mostrar los primeros 40 resultados, veremos que la salida varia un poco y es mas agradable:<br />
<br />
# grep kernel /var/log/syslog | awk -F"] " '{print $2}'| sort | uniq -c | head -40<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 12688)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 12689)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 29267)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 4977)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 6992)<br />
1 CPU0: Package temperature above threshold, cpu clock throttled (total events = 8079)<br />
9 CPU0: Package temperature/speed normal<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 12688)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 12689)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 29267)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 4977)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 6992)<br />
1 CPU1: Package temperature above threshold, cpu clock throttled (total events = 8079)<br />
9 CPU1: Package temperature/speed normal<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 12160)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 12161)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 26206)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 3401)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 3481)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 4571)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 6563)<br />
1 CPU2: Core temperature above threshold, cpu clock throttled (total events = 7636)<br />
9 CPU2: Core temperature/speed normal<br />
1 CPU2: Package temperature above threshold, cpu clock throttled (total events = 12688)<br />
1 CPU2: Package temperature above threshold, cpu clock throttled (total events = 12689)<br />
1 CPU2: Package temperature above threshold, cpu clock throttled (total events = 29267)<br />
1 CPU2: Package temperature above threshold, cpu clock throttled (total events = 3464)<br />
1 CPU2: Package temperature above threshold, cpu clock throttled (total events = 3544)<br />
1 CPU2: Package temperature above threshold, cpu clock throttled (total events = 4977)<br />
1 CPU2: Package temperature above threshold, cpu clock throttled (total events = 6992)<br />
1 CPU2: Package temperature above threshold, cpu clock throttled (total events = 8079)<br />
9 CPU2: Package temperature/speed normal<br />
1 CPU3: Core temperature above threshold, cpu clock throttled (total events = 12160)<br />
1 CPU3: Core temperature above threshold, cpu clock throttled (total events = 12161)<br />
1 CPU3: Core temperature above threshold, cpu clock throttled (total events = 26206)<br />
1 CPU3: Core temperature above threshold, cpu clock throttled (total events = 3401)<br />
<br />
<br />
<div>
<br /></div>
rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-63224315915920515062014-03-10T13:52:00.003-06:002014-03-10T13:52:41.600-06:00Reiniciando el ratónSi alguna vez por minutos el sistema bloquea el raton o el ratón se freeza y todo sigue funcionando bien la solución es reiniciar el modulo del ratón:<br />
<br />
rmmod psmouse<br />
modprobe psmouserojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-2498873676193072822013-08-07T10:59:00.001-06:002015-11-09T11:41:29.186-06:00Compilando kernel al modo debianSiempre nos topamos con la pared que muchos temen al momento de escuchar "vamos a compilar el kernel", debian permite compilarlo de una forma sencilla y ajustado al mismo.<br />
<br />
Instalar paquetes necesarios:<br />
<br />
apt-get install build-essential fakeroot ncurses-dev kernel-package bc<br />
<br />
1) Bajar el kernel a compilar<br />
Suponiendo que hemos bajado la version 3.8.2, actualmete la version estable es la 3.10.5, tambien lo he probado con esta última, pero por ahora veamos con la primera.<br />
cd /usr/src<br />
wget -dc https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.2.tar.gz<br />
tar -xzpf linux-3.8.2.tar.gz<br />
ln -s /usr/src/linux-3.8.2 /usr/src/linux<br />
cd linux<br />
<br />
2) Preparamos el kernel<br />
make dep<br />
make-kpkg clean<br />
<div>
<br /></div>
3) El siguiente paso es elegir las opciones:<br />
make menuconfig<br />
Aqui agregamos y quitamos lo que no necesitamos.<br />
<br />
4) Creamos el paquete .deb<br />
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers<br />
Tiempo estimado:<br />
real 84m34.915s<br />
user 58m5.118s<br />
sys 14m48.043s<br />
<div>
<br /></div>
5) En caso de algun error en el paso anterior, caso contrario proceda con el paso (6)<br />
make clean<br />
Y volvemos desde el paso (2)<br />
<br />
6) Instalamos los .deb<br />
cd ..<br />
dpkg -i linux-image-3.8.2-*.deb linux-headers-3.8.2-*.deb<br />
<br />
Listo ahora tendremos un kernel compilado a la forma debian.<br />
<br />
<a href="http://www.debian.org/releases/stable/amd64/ch08s06.html.en">http://www.debian.org/releases/stable/amd64/ch08s06.html.en</a><br />
<a href="http://www.debian.org/releases/stable/i386/ch08s06.html.en">http://www.debian.org/releases/stable/i386/ch08s06.html.en</a><br />
<br />
<a href="https://www.kernel.org/">https://www.kernel.org/</a>rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-31172826762073975692013-06-13T16:07:00.000-06:002013-06-13T16:07:02.616-06:00Fecha de creación de un ficheroSobre este tema muy poco se encuentra al respecto y siempre encuentras al menso que dice que no se puede.<br />
<br />
Luego de buscar encontre lo siguiente, no es linux el que almacena el tiempo sino el filesystem y para encontrar esta informacion hay que realizar lo siguiente:<br />
<br />
<code>debugfs -R 'stat /home/renich' /dev/mapper/VolGroup-lv_root</code><br />
<br />
<code>Es decir la sintaxis sería:</code><br />
<br />
<code><code>debugfs -R 'stat /$path/$to/$file_$dir' /dev/$partition</code></code><br />
<br />
<code><code>Y con esto obtenemos la informacion necesaria. </code> </code>rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-69748456138901515742013-06-12T09:29:00.002-06:002022-01-24T13:49:01.512-06:00Listado distros debian¿Alguna vez haz deseado o necesitado una version anterior de debian?<br />
<br />
Aqui la url para descargar las siguientes distros:<br />
<ul>
<li>3.0_r0 to 3.0_r6 (Woody)
</li>
<li>3.1_r0 to 3.1_r8 (Sarge)
</li>
<li>4.0_r0 to 4.0_r9 (Etch)
</li>
<li>5.0.0 to 5.0.10 (Lenny)
</li>
<li>6.0.0 to 6.0.10 (Squeeze)
</li>
<li>7.0.0 to 7.11.0 (Wheezy)
</li>
<li>8.0.0 to 8.11.0 (Jessie)
</li>
<li>8.11.1 (Jessie LTS, for some arches only)
</li>
<li>9.0.0 to 9.13.0 (Stretch)
</li>
<li>10.0.0 to ... (Buster)
</li>
<li>11.0.0 to ... (Bullseye)
</li>
</ul>
http://cdimage.debian.org/cdimage/archive/<br />
<br />
En mi caso necesito lenny y squeeze. rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-40812218853938918902013-06-05T12:11:00.000-06:002013-06-05T12:11:05.770-06:00DNSSEC y BINDAntes de continuar ver antes como enjaular el servicio BIND:<br />
<a href="http://gnu-linux-opensource.blogspot.com/2011/11/enjaulando-el-bind.html">http://gnu-linux-opensource.blogspot.com/2011/11/enjaulando-el-bind.html</a><br />
<br />
1) Instalamos dependencias:<br />
apt-get install dnssec-tools libnet-dns-sec-perl libmailtools-perl libcrypt-openssl-random-perl<br />
<br />
2) Agregaremos los siguiente en named.conf.options<br />
<br />
options {<br />
.... <br />
<pre> dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;</pre>
<pre>} </pre>
<br />
<pre>include "/etc/bind/bind.keys";</pre>
<pre> </pre>
<pre>3) ahora nos movemos a /var/lib/named/var/cache/bind/master y procedemos a hacer lo siguiente para cada zona:</pre>
<pre> </pre>
<pre>zonesigner -genkeys -usensec3 -zone $dominio $archivo</pre>
<pre> </pre>
<pre>4) Ahora en el llamado del fichero llamamos al que tiene como extension .signed:</pre>
<pre>
</pre>
<pre>file "master/$dominio.signed";</pre>
<pre> </pre>
<pre>5) Para modificar una zona modificamos el fichero original y luego lo volvemos a firmar:</pre>
<pre> </pre>
<pre>zonesigner -zone $dominio $archivo </pre>
<pre>
</pre>
<pre>
</pre>
<pre>Ahora si tenemos un servidor esclavo haremos lo siguiente:</pre>
<pre>
</pre>
<pre>Hacer los pasos 1 y 2 previamente hechos, omitimos el paso 3 del server maestro y pasamos al 4to paso que seria nuestro 3er paso.</pre>
<pre>
</pre>
<pre>3) En el llamado del fichero agregamos la extension.signed:</pre>
<pre> </pre>
<pre>file "slave/$dominio.signed";</pre>
<pre> </pre>
<pre>Hasta este punto ya tenemos nuestros servidores con DNSSEC.</pre>
<pre> </pre>
<pre>Saludes hasta el proximo post. </pre>
rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-36759474954696003772013-03-23T23:32:00.001-06:002013-06-11T18:35:17.297-06:00Habilitando el click en el touchpad<span style="font-family: Times, Times New Roman, serif;">Primero revisemos segun el siguiente comando:</span><br />
<span style="font-family: Times, Times New Roman, serif;">egrep -i 'synap|alps|etps' /proc/bus/input/devices</span><br />
<span style="font-family: Times, Times New Roman, serif;"></span><br />
<span style="font-family: Times, Times New Roman, serif;"></span>
<span style="font-family: Times, Times New Roman, serif;">Lo cual me retorna lo siguiente:</span><br />
<span style="font-family: Times, Times New Roman, serif;">N: Name="ETPS/2 Elantech Touchpad"</span><br />
<div>
<span style="font-family: Times, Times New Roman, serif;"><br /></span></div>
<br />
<span style="font-family: Times, Times New Roman, serif;">Segun la documentacion mi touchpad es soportado en mi kernel "3.2.0-4-amd64" y luego ejecute el siguiente comando:</span><br />
<span style="font-family: Times, Times New Roman, serif;">synclient TapButton1=1 TapButton2=2 TapButton3=3</span><br />
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<span style="font-family: Times, Times New Roman, serif;">Con esto se arregló.</span><br />
<br />
<span style="font-family: Times, Times New Roman, serif;">Esto se ejecuta cuando usamos TWM por ejemplo y no un gestor de ventanas avanzado como kde o gdm. </span>rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-71293201610093353622013-03-05T14:35:00.000-06:002013-03-05T14:35:13.584-06:00Cambiando nombre de archivos con nombre no validosPrimero buscamos el inode del archivo<br />
ls -li<br />
<br />
Tomamos el inode y lo renombramos<br />
<span style="background-color: #f9f9f9; font-family: 'Courier New'; font-size: 13px;">find . -inum número_del_inode -exec mv -i {} nombre_nuevo \;</span>rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-74370387247824591182012-11-30T11:36:00.002-06:002012-11-30T11:37:24.893-06:00Tarjetas de video híbridasMi ordenador es un samsung RC512 tiene instalado debian squeeze y el siguiente kernel:<br />
Linux usuario 2.6.32-5-amd64 #1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU/Linux<br />
<br />
El hardware tiene las siguientes características:<br />
<br />
<table border="1">
<tbody>
<tr><td>00:00.0 Host bridge: Intel Corporation Sandy Bridge DRAM Controller (rev 09)</td></tr>
<tr><td>00:01.0 PCI bridge: Intel Corporation Sandy Bridge PCI Express Root Port (rev 09)</td></tr>
<tr><td>00:02.0 VGA compatible controller: Intel Corporation Sandy Bridge Integrated Graphics Controller (rev 09)</td></tr>
<tr><td>00:16.0 Communication controller: Intel Corporation Cougar Point HECI Controller #1 (rev 04)</td></tr>
<tr><td>00:1a.0 USB Controller: Intel Corporation Cougar Point USB Enhanced Host Controller #2 (rev 04)</td></tr>
<tr><td>00:1b.0 Audio device: Intel Corporation Cougar Point High Definition Audio Controller (rev 04)</td></tr>
<tr><td>00:1c.0 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 1 (rev b4)</td></tr>
<tr><td>00:1c.3 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 4 (rev b4)</td></tr>
<tr><td>00:1c.4 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 5 (rev b4)</td></tr>
<tr><td>00:1d.0 USB Controller: Intel Corporation Cougar Point USB Enhanced Host Controller #1 (rev 04)</td></tr>
<tr><td>00:1f.0 ISA bridge: Intel Corporation Cougar Point LPC Controller (rev 04)</td></tr>
<tr><td>00:1f.2 SATA controller: Intel Corporation Cougar Point 6 port SATA AHCI Controller (rev 04)</td></tr>
<tr><td>00:1f.3 SMBus: Intel Corporation Cougar Point SMBus Controller (rev 04)</td></tr>
<tr><td>01:00.0 3D controller: nVidia Corporation Device 0dec (rev a1)</td></tr>
<tr><td>02:00.0 Network controller: Intel Corporation Centrino Advanced-N + WiMAX 6250 (rev 5f)</td></tr>
<tr><td>03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)</td></tr>
<tr><td>04:00.0 USB Controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)</td></tr>
</tbody></table>
<div>
<br />
Como se puede observar se pueden ver las dos tarjetas de video:<br />
<br />
<table border="1">
<tbody>
<tr><td>00:02.0 VGA compatible controller: Intel Corporation Sandy Bridge Integrated Graphics Controller (rev 09)</td></tr>
<tr><td>01:00.0 3D controller: nVidia Corporation Device 0dec (rev a1)</td></tr>
</tbody></table>
</div>
<div>
<br />
Desde que instalé debian 6, estuve luchando por querer setear NVidia como mi tarjeta principal, al cabo de unos pocos intentos e indagación me di cuenta sobre el funcionamiento de video híbrido que poseia mi maquina. Cuando reinstale windows note que al intentar instalar el driver NVidia el mismo driver me pidió instalar el driver Intel primero ya que no encontraba hardware NVidia alguno en el ordenador, así que procedí a instalar el controlador Intel y luego volví a instalar NVidia y funcionó exitosamente. Así que al instalar GNU/Linux procedí de la misma forma y exitosamente logre instalar Intel y NVidia, solo que había un problema, Probando con OpenSUSE ya que decidí probar como levantaba otra distribución me seteaba exitosamente NVidia como principal sin embargo el GPU por ser el principal consumia mucho recurso de energia y el fan trabajaba como loco, en Debian al usar la Intel mis recursos de hardware funcionan con mejor desempeño, lo cual me pareció perfecto.</div>
<div>
<br /></div>
<div>
Una vez definido el problema, decidí quedarme con Debian claro, ya que OpenSUSE solo era mero estudio y prueba, me despreocupe con la idea de que no estaba trabajando mi video correctamente, solo me quedaba la duda de como usar la tarjeta de video NVidia, así que me dí la tarea de investigar sobre como usar la segunda tarjeta de video y descubrí que para linux esto se llama proceso híbrido y encontré la siguiente página que resolvió mis dudas y mi problema:</div>
<div>
<br /></div>
<div>
https://wiki.debian.org/Bumblebee</div>
<div>
<br /></div>
<div>
El proyecto Bumblebee tiene como objetivo usar las tarjetas de video NVidia para renderizar y mostrar el resultado a travez de la Intel, la solución perfecta de mi problema ahora ya tengo habilitadas mis dos tarjetas de video, pero solo uso la Intel como principal y ejecuto los programas pesados con NVidia.</div>
<div>
<br /></div>
<div>
:wq</div>
rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-39914315491043426162012-11-19T03:08:00.002-06:002012-11-28T14:46:59.212-06:00Cluster de alto desempeñoBueno y que pasa con el alto desempeño, investigando un poco y entrando en el mundo de los clusters, me fascino el tema de cluster Beowulf, tanto que me hacia la idea de tener un super computador, sin embargo la idea inicial que tenía es muy distinta a la idea que tuve al terminar de leer sobre el tema y sucede que para crear un cluster de alto desempeño generalmente es para fines determinados y aplicaciones únicas compiladas para trabajar especialmente en ese cluster.<br />
<div>
<br /></div>
<div>
Mi idea es crear un cluster donde los procesos sean distribuidos en todo el nodo, no para dar mayor velocidad si no capacidad al servicio para realizar cantidades de tareas teniendo hardware que no sería capaz de cumplir dicha tarea por si solo pero unido tenga la capacidad de un supercomputador.</div>
<div>
<br /></div>
<div>
Por lo tanto mi idea y mi objetivo es la creación de un cluster donde un proceso P ejecutandose en el nodo pueda ser ejecutado en uno u otro servidor, es decir que pueda ser migrado y ejecutado en otro servidor si el servidor que ejecuto el proceso esta ocupado.</div>
<div>
<br /></div>
<div>
Durante la investigación descubrí dos paqueterias que realizan la magia para hacer un cluster de alto desempeño estos paquetes son PVM y MPI, al leer sobre ambos, me despeje muchas de las dudas e inquietudes que tenia y a la vez se me cayo la idea del proyecto que pretendía montar, descubrí que ambas herramientas son poderosas sin embargo funcionan con programas que deben de incluir dichas librerias, por lo tanto son para fines específicos y no generales.</div>
<div>
<br /></div>
<div>
Mi idea es usar un cluster de alto desempeño para fines generales y no específicos orientado al desempeño y capacidad para procesar trabajos en el nodo y no necesariamente orientado a su velocidad de respuesta.</div>
<div>
<br /></div>
<div>
Descubrí trucos y métodos para crear clusters de aplicaciones colocando un proxy en medio o maquina maestra encargada de dar acceso por turnos a cada una de las maquinas internas del nodo así cliente1 solicita un proceso P1 al servicio S el cual seria servido por maquina1, luego cliente2 solicita un proceso P2 al servicio S el cual seria servido por maquina2 si el cluster o nodo de clusters solo cuenta de dos maquinas entonces el cliente3 solcita un proceso P3 y seria servido por maquina1 y asi sucesivamente, mas sin embargo esta solución plantea que cada cluster es una maquina independiente con un nfs para sincronizar y tener la misma información sin embargo cada una usaría recursos independiente llevaría un problema adicional que es el acceso de los datos desde dos lugares distintos, esto podría conllevar a datos corruptos en paginas dinámicas en caso que el cluster sea un servicio web, claro esta que soluciona el load balancing de una forma rústica sin embargo de forma muy interesante.</div>
<div>
<br /></div>
<div>
Sin embargo este no era mi objetivo así que procedí a seguir investigando y abandone la idea de usar la filosofía de un cluster Beowulf para propósitos generales, generalmente descubrí que muchos de los servicios en la internet hablan mas de balanceo que potencia para solventar el problema. Es decir que no es necesario que un servicio de base de datos tanga mayor potencia si el problema se soluciona mediante balanceo y el alto desempeño para procesamiento de cálculos. Por lo tanto he decidido crear otro post a futuro tratando sobre como crear balanceadores de carga y hablar sobre el tema.</div>
<div>
<br /></div>
<div>
Es así entonces que descubrí los paquetes PVM y MPI, generalmente ambos me parecen genial, sin embargo tienen sus pros y sus contras, el PVM es mas abstracto y el MPI mas detallado, por lo tanto el PVM no se necesita conocer como realiza el traslado de los procesos en cambio en el MPI si se requiere conocer como se realiza, esto conlleva que el MPI es más flexible y mas transparente que el PVM y por otro lado el PVM ofrece mayores herramientas para monitoreo y control que MPI, MPI por su lado no posee herramientas de control ni monitoreo pero ofrece a bajo nivel control total de como realizará y cuando realizar el traslado de los procesos a los demás nodos y como hacerlo.</div>
<div>
<br /></div>
<div>
Estuve pensando y esto es muy útil cuando se desea crear un supercomputador que realice cálculos estadísticos enormes. Y tocando este tema de supercomputadores, entre al tema del grid computing, otro tema del cual pienso hablar más tarde.</div>
<div>
<br /></div>
<div>
En mi caso por motivos de desarrollo y aprendizaje me fue muy útil crear clusters mediante PVM y MPI sin embargo por ahora desarrollar en c++ usando estas librerías no me es de utilidad sin embargo es un tema muy interesante ver como un proceso que requiere mucho tiempo procesarse en un solo ordenador en un cluster con varias virtuales toma quizás un cuarto de tiempo algo muy interesante. De ahí vino la idea de procesar servicios con estas dos librerías sin embargo es muy razonable el por que no es necesario procesos ni servicios más rápidos si no mas bien de como pueden ser servidos en un nodo de ordenadores sin provocar sobrecarga alguna.</div>
rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0tag:blogger.com,1999:blog-5623220739375202912.post-26666206887978177582012-11-19T01:31:00.000-06:002012-11-19T01:31:27.334-06:00Una nube en el horizontePongámonos del lado de un usuario de la informática de una empresa, cuando hablamos como usuario vamos desde la recepcionista hasta el gerente, e incluso nosotros mismos como administradores, soporte técnico o jefes de IT.<br />
<br />
Vemos como la empresa y sus servicios crecen por lo tanto también el contenido de información que cada usuario produce. Esto nos produce un dilema, "¿Cómo manejar y controlar de forma segura toda esa información?", es donde entraremos con el tema de la nube, cuando surgió la nube trajo grandes respuestas y soluciones, esto permitió que toda la información sin importar que pase con el hardware, la información permanezca en un solo sitio, sin embargo trajo nuevos retos, primero acostumbrar al usuario a usar las nuevas plataformas y acostumbrar a explicarle del por que es mejor tener algo en la nube y no en su equipo local, el usuario no se mueve a la nube si no hasta después de perder la información ya sea a causa de robo o fallo en el hardware local, por mucho que se le explique a un usuario que su sistema local puede fallar, este no se moverá por comodidad de no aprender algo nuevo o tener que hacer algo extra para guardar su información o por el contrario el usuario está consiente de los problemas que conlleva tener todo local esta decidido a moverse a la nube sin embargo no puede por problemas de ancho de banda y tiempo que toma en recuperar o almacenar uno o mas datos de su ordenador local a la nube.<br />
<br />
Ahora que más o menos hemos introducido un poco del problema puede que se nos formule una o más de las siguientes preguntas:<br />
1.- Si me muevo hoy a la nube ¿Puedo acceder a esa información siempre de forma fácil y rápida?<br />
2.- ¿El país esta listo y preparado para movernos a la nube?<div>
3.- ¿Tengo tiempo para mover toda mi insfraestructura?</div>
<div>
4.- ¿Haré una migración total, parcial o híbrida?</div>
<div>
5.- ¿Puedo realizar esa inversión?</div>
<div>
<br /></div>
<div>
Para empezar con el problema de nuestro país y que el internet es como agua en el desierto, por lo tanto hay que realizar un buen estudio para que la solución de un problema no cause otro, se supone que necesitamos solucionar un problema y no crear otro, por lo tanto necesitamos atacar el problema de dos formas, en la empresa tenemos distintos tipos de usuarios, los fijos y los moviles, los fijos pueden gozar de la nube a su total cabalidad ya que gozan del ancho de banda local de nuestra LAN, en cambio los usuarios móviles lo disfrutarán a tiempo parcial o casi a cuenta de gotas ya que si andan fuera de la empresa tendrán que luchar con el acceso que poseen dependiendo del lugar en el que se encuentren, por lo tanto pueden usar acceso de internet movil sin embargo estarán limitados al ancho de banda y si el servicio tiene o no cobertura, por lo tanto tendran limitancia al servicio que ofrezca el ISP, por lo que los usuarios fijos pueden tener una migración total hacia la nube en cambio los usuarios móviles tienen como mejor solución usar la nube de forma híbrida, manejar sus datos locales y usar la nube como backup y sincronización solo cuando su ancho de banda sea lo suficiente bueno como para realizar la sincronización.</div>
<div>
<br /></div>
<div>
Por ahora hemos solucionado parte del problema, sin embargo se formula otro, "¿Donde debemos de tener la nube?", aquí entran a jugar una palabrita que hace que la empresa tome una decisión respecto a donde debe de tener la nube ya sea local o en la internet, la palabrita mágica que hace que todo se mueva que es "costo", cuanto cuesta tenerla la nube local o en la internet, podemos adivinar que es más costoso tener una nube local que tenerla fuera, sin embargo tiene muchos beneficios tenerla local solo si se cuenta con el personal informático dedicado y especializado en el tema y si se requiere mejores tiempos de respuesta ya que se trabaja con ancho de banda propio, en cambio si se opta por trabajar con nubes en la internet se depende del ancho de banda de la empresa por lo tanto el servicio es un poco mas lento sin embargo es mucho mas económico. </div>
<div>
<br /></div>
<div>
La nube aun esta lejos en el horizonte pero poco a poco es una tecnología que toca las puertas de las empresas que necesitan proteger su información en momentos de perdidas por robos o fallos de hardware.</div>
rojoblandinohttp://www.blogger.com/profile/12641432808015860034noreply@blogger.com0