Archivo categoría Administración

Cómo instalar Oracle Java en Debian

centOS 6

Si necesitas instalar la versión de Java de Oracle en Debian, puede seguir los siguientes pasos para realizarlo una vez que hayas descargado el binario desde la página de descarga de Oracle:

Una vez descargado el  procedemos a extraerlo en el directorio /opt:

# tar xvzf jdk-8u45-linux-x64.tar.gz

Primero vamos a consultar la versión de java actual:

# java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu0.14.04.2)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

Aquí puede verse que la versión a la que se hace referencia actualmente es la 1.7.0_79 de OpenJDK. Ahora vamos agregar la ruta de la nueva versión a usar:

# update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_45/bin/java 1

Esta última orden agrega la ruta /opt/jdk1.8.0_45/bin/java al binario /usr/bin/java java, es decir, este será el enlace simbólico a usar en caso de seleccionar esta opción. Vamos a configurar los alternatives para que apunte a la nueva ruta:

# update-alternatives --config java
  Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 auto mode
 1 /opt/jdk1.8.0_45/bin/java 1 manual mode
 2 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 manual mode
 3 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode

Enter to keep the current selection[+], or type selection number: 1

Luego de seleccionar la opción 1, verificamos  la versión de java una vez más:

# java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

Ahora el binario de java apunta a la versión de Oracle. Cosa que podemos verificar consultando los enlaces simbólicos:

# ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 jun  9  2014 /usr/bin/java -> /etc/alternatives/java

# ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 25 jun 15 09:21 /etc/alternatives/java -> /opt/jdk1.8.0_45/bin/java

,

2 Comentarios

Cómo extender un volumen en LVM

A veces es necesario extender un volumen lógico, expandiendo el volumen físico donde está alojado. Si este es el caso, puedes seguir este ejemplo que extiende un volumen de 450 GB a 500 GB: Primero consultamos a geometry del disco

:~# fdisk -l /dev/sdb
Disk /dev/sdb: 483.2 GB, 483183820800 bytes
 255 heads, 63 sectors/track, 58743 cylinders, total 943718400 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0001178e

Luego de expandir el volumen, se fuerza a que se rescanee el volumen

:~# echo 1 > /sys/block/sdb/device/rescan

Consultamos nuevamente la geometría del disco

:~# fdisk -l /dev/sdb
Disk /dev/sdb: 536.9 GB, 536870912000 bytes
 255 heads, 63 sectors/track, 65270 cylinders, total 1048576000 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x0001178e

Como puede verse el tamaño del disco aumentó pero solo lo sabe del sistema operativo, ya que a nivel de LVM sigue teniendo la misma información porque no se ha expandido el volumen físico:

:~# pvs
 PV VG Fmt Attr PSize PFree
 /dev/sda5 debian lvm2 a-- 3.76g 0
 /dev/sda6 debian lvm2 a-- 13.00g 0
 /dev/sdb svn_vg lvm2 a-- 450.00g 0

Si expandimos el volumen físico con la siguente orden:

# pvresize /dev/sdb
 Physical volume "/dev/sdb" changed
 1 physical volume(s) resized / 0 physical volume(s) not resized

Y ahora consultamos los el espacio de los volúmenes físicos veremos el espacio agregado:

:~# pvs
 PV VG Fmt Attr PSize PFree
 /dev/sda5 debian lvm2 a-- 3.76g 0
 /dev/sda6 debian lvm2 a-- 13.00g 0
 /dev/sdb svn_vg lvm2 a-- 500.00g 50.00g

Ahora se debe expandir el volumen lógico y la dimensión de sistema de archivos en caliente. Ambas cosas se pueden hacer con una sola orden:

:~# lvresize -r -L +50G /dev/mapper/svn_vg-svn
 Extending logical volume svn to 500.00 GiB
 Logical volume svn successfully resized
 resize2fs 1.42.5 (29-Jul-2012)
 Filesystem at /dev/mapper/svn_vg-svn is mounted on /var/data/svn; on-line resizing required
 old_desc_blocks = 29, new_desc_blocks = 32
 Performing an on-line resize of /dev/mapper/svn_vg-svn to 131070976 (4k) blocks.
 The filesystem on /dev/mapper/svn_vg-svn is now 131070976 blocks long.

Finalmente si consultamos el espacio disponible tendremos los 50 GB adicionales en el sistema de archivos:

:~# df -h
 Filesystem Size Used Avail Use% Mounted on
 rootfs 993M 287M 655M 31% /
 udev 10M 0 10M 0% /dev
 tmpfs 397M 228K 397M 1% /run
 /dev/mapper/debian-root 993M 287M 655M 31% /
 tmpfs 5.0M 0 5.0M 0% /run/lock
 tmpfs 794M 0 794M 0% /run/shm
 /dev/sda1 228M 34M 183M 16% /boot
 /dev/mapper/debian-home 2.0G 39M 1.9G 3% /home
 /dev/mapper/debian-tmp 3.9G 7.1M 3.7G 1% /tmp
 /dev/mapper/debian-usr 2.0G 869M 1.1G 46% /usr
 /dev/mapper/debian-var 6.7G 2.1G 4.3G 33% /var
 /dev/mapper/svn_vg-svn 493G 432G 62G 88% /var/data/svn

,

2 Comentarios

Cómo mover un volumen físico en LVM

LVM move

Si se requiere mover datos de un disco a otro podríamos pensar en copiar los datos con cp, rsync, o cualquier otro utilitario para posteriormente desmontar la partición, editar el /etc/fstab para que apunte a la nueva ruta, y todo lo que conlleva desincoporar un disco o partición por otra. Pero si se tomó la previsión de hacer el particionado de disco con LVM, existe una manera más limpia de hacer el cambio de disco en caliente, es decir, sin necesidad de desmontar las particiones, e incluso dejando las mismas referencias en el /etc/fstab ya que se seguirá usando la misma partición LVM. Veamos un ejemplo. Si se tiene un disco de 50 GB como un volumen físico en /dev/sdb, asociado a un volumen de grupo data, y se quiere mover los datos a otro disco /dev/sdc  esto es lo que de debe hacer. A continucación se muestra la representación de la distribución inicial:

LVM concepts

podemos consultar el estado actual del los volúmenes físicos con la orden pvs:

# pvs
PV VG Fmt Attr PSize PFree
 /dev/sda2 system lvm2 a- 19.77g 0 
 /dev/sdb data lvm2 a- 50.00g 0

Luego se crea el volumen físico donde se moverá la información:

# pvcreate /dev/sdc
 Physical volume "/dev/sdc" successfully created

Consultamos nuevamente los volúmenes físicos:

# pvs
PV VG Fmt Attr PSize PFree 
 /dev/sda2 system lvm2 a- 19.77g 0 
 /dev/sdb data lvm2 a- 50.00g 0 
 /dev/sdc lvm2 a- 50.00g 50.00g

Vamos ahora a consultar los volúmenes de grupo:

# vgs
VG #PV #LV #SN Attr VSize VFree
 data 1 1 0 wz--n- 50.00g 0 
 system 1 6 0 wz--n- 19.77g 0

Como puede verse el volumen de grupo llamado data ocupa 50 GB. Como este es el volumen de grupo que contiene el volumen físico que queremos mover (/dev/sdb), debemos agregar el volumen físico a este grupo:

# vgextend data /dev/sdc
 Volume group "data" successfully extended

Si consultamos nuevamente veremos que el volumen de grupo ahora tiene 100 GB correspondientes a /dev/sdb (0 GB libres) y /dev/sdc ( 50 GB libres):

# pvs
PV VG Fmt Attr PSize PFree 
 /dev/sda2 system lvm2 a- 19.77g 0 
 /dev/sdb data lvm2 a- 50.00g 0 
 /dev/sdc data lvm2 a- 50.00g 50.00g
# vgs
 VG #PV #LV #SN Attr VSize VFree 
 data 2 1 0 wz--n- 99.99g 50.00g
 system 1 6 0 wz--n- 19.77g 0

Ahora procederemos a mover los datos del  volumen físico /dev/sdb al /dev/sdc:

LVM move

# pvmove /dev/sdb
/dev/sdb: Moved: 0.0%
/dev/sdb: Moved: 11.8%
/dev/sdb: Moved: 30.5%
/dev/sdb: Moved: 75.7%
/dev/sdb: Moved: 95.0%
/dev/sdb: Moved: 99.3%
/dev/sdb: Moved: 100.0%

Aquí no hace falta indicar el otro volumen porque los datos se distribuirán entre los volúmenes físicos restantes del volumen de grupo, y en este caso es solo /dev/sdcAhora verificamos  la distribución de los volúmenes físicos a ver cómo quedó:

# pvs
PV VG Fmt Attr PSize PFree 
 /dev/sda2 system lvm2 a- 19.77g 0 
 /dev/sdb data lvm2 a- 50.00g 50.00g
 /dev/sdc data lvm2 a- 50.00g 0

Como puede verse el disco /dev/sdb no tiene datos (50 GB libres) mientras que /dev/sdc tiene los datos (0 GB libres). Luego faltaría quitar el volumen físico a desincorporar del volumen de grupo:

# vgreduce data /dev/sdb
 Removed "/dev/sdb" from volume group "data"

Ahora  consultamos los volúmenes físicos y los volúmenes de grupo:

# pvs
PV VG Fmt Attr PSize PFree 
 /dev/sda2 system lvm2 a- 19.77g 0 
 /dev/sdb lvm2 a- 50.00g 50.00g
 /dev/sdc data lvm2 a- 50.00g 0
# vgs
VG #PV #LV #SN Attr VSize VFree
 data 1 1 0 wz--n- 50.00g 0 
 system 1 6 0 wz--n- 19.77g 0

Y por último procedemos desechar el volumen físico:

# pvremove /dev/sdb
 Labels on physical volume "/dev/sdb" successfully wiped
# pvs
PV VG Fmt Attr PSize PFree
 /dev/sda2 system lvm2 a- 19.77g 0
 /dev/sdc data lvm2 a- 50.00g 0

Esto permite que se puedan mover los datos de un disco a otro, sin necesidad de copiar los datos a nivel del sistema operativo, sin interrumpir servicios o reiniciar el equipo. Al final tendremos el disco /dev/sdc como el volumen físico del volumen data como se muestra a continuación:

LVM final

Referencia: http://www.tldp.org/HOWTO/LVM-HOWTO/removeadisk.html

,

2 Comentarios

Problema de debmirror: gpgv: Can’t check signature: public key not found

NoMirror.jpg

Tengo un repositorio donde son servidos paquetes de Debian y Ubuntu de forma que las perosnas en la red interna puedan actualizar usando este repositorio. Pero el otro día me di cuenta que este no podía sincronizarse contra el repositorio de Debian como se describe en el artículo Cómo crear un mirror de Debian y Ubuntu con debmirror. Cuando trataba de ejecutar el script de sincronización este arrojaba errores y abortaba.

Síntomas

Cuando se ejecuta el ascript de debmirro este falla con un error similar a este:

gpgv: Signature made Wed 17 Jul 2013 04:40:31 PM CST using RSA key ID 473041FA
[GNUPG:] ERRSIG AED4B06F473041FA 1 2 00 1374050431 9
[GNUPG:] NO_PUBKEY AED4B06F473041FA
gpgv: Can’t check signature: public key not found
gpgv: Signature made Wed 17 Jul 2013 04:40:31 PM CST using RSA key ID 46925553
[GNUPG:] ERRSIG 8B48AD6246925553 1 2 00 1374050431 9
[GNUPG:] NO_PUBKEY 8B48AD6246925553
gpgv: Can’t check signature: public key not found
Release signature does not verify.

Causa

 Los paquetes son validados usando una llave, de forma que podamos confiar en lo que descargamos desde los repositorios de origen y qué es instado finalmente en nuestros computadores. Algunos repositorios tienen un juego de llaves con llaves conocidas, y es probable que una nueva llave firmada fue agregada al juego de llaves de Debian/Ubuntu. Esto puede ocurrir si hay una nueva versión de la distro, y nuevas llaves son añadidas, haciendo que nuestro juego de llaves quede obsolote (les falta las nuevas llaves).

Solución

Para arreglar este inconveniente, sigue los siguientes pasos dependiendo de la distro a la que le estés haciendo mirror:

Debian

Actualiza el repoitorio e importa las nuevas llaves:

aptitude update
aptitude safe-upgrade
gpg --keyring /usr/share/keyrings/debian-archive-keyring.gpg  --export | gpg --no-default-keyring --keyring /var/data/keyrings/debian/trustedkeys.gpg --import

Nota: Si las llaves no fueron agregadas, descarga el último paquete  debian-archive-keyring desde los repoitorioes, extráelo y usa este juego de llaves. Ejemplo:

wget http://ftp.us.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2012.4_all.deb
dpkg -x debian-archive-keyring_2012.4_all.deb  ~
gpg --keyring ~/usr/share/keyrings/debian-archive-keyring.gpg  --export | gpg --no-default-keyring --keyring /var/data/keyrings/debian/trustedkeys.gpg --import

Ubuntu

Descarga el último paquete ubuntu-archive-kering y extraélo, luego usa este juego de llaves. Ejemplo:

wget http://mirror.pnl.gov/ubuntu//pool/main/u/ubuntu-keyring/ubuntu-keyring_2012.05.19_all.deb
dpkg -x ubuntu-keyring_2012.05.19_all.deb ~
gpg --keyring ~/usr/share/keyrings/ubuntu-archive-keyring.gpg --export|gpg --no-default-keyring --keyring /home/hdrepo/keyrings/ubuntu/trustedkeys.gpg --import

Luego el script de sincronixación del mirror debe correr sin  errores, descargando las últimas actualizaciones.

, ,

2 Comentarios

100 preguntas de Linux!

LPI CompTIA Linux+

100 Preguntas de Linux

Este cuestionario busca evaluar qué tanto sabes de Linux, además de ayudarte en los exámenes de certificación de Linux existente en el mercado, tales como LPI o CompTIA.

Puedes ir respondiendo cada pregunta, marcar algunas en las que tengas dudas para revisarlas posteriormente, y finalmente terminar con el cuestionario donde se mostrará el resultado obtenido. También puedes revisar las respuestas si haces clic en Comprobar las preguntas para que sepas las preguntas que respondiste correcta e incorrectamente, para que en caso de que te hayas equivocado sepas qué temas debes revisar.

Suerte!!


, ,

19 Comentarios

Cómo crear un ramdisk en Linux

ramdisk

Un ramdisk es como una partición de un disco pero que opera directamente sobre la RAM de sistema. Tiene como ventaja que los datos se leen y escribe más rápidamente justamente por estar en la RAM, pero tiene como desventaja que al reiniciar el equipo los datos en esa partición pueden desaparecer. Algunas distribuciones de Linux  usan este tipo de sistema de archivos para evitar matar el medio de almacenamiento, por ejemplo en vez de usar un sistema de archivo en una tarjeta SD se puede usar un ramdisk. Si necesitas crear una partición de este tipo aquí se explica cómo hacerlo

Creando la ramdisk con mount

Para crear un ramdisk en /tmp/ramdisk  escribe las siguientes órdenes:

# mkdir /tmp/ramdisk

# chmod 1777 /tmp/ramdisk

# mount -t tmpfs -o size=8G tmpfs /tmp/ramdisk/

 # df -h

 Filesystem Size Used Avail Use% Mounted on
 /dev/sda5 9.2G 533M 8.2G 6% /
 udev 7.9G 4.0K 7.9G 1% /dev
 tmpfs 3.2G 308K 3.2G 1% /run
 none 5.0M 0 5.0M 0% /run/lock
 none 7.9G 0 7.9G 0% /run/shm
 /dev/sda1 268M 50M 204M 20% /boot
 /dev/sda6 9.2G 552M 8.2G 7% /usr
 /dev/sda7 19G 172M 18G 1% /tmp
 /dev/sda9 490G 560M 464G 1% /var
 /dev/sda8 6.5G 143M 6.0G 3% /usr/local
 tmpfs 8.0G 0 8.0G 0% /tmp/ramdisk

Aquí puede verse que con la orden mount se puede crear el ramdisk especificando tmpfs como tipo de sistema de archivo, indicando el tamaño con la opción size y especificando el punto de montaje (el cual tiene todos los permisos habilitados para usuario, grupos y otros, así como el sticky bit activo).

Creando la ramdisk desde el /ect/fstab

Si quieres que los cambios sean permanentes debes crear una entrada en el /etc/fstab como se muestra a continuación:

# RAM diskramdisk
/tmp/ramdisk tmpfs mode=1777,size=8g

Aquí se especifica que el dispositivo es un ramdisk, cuyo punto d montaje es /tmp/ramdisk, que el tipo de sistema de archivos es tmpfs, con los  permisos habilitados para usuario, grupos y otros, así como el sticky bit activo, y la opción size determina el tamaño del ramdisk.

Referencias

No hay Comentarios

Cómo crear un paquete Debian en 3 pasos

 Debian pakage

Existen varias formas de crear un paquete Debian. En este artículo veremos cómo crearlo con las herramientas equivs, para la creación de un paquete sencillo (por ejemplo que se quiera empaquetar un binario). Sin preámbulos veamos el procedimiento:

Requisitos

Necesitaremos instalar previamente las herramientas que se usará, en particular:

aptitude install equivs

Procedimiento

A modo de ejemplo vamos a empaquetar unos scripts y una tarea programada en un archivo .deb. Estos son los pasos:

  1. Crear el archivo plantilla. Para ello usaremos la orden equivs-control, la cual genera un archivo base que luego podremos editar para quitar los comentarios en las opciones de interes. Para generar la plantilla usamos la siguiente orden:
$ equivs-control backups
  1. Editar la plantilla, que en este ejemplo se llama backups. Colocar los datos necesarios para la creación del paquete descomentando los campos que se necesiten editar:
### Commented entries have reasonable defaults.
### Uncomment to edit them.
# Source:
Section: miscD
Priority: optional
Homepage: www.lgallardo.com
Standards-Version: 3.9.2
Package: backups
Version: 1.1
Maintainer: Luis M. Gallardo D. <lgallard@gmail.com>
# Pre-Depends:
# Depends:
# Recommends:
# Suggests:
# Provides:
# Replaces:
Architecture: all
# Copyright:
# Changelog:
Readme: README.Debian
# Extra-Files:
Files: backup.sh /usr/local/bin/
 restore.sh /usr/local/bin/
 backups-cron /etc/cron.d/
Description: Backups scripts
 Scripts for backuping up files on Debian systems

Para este ejemplo se debe tener creados los archivos backup.sh, restore.sh, backups-cron y README.debian, este último para que no coloque el README genérico.

  1. Crear el paquete. Solo escribe la siguiente orden:
$equivs-build backups

Esto generará el paquete de nombre backups_1.1_all.deb.  Para consultar la información del mismo podemos ejecutar los siguiente:

$ dpkg -I backups_1.1_all.deb
 new debian package, version 2.0.
 size 2396 bytes: control archive=582 bytes.
 25 bytes, 1 lines conffiles 
 302 bytes, 12 lines control 
 322 bytes, 5 lines md5sums 
 Package: backups
 Version: 1.1
 Architecture: all
 Maintainer: Luis M. Gallardo D. <lgallard@gmail.com>
 Architecture: all
 Readme: README.debian
 Installed-Size: 42
 Section: misc
 Priority: optional
 Homepage: www.lgallardo.com
 Description: Backups scripts
 Scripts for backuping up files on Debian systems

¡Eso es todo, ya creaste tu primer paquete Debian!

,

3 Comentarios

Curso OpenLDAP

Open LDAP

Ya tenemos el contenido del curso que estaremos dando sobre OpenLDAP. Comparto por este medio la información para quienes estén interesado en el tema, o para que compartan con quienes crean les pueda interesar o ser útil. Aquí les dejo la información:

Curso OpenLDAP

Tema  1 : Servidor de Directorios y LDAP

  • Conceptos básicos de LDAP
  • ¿Qué es un Directorio?
  • Estructura de Directorios
  • Nombres  Únicos (UN),
  • Entradas LDAP
  • Estructura de árbol de directorios,
  • ¿Qué hacer con un servidor de LDAP?
  • Servidor, cliente, utilitarios, librerías, resumen.

Tema 2:  Instalación y configuración de LDAP

  • Comenzando a trabajar con LDAP
  • Programas de LDAP
  • Distribuciones de LDAP
  • dependencias, configurando el server de LDAP
  • directivas, módulos, configuración de base de datos
  • Listas de Control de Acceso (ACL’s), arrancado y deteniendo los servicios.

Tema  3:  Usando OpenLDAP

  • Servidor OpenLDAP
  • operaciones, búsquedas
  • cargando de datos la base de datos
  • usando el  archivo LDIF, anatomía del archivo LDIF
  • estructurando el directorio y las unidades organizacionales
  • adicionando registros de usuarios, sistemas, grupos.
  • Trabajando con el archivo LDIF,  slapindex,slapcat, slapacl, spaldn, slapatuh, slappasswd, configurando ldap.conf.

Tema  4: Protegiendo mi Servidor OpenLDAP

  • Usando SSL/TLS, autentificación, encriptación
  • usando certificados, clientes con tls
  • trabajar con certificados: generar, actualizar, usarlos.

Tema  5:  Configuración Avanzada de OpenLDAP

  • Archivo slapd.conf
  • Creando e importando directorios
  • Rendimiento
  • Archivo DB_CONFIG
  • Trabajo con los registros logs
  • Modificando registros.

Tema  6:  Esquemas de LDAP

  • Introducción a los Esquemas
  • Definición de esquemas,
  • Clases, objetos,
  • Tipos de Objetos: Abstractos, Estructurales y auxiliares.

Tema 7:  Multiples Ditrectorios

  • Replicaciones, Syncrepl
  • Servidores maestros, servidores espejos (Shadow)
  • Configurando Proxy LDAP
  • Entonando las Caches.

Tema  8:  OpenLdap y la Web

  • Aplicativo LDAP-Aware
  • Apache, módulos de autenficación de Apache
  • phpldapadmin
  • Parámetros, navegando, administrando  los registros con la herramienta web.

Más información en la página de Avalon.

,

4 Comentarios

Cómo crear el sistema de archivos en particiones grandes

Discos | Hard drives

Algunas veces en los discos se presentan  inconsistencias entre el el tamaño, el valor usado y el espacio disponible. El problema ocurre cuando el sistema operativo dice algo distinto de lo que uno esperaría lógicamente. Por ejemplo:

# df -h | grep data

Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 788G 726G 23G 98% /var/data

Si sacamos la cuenta debería ser  788 GB – 726 GB = 62 GB…pero df (osea Linux) reporta que hay disponibles 23 GB. ¿Dónde están los otros 39 GB?

El asunto está en el espacio disponible. ¿Disponible para quién? Pues para el sistema operativo, usuarios, etc. Pero resulta que cuando se crea el sistema de archivos en ext2, ext3, etx4, por omisión se reserva un 5% de espacio en el disco para evitar que el sistema colapse, por ejemplo por bitácoras o base de datos haciendo que el mismo sea inoperante, y de forma root pueda usarlo para rescatarlo. Entonces, verificando el tamaño de esa partición vemos que el 5% de 788 GB es 39.5 GB. Allí está la diferencia.

Ahora, cómo podemos recuperar o aprovechar esos GB adicionales, ya que si se usa para una partición de datos pierde el sentido eso de guardar 5% para que el sistema operativo funcione correctamente, ya que en todo caso eso aplicaría para la partición destinada a la raíz /o a /var. Hay dos formas:

  1. Al momento de crear el sistema de archivo de las particiones puede usarse la opción -m con la orden mkfs.ext[2,3,4]. Ejemplo:
    mkfs.ext3 -m 0 /dev/sdb1
  2. Si el sistema de archivos ya fue creado, se puede usar la misma opción -m pero con la orden tune2fs. Pero aquí es importante primero desmontar la partición previamente para evitar posibles pérdidas o inconsistencia de datos. Ejemplo:
# umount /var/data

# tune2fs -m 0 /dev/sdb1

tune2fs 1.41.12 (17-May-2010)
Setting reserved blocks percentage to 0% (0 blocks)

# mount /var/data

Luego volvemos a consultar el espacio disponible:

# df -h | grep data

Filesystem Size Used Avail Use% Mounted o

/dev/sdb1 788G 726G 63G 93% /var/data

Ahora las cuentas si dan…por cierto, y cómo podríamos saber el espacio reservado sin usar df? Existen dos formas:

  1. Usando dumpe2fs:
    # dumpe2fs -h /dev/sdb1 | grep Reserved
    
    dumpe2fs 1.41.12 (17-May-2010)
    Reserved block count: 0
  2. Usando  tune2fs:
    # tune2fs -l /dev/sdb1 | grep Reserved Reserved block count: 0

No hay Comentarios

Daemontools o cómo relanzar un proceso si muere

building-24220_150

Quizás te ha pasado que un proceso (programa o servicio) en el sistema muere o termina abruptamente y necesitas relanzarlo sin importar qué pase. Podrías tratar de monitorear el proceso cada cierto tiempo y reiniciarlo si no es encontrado pero esto puede ser algo complicado porque tendrías que hacer una tarea con cron para verificar la existencia del proceso, filtrarlo, etc. Y si hubiese una forma de relanzar el proceso si este muere?…Si hay una forma, y se llama daemontools el cual básicamente escanea el proceso y lo relanza si este muere.

Aquí explicaré como instalar y configurar en Linux.

Instalación de  daemontools

En Debian puedes instalar daemontools como root escribiendo esto:

root@raspberrypi: # aptitude install daemontools-run daemontools

Para distribuciones derivadas de Debian como Ubuntu debería ser lo mismo. En Red Hat y similares deben chequear el nombre del paquete para esta herramienta.

Primera ejecución

Al momento de instalar el paquete se crean una llamada a /usr/bin/svscanboot (puedes verlo en archivo /etc/init/svscan.conf) que se ejecutará al reiniciar el sistema. Si no quieres reiniciar el sistema puedes ejecutar svscanboot manualmente:

nohup /usr/bin/svscanboot &

Configurando daemontools

Debes crear un directorio para el servicio (programa) a monitorear. En este ejemplo usaré  qbittorrent-nox, un cliente de bittorrent que corre en el segundo plano (nox = no para ambiente X):

root@raspberrypi:~# mkdir /etc/service/qbittorrent-nox

Luego tienes que escribir un script que inicie el proceso. Debe llamarse “run“. Utiliza tu editor de texto preferido, por ejemplo vi:

root@raspberrypi:~# vi /etc/service/qbittorrent-nox/run

Añade la llamada al programa. En este caso quería lanzar qbitorrent-nox como el usuario pi, así que lo invoqué con sudo:

#!/bin/sh

sudo -u pi qbittorrent-nox

Por último cambia la permisología para hacerlo ejecutable:

root@raspberrypi:~# chmod +x /etc/service/qbittorrent-nox/run

Verificando el proceso con ps

Puedes verificar si el proceso está corriendo usando la orden ps y filtrando la salida con grep:

root@raspberrypi:~# ps ax | grep qbit

3064 ? S 0:00 supervise qbittorrent-nox
3068 ? S 0:00 sudo -u pi qbittorrent-nox

3080 ? Sl 13:09 qbittorrent-nox

9926 pts/0 S+ 0:00 grep qbit

Pero hay una mejor forma de verificar si el proceso está corriendo usando daemontools. Por cierto, como su nombre lo indica en inglés, daemon-tools quiere significa herramientas para el manejo de demonios (programas o servicios).

Verificando el proceso con daemontools

Si quieres verificar si el proceso está corriendo y dede hace cuánto ha estado arriba, usa la orden svtat pasándole el directorio de servicio, como muestro a continuación:

root@raspberrypi:~# svstat /etc/service/qbittorrent-nox
 /etc/service/qbittorrent-nox: up (pid 3066) 205846 seconds

En este caso, my proceso bittorrent-nox (programa/servicio) ha estado corriendo casi por dos días y medio

Detener el escaneo

Si necesitas detener el escaneo del proceso, por ejemplo si necesitas detenerlo por unos instantes para hacer cambios a la configuración, usa la orden svc: con las siguiente opción

root@raspberrypi:~# svc -d /etc/service/qbittorrent-nox

Despues de esto cheque auna vez más:

root@raspberrypi:~# svstat /etc/service/qbittorrent-nox
 /etc/service/qbittorrent-nox: down 2 seconds, normally up

Ahora el proceso no será verificado para ser relanzado si se detiene o muere.

Reiniciando el escaneo

Para iniciar nuevamente el escaneo, usa la orden svc como sigue:

root@raspberrypi:~# svc -u /etc/service/qbittorrent-nox

Una vez más verifica si está correindo con svstat:

root@raspberrypi:~# svstat /etc/service/qbittorrent-nox
 /etc/service/qbittorrent-nox: up (pid 12805) 1 seconds

Referencia: daemontoolsl

No hay Comentarios