December 07, 2017

Arrancar una iso desde grub

Tengo un servidor que tiene instalado debian, pero quiero instalar el sistema operativo en uno de los RAID que he creado en la controladora, para tener el sistema operativo ahí en lugar del disco duro IDE.
El servidor no me arranca ni los pinchos usb ni tampoco un cd con una lectora de CDs externa y no puedo instalar el sistema operativo directamente a los discos que están en el RAID, así que sólo me queda arrancar el cd de instalación desde grub.

Para ello vamos a editar el fichero /etc/grub/40_custom

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "debian" {
set isofile="/home/blackhold/firmware-9.2.1-amd64-i386-netinst.iso"
loopback loop (hd0,1)$isofile
echo "Starting $isofile..."
linux (loop)/install.386/vmlinuz
initrd (loop)/install.386/initrd.gz
}

La iso de instalación la tengo almacenada en /home/blackhold. Para mas información de como configurar el grub para otras distribuciones de linux seguid éste link y éste otro.

Y cargamos la configuración a grub

# update-grub

Reiniciamos y nos aparece la opción debian, entramos en ella y ya tendremos nuestra instalación :) para continuar con ella, deberemos tener la lectora de CDs conectada.

En ésta última captura voy a instalar en el RAID el sistema operativo nuevo y voy a dejar el otro indicandole no hacer nada con esta partición, de esta forma siempre voy a tener disponible un sistema operativo en local para hacer la instalación.

Ésto nos podría ser muy útil para reinstalar sistemas preconfigurados y hacer instalaciones OEM. Me queda pendiente hacer un post de como hacer una livecd tuneada.

December 06, 2017

Nextant: Indexador de ficheros de nextcloud

Una vez instalado Nextcloud vemos que la interfaz cambia un poco además de que tenemos un montón de aplicaciones disponibles que no teníamos con owncloud.

En antaño había instalado una aplicación para indexar el contenido que hay dentro de los ficheros almacenados en el cloud, pero a partir de alguna de las actualizaciones de owncloud dejó de funcionar, traté de identificar el bug y solucionarlo, pero la cosa se quedó al aire y fuera de mis capacidades, así que simplemente desactivé dicha aplicación. Ahora con Nextcloud vuelve a aparecer una herramienta, basada en solr/java para indexar el contenido de los ficheros. El solr es un viejo conocido (monstruo) en Alfresco, así que vamos a ver como trabaja en la instancia de cloud que tengo en funcionamiento, mucho mas cargada de ficheros y documentación que la que tenía inicialmente en Alfresco… también los años van pasando…

Vamos a ver pues como instalar Nextant

Solr
Primero tendremos que instalar solr como servicio, para ello tendremos que instalar primero java y después solr.

Mi primera pregunta, ¿cuál java? ¿el SE, JRE, JDK? el JDK.

Lo guardamos en /opt por ejemplo y lo descomprimimos, a continuación creamos un link simbólico en alguno de los directorios de ejecución (mirar printenv para ver cuales son)

# cd /opt
# tar xvzf jdk-9.0.1_linux-x64_bin.tar.gz
# cd /usr/local/bin
# ln -s /opt/jdk-9.0.1/bin/java .

Comprobamos que java nos aparece como un programa escribiendo directamente en la terminal java –version

# java --version
java 9.0.1
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

Siguiente paso descargar solr también en opt e instalarlo. Importante, nextant sólo es compatible con solr6, así que en ésta url encontraremos todas las versiones disponibles de solr.

# cd /opt
# wget -c http://archive.apache.org/dist/lucene/solr/6.6.2/solr-6.6.2.tgz
# tar xvzf solr-6.6.2.tgz
# cd solr-6.6.2/bin
# ./solr-6.6.2/bin/install_solr_service.sh solr-6.6.2.tgz

Nos fijamos si nos suelta algún error y si es que si, miramos de solucionarlo.

Ahora vamos a securizar solr, en principio el solr sólo lo va a usar nextcloud, así que sólo le dejaremos a nextcloud acceder a solr, para ello modificamos el fichero /opt/solr/server/etc/jetty-http.xml y cambiamos el contenido de la línea 36.

# vi /opt/solr/server/etc/jetty-http.xml
  Set name="host" >  Property name="jetty.host" 
POR
  Set name="host" >  Property name="jetty.host" default="127.0.0.1" 

Y reiniciamos solr

# service solr restart

Y lo último de solr es generar el core para nextant

# su - solr
$ /opt/solr/bin/solr create -c nextant

Nexant

Ahora vamos a activar la aplicación nextant desde el panel de administración de aplicaciones de nextcloud o directamente por terminal

# su - www-data
$ cd /var/www/nextcloud/
$ ./occ app:enable nextant
nextant enabled

Y ejecutamos la indexación de los ficheros

$ ./occ nextant:index

Es posible que nos diga

$ ./occ nextant:index
nextant v1.0.8
Nextant is not yet configured

En éste caso, tendremos que ir a nextcloud y verificar la configuración en configuración > configuración adicional > abajo del todo. Es muy intuitivo, no necesita mas explicación ;)

Cuando está funcionando volvemos a ejecutar el index.

En mi instancia algunos usuarios tienen muchos ficheros (demasiados según mi entender, pero bueno... usuarios...) y he tenido que modificar un poco nextant indicándole por ejemplo que no indexe los ficheros .eml, ni los ficheros mas grandes de 30Mb, además de aumentar el tiempo de timeout, todo en la interfaz web. Aún así me encontraba que se me paraba el nextant porque solr se quedaba sin memoria, así que he tenido que modificar el fichero /etc/default/solr.in.sh y aumentar la RAM

 (00:02:47) [standby]    Solr memory: 168.8 MB (%34.4)       

Error #21
Is Solr Up and Running ?
# vi /etc/default/solr.in.sh
SOLR_HEAP="4096m"

Y reiniciar solr.

En algunos momentos es posible que nos interese que los ficheros de algun directorio no sean indexados, para que no se indexen, en la raíz del directorio que no queremos indexar, añadiremos un fichero llamado .noindex sin ningún contenido y listos! :) más info.

Instalar software controladora 3ware serie 9000

Cuando queremos configurar el RAID de un servidor normalmente lo hacemos al arrancar el sistema, pero esto no nos permite saber remotamente si el RAID está correcto o no desde el propio sistema operativo, para ello, es posible instalar un software que se comunique con la controladora y permita realizar acciones con la misma desde terminal.

En mi caso tengo un servidor con dos controladoras raid 3ware serie 9000

# lspci |grep 3ware
00:01.0 RAID bus controller: 3ware Inc 9xxx-series SATA-RAID
00:03.0 RAID bus controller: 3ware Inc 9xxx-series SATA-RAID

El paquete que tendremos que instalar se llama tw-cli, y tendremos que añadir repositorios adicionales para poder instalarlo. hwraid contiene otro software de otras controladoras RAID

# vi /etc/apt/sources.list
# software controladora raid
deb http://hwraid.le-vert.net/debian stretch main

# wget -O - https://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key | apt-key add -
# apt-get update
# apt-get install tw-cli

En ésta página web encontramos información addicional y de funcionamiento sobre tw-cli

Algunos de los comandos básicos son:

Ver las controladoras disponibles

# tw-cli info

Ctl   Model        (V)Ports  Drives   Units   NotOpt  RRate   VRate  BBU
------------------------------------------------------------------------
c0    9500S-8      8         8        1       0       1       1      -        
c1    9500S-8      8         7        1       0       1       1      -  

Listar los discos disponibles en una controladora

# tw-cli /c1 show

Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
------------------------------------------------------------------------------
u0    RAID-5    OK             -       -       64K     11175.8   ON     OFF    

Port   Status           Unit   Size        Blocks        Serial
---------------------------------------------------------------
p0     OK               u0     1.82 TB     3907029168    9WM7VLRJ            
p1     OK               u0     1.82 TB     3907029168    9WM69H87            
p2     OK               u0     1.82 TB     3907029168    9WM7E4QW            
p3     OK               u0     1.82 TB     3907029168    9WM7LBR1            
p4     OK               u0     1.82 TB     3907029168    9WM6HXM5            
p5     OK               u0     1.82 TB     3907029168    9WM7KB2B            
p6     OK               u0     1.82 TB     3907029168    9WM739Y2            
p7     NOT-PRESENT      -      -           -             -

En éste PDF podemos encontrar todos los comandos disponibles

Otro software importante a instalar es 3ware-status

# apt-get install 3ware-status

Que te muestra el estado de las controladoras

# 3ware-status 
-- Controller informations --
-- ID | Model
c0 | 9500S-8
c1 | 9500S-8

-- Arrays informations --
-- ID	Type	Size	Status
c0u0	RAID5	4889G	OK
c1u0	RAID5	11175G	OK

-- Disks informations
-- ID	Model			Status
c0u0p0	ST3750640AS	OK
c0u0p1	ST3750640NS	OK
c0u0p2	ST3750640NS	OK
c0u0p3	ST3750640NS	OK
c0u0p4	ST3750640NS	OK
c0u0p5	ST3750640AS	OK
c0u0p6	ST31000528AS	OK
c0u0p7	ST3750640NS	OK
c1u0p0	ST32000641AS	OK
c1u0p1	ST32000641AS	OK
c1u0p2	ST32000641AS	OK
c1u0p3	ST32000641AS	OK
c1u0p4	ST32000641AS	OK
c1u0p5	ST32000641AS	OK
c1u0p6	ST32000641AS	OK

Y otro es 3dm2 que básicamente es una interfaz web que te permite hacer lo mismo que tw-cli

# apt-get install 3dm2

https://localhost:888

Si queremos acceder a 3dm2 remotamente tendremos que cambiar la configuración en /etc/3dm2/3dm2.conf en éste mismo fichero encontramos el password de administrador y de usuario, además de otras configuraciones.
Nota: he activado remote access y me dice que nanai, así que la opción será acceder mediante un proxyhttp o un tunel ssh.

Más información

December 05, 2017

Migrar de owncloud a nextcloud

Nextcloud es el fork que se hizo de Owncloud cuando éste empezó a ofrecer un servicio premium y aplicaciones de pago. Para ello la comunidad decidió pasarse a Nextcloud, manteniendo las actualizaciones y funcionalidad de y con Owncloud.

Hace ya un par de años instalé Owncloud en un servidor que lo he ido actualizando de vez en cuando, hace unas semanas decidí pasar de Owncloud a Nextcloud, así que lo actualicé a la versión 10.0.3 para previamente pasarlo a Nextcloud pero me encontré que la versión 12.0.3 de Nexcloud aún no estaba preparada para migrar desde Owncloud 10.0.3. Así que tuve que esperar hasta la release de la versión 12.0.4 de Nextcloud ayer mismo :)

Lo primero será realizar una copia de seguridad de los ficheros y de la base de datos. Una recomendación que hago que se realice automáticamente a diario.

Mi instancia de owncloud la tengo instalada en /var/www y tengo separados los ficheros en 2 directorios, owncloud que es donde se almacena el software del programa y ownclouddata que es donde se almacenan los ficheros de los usuarios, además tengo un script que hace un dump de la base de datos.

Nos posicionaremos pues en el directorio superior de donde tenemos owncloud y descargaremos la última versión de nextcloud

# cd /var/www
# wget -c --no-check-certificate https://download.nextcloud.com/server/releases/nextcloud-12.0.4.zip
# unzip nextcloud-12.0.4.zip

Copiaremos el fichero de configuración de owncloud a nextcloud

# cp owncloud/config/config.php nextcloud/config/

Tendremos que cambiar el directorio por defecto de trabajo del servidor web (apache en mi caso) a la nueva ubicación y reiniciar el servidor web.

cambiar /var/www/owncloud por /var/www/nextcloud
# service apache2 restart

Ahora bajaremos los permisos al usuario www-data, daremos permisos de ejecución al fichero occ y haremos el upgrade desde la consola. Para poder acceder como www-data, tendremos que modificar la entrada en /etc/passwd y decirle /bin/bash al final de la línea del usuario, esto es un agujero de seguridad porque si algún malechor llega a poder abrir una terminal en nuestro servidor podría llegar a crear algún estrago, así que recomiendo volver a ponerla a /bin/false una vez hayamos terminado las tareas de administración. occ no nos dejará ejecutarlo como root.

# su - www-data
$ cd /var/www/nextcloud
$ chmod +x occ
$ ./occ upgrade

Es posible que nos indique que se tienen que deshabilitar algunas aplicaciones, así que simplemente ejecutaremos los comandos que nos indica en pantalla. Finalmente, si nos ha parado la actualización por este motivo, nos encontraremos que nos habrá habilitado el modo de mantenimiento. Para deshabilitarlo ejecutaremos ésto:

$ ./occ maintenance:mode --off

Y si todo ha sido correcto, ya tendremos nextcloud instalado en nuestro servidor! :)

December 01, 2017

Clonar un disco con errores

Cuando los sistemas funcionan a diario es normal que con el tiempo los discos empiezan a dar errores, para ello tenemos a un buen aliado que se llama S.M.A.R.T. que nos avisa cuando la salud de un disco duro no es buena y cuando empiezan a salir errores, la recomendación es parar el disco y reemplazarlo.

Esta vez el disco que tengo tiene las configuraciones enteras de un sistema operativo y reinstalar y reconstruir el sistema operativo desde 0 sería mucho trabajo, así que la opción por la que he optado es clonar el disco duro a otro disco duro que no tiene errores (comprobado con badblocks!).

Al hacer el dd se me ha cortado a medio proceso porque se ha encontrado con la parte del disco defectuosa, así que he tenido que añadir un par de opciones para omitir los errores y seguir con el clonado:

# dd if=/dev/sda |pv |dd of=/dev/sdb conv=noerror,sync

El disco duro que estoy tratando de recuperar, realmente tiene varios sectores defectuosos que con dd no hay forma de clonar, así que he tenido que usar otra herramienta gddrescue

# apt-get install gddrescue
# ddrescue -d -r3 /dev/sda /dev/sdb clonacion.log

Con el -d le decimos a ddrescue que haga un acceso directo al disco e ignore el cache del kernel (clonación bit a bit)
Con el -r3 le indicamos que pruebe hasta 3 veces la lectura de los sectores defectuosos

Después de un buen rato finalmente el disco ha sido clonado con éxito y el sistema arranca :) recomiendo activar el retry porque con un poco de suerte va a poder recuperar los sectores defectuosos, en el disco que estaba clonando había 19 sectores defectuosos y finalmente ha podido salvar algunos. En este caso eran pocos sectores, pero en el caso que haya un fallo mayor, cuantos menos sectores se puedan recuperar, mas pérdida de datos habrá.