Tag Archive | Avanzado

OpenERP 7 en Docker con jasper report y python 2.7 cuando pip ya no anda más


Estas notas son para contar la aventura LOCA de montar un servidor viejo de OpenERP 7 en el año 2023. (funciono perfecto en un server por 10 años)

Primero hay que decir que esta versión anda en python 2.7 que hoy ya se dejo de ser soportardo y tiene problemas con instalación de librerías con pip necesarias. ¡ uuuuuuuuu !… si, primer luz roja.

Por esta razón decidí usar la versión docker del servidor (que ya sabemos que anda) y desde ahí montar el código fuente. (no se hasta cuando va a funcionar o se va a encontrar… trabajito extra: hacer copia por las dudas que desaparezca)

También quiero poder modificar el código así que necesito instalar el fuente o que ande el fuente en el docker de alguna forma.

En su momento usé JasperReport para la generación de reportes. Se instalaba un server de reportes (creo que usaba apache y tomcat server)….uffffff!

Debe ser por estas cosas que se privilegia actualizar la versión ANTES de hacer las modificaciones.

Logre generar un banco de trabajo con Docker y poder hacer modificaciones, incluso modificar codigo andando… asi que es posible.

Lo bueno de utilizar docker es que es replicable y estable.

Ahora empieza la aventura de importar los datos y actualizar versiones.

Si te sirvió este apunte y quieres invitarme un café o una refrezco puede hacerlo pulsa AQUI.
Si en cambio quieres ayudarme a seguir haciendo y juntando apuntes utiles pulsa AQUI.

Configurar un redireccionamiento dinamico de dns (DynamicDNS) en Ubuntu 16.04 18.04 con ddclient


Asumo que ya sabe lo que es un redireccionamiento dinamico de dns y que tiene una cuenta en algun servidor ya funcionando y tiene 4 datos a mano… usuario, pass, su dominio dinamico y el lugar donde alctualizara sus datos. Suponemos un dominio gratuito en NoIP. Tampoco entraremos en profundidad solo lo haremos funcionar.

$ sudo apt install ddclient

Si quiere puede seguir el wizard de configuracion que ya trae el programa por default donde le pedira que configore sus datos de ingreso pero nosotros lo haremos a mano asi que TODO ENTER hasta que se cierre.

$ sudo nano /etc/ddclient.conf

use=web
ssl=yes
protocol=noip
login="USERNAME"
password="PASSWORD"
"YOUR_HOSTNAME"

NOTA: en este caso que usamos NoIP no necesitamos poner el servidor pero en cualquier otro si.

Si tiene otro servidor puede usar el protocol=dyndns2 en conjunto con

protocol=dyndns2
server=members.dyndns.org
web=checkip.dyndns.com/
web-skip='Current IP Address: '

Prueba tu configuración

$ sudo ddclient -daemon=0 -debug -verbose -noquiet

Ahora configuramos el servicio

$ echo 'run_daemon="true"' | sudo tee -a /etc/default/ddclient
$ sudo service ddclient restart
$ journalctl -u ddclient.service
...
systemd[1]: Started LSB: Update dynamic domain name service entries.
ddclient[24631]: SUCCESS:  updating MY_HOST.redirectme.net: good: IP address set to 118.X.Y.Z

NOTA: Ctrl-Z para salir del comando anterior

Si en algun momento te da error relacionado con el cache puedes resolverlo así:

$ sudo rm /var/cache/ddclient/ddclient.cache
$ sudo service ddclient restart

Si te sirvió este apunte y quieres invitarme una café, gaseosa o agua, puede hacerlo pulsa AQUI.
Si en cambio quieres ayudarme a seguir haciendo y juntando apuntes utiles pulsa AQUI.

Weblografía

Configurar el email (correo electrónico) del servidor UBUNTU 18.04 para que nos notifique via el servidor de correo de GMAIL


En este articulo NO profundizaremos solo lo haremos funcionar.

$ sudo apt-get install ssmtp
$ sudo pico /etc/ssmtp/ssmtp.conf 

root=username@gmail.com
mailhub=smtp.gmail.com:587
rewriteDomain=
hostname=fileserver.local
UseSTARTTLS=YES
AuthUser=username
AuthPass=password
FromLineOverride=YES

NOTA: cambiar username@gmail.com por el que corresponda

ahora creamos la lista de destinatarios

$ sudo pico /etc/ssmtp/revaliases

root:username@gmail.com:smtp.gmail.com:587
youruser:username@gmail.com:smtp.gmail.com:587

NOTA: cambiar username@gmail.com por el que corresponda y youruser por su usuario correspondiente

 

Si te sirvió este apunte y quieres invitarme una gaseosa puede hacerlo pulsa AQUI.
Si en cambio quieres ayudarme a seguir haciendo y juntando apuntes utiles pulsa AQUI.

Crear un RAID1 de una partición BTRFS con datos y una nueva en Ubuntu 18.04


De tan sencillo, complica. Este articulo lo hago para recordar y ayudar a aquellos -que como yo- perdieron un buen rato de su vida por algo simple.

Partimos teniendo un disco andando y ahora agrego otro para hacer una partición BTRFS en espejo en RAID1. En mi caso es el /home que está en sdb6. El disco que agrego tiene una particion del mismo tamaño en sda6.

Un requisito indispensable es que tengan el UUID de disco distintos. Los vemos haciendo:

$ sudo blkid
...
/dev/sda6: UUID="e12c98df-7c8e-4f50-be39-e208597f71a7"
.....
/dev/sdb6: UUID="e12c98df-7c8e-4f50-be39-e208597f71a7"

Nota: Si hace copia de las particiones al disco nuevo, el UUID quedaran iguales en las dos y el sistema puede volver inestable.

Si queremos cambiarlo, primero generamos uno nuevo:

$ sudo uuidgen
a6a1fc9a-48e5-4cff-82b9-04f0afa925e3

y ahora se lo asignamos a la particion que necesitamos cambiarle… en mi caso la sda6

$ sudo tune2fs -U a6a1fc9a-48e5-4cff-82b9-04f0afa925e3 /dev/sda6

Mi disco con datos (sdb6) está montado en el /home y es un disco con tabla de partición BTRFS al que le puedo agregar discos nuevos «en caliente», haciendo

$ sudo btrfs device add -f /dev/sda6 /home

Nota: el -f es forzar para que si hay datos viejos en la particion nueva la sobreescriba

Pero esto solo agrega mas espacio a esa carpeta y yo quiero que esa partición sea en raid1… entonces ahora convierto ese «arreglo» de discos en raid1

$ sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /home

Esto tarda un rato y terminado, ya estará listo. Podemos ver su estado haciendo

$ sudo btrfs fi show

Si te sirvió este apunte y quieres invitarme una gaseosa puede hacerlo pulsa AQUI.
Si en cambio quieres ayudarme a seguir haciendo y juntando apuntes utiles pulsa AQUI.

Cómo aumentar la velocidad de impresión 3D FDM


Uno de los principales parámetros que afecta directamente al acabado de las piezas realizadas con impresoras 3D FDM (Impresión por deposición de material fundido) es la velocidad de impresión. El acabado es inversamente proporcional al tiempo de impresión.

La velocidad de impresión se mide en mm/s y ésta afecta directamente a la temperatura de la extrusión debido a que cuanto mayor sea la velocidad de impresión, mayor temperatura de extrusión necesitaremos.

Todos los fabricantes de filamentos facilitan un rango de temperaturas entre las cuáles su impresión es óptima. Normalmente esta temperatura ideal se debe ir ajustando mediante pruebas hasta obtener el mejor acabado y adherencia porque puede variar significativamente en función de que extrusor utilicemos. Por ejemplo, según la ubicación física y el estado de la sonda de medición de temperatura en el extrusor puede hacer que variar significativamente la medición en nuestra impresora respecto a la del fabricante o a una igual en un ámbito diferente.

Si no somos capaces de encontrar la temperatura óptima de impresión aparecerán problemas de impresión. Por ejemplo, si la temperatura de extrusión es muy baja, el filamento no fluirá correctamente por lo que pueden quedar huecos entre capas e incluso hacer que se separen las capas. Si además aumentamos excesivamente la temperatura, el plástico dejará puntos huecos en la pieza.

A mayor velocidad es mayor la presión en la boquilla y también mayor es la compresión del filamento. El filamento ABS tiene un menor coeficiente de fricción que el PLA por lo que este último, requiere de menos fuerza para ser extruído. Si la presión es excesiva pueden surgir problemas en la tracción del filamento, taponamientos y hasta roturas físicas en la impresora.

Además debemos tener en cuenta que si el color del filamento es más oscuro necesitará más temperatura de extrusión debido a los propios aditivos de coloración del filamento. En función del color del filamento puede llegar a variar la temperatura hasta +- 5 ºC imprimiendo a la misma velocidad.

En las gráficas se puede apreciar la tendencia de cómo varía la temperatura de extrusión en función de la velocidad de impresión aunque, cómo he comentado, puede variar.

Temperatura-impresión-PLATemperatura-impresión-ABS

Si te sirvió este apunte y quieres invitarme una gaseosa puede hacerlo pulsa AQUI.
Si en cambio quieres ayudarme a continuar a hacer y juntar más apuntes utiles: pulsa AQUI.

UBUNTU Cambiar acción al pulsar el botón de power (power button action)


(probado en ubuntu de la version 10.04 a la 16.04)

Tengo un servidor y quiero que al pulsar el boton de power, se apague correctamente (u otra acc.

Hay varias formas para hacerlo. A mi me gusta la que me permite mayor control que es: 1) Cambiar la accion  ó  2) editar el script de accion … entonces:

1) Editamos la propia accion

$ sudo -H gedit /etc/acpi/events/powerbtn

Agregarle # a la linea action asi

 #action=/etc/acpi/powerbtn.sh

y escribir un nuevo action asi

 action=/sbin/poweroff 

Guardar el archivo y desde terminal hacer

 sudo acpid restart 

2) Editamos el script

$ sudo -H gedit /etc/acpi/powerbtn.sh 

Agregmos al inicio de todo :

#!/bin/sh
# /etc/acpi/powerbtn.sh
# Initiates a shutdown when the power putton has been
# pressed.

/sbin/shutdown -h now "Power button pressed"
exit 0

Con esto, pulsando el boton de power desde cualquier perspectiva, la pc, se apagara correctamente.

Happy Hacking!

Cambiar disco rigido en un RAID 1 de Ubuntu 14.04


Tengo un array de discos del tipo RAID 1 hecho por soft llamado md0 y necesito cambiar el disco físico «sdb»:

  1. Hay que marcar el disco que quiero retirar como MALO, de esta manera:
    $ sudo mdadm /dev/md0 --fail /dev/sdb1
  2. Le decimos que vamos a retirar el disco, de esta manera:
    $ sudo mdadm --remove /dev/md0 /dev/sdb1
  3. Apagamos y cambiamos el disco roto
    $ sudo shutdown -h now
  4. Copiando el formato de particiones que tiene el que nos quedo, porque deben ser iguales, así:

ATENCIÓN: Preste especial atención a este comando porque si se equivoca puede borrar todo

     $ sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdb

5. Añadimos el nuevo disco al array y comienza el trabajo de reconstrucción

     $ sudo mdadm --add /dev/md0 /dev/sdb1

Para ver como se reconstruye hacer:

     $ sudo watch cat /proc/mdstat

Para saber cual es el estado del RAID hacer:

      $ sudo mdadm --detail /dev/md0

Ahora hay que arreglar el boot:

  • Install boot-repair sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update sudo apt-get install -y boot-repair && boot-repair
  • Using advanced options in boot-repair I was able to select /dev/md1 as my operating system (this is the RAID where my ubuntu was installed earlier)
  • Reboot and select Ubuntu on RAID 1

 

Ahora puedes ayudarme a continuar para hacer y juntar apuntes utiles: Pulsa AQUI para dar una DONACION simple.

Espero que les ayude… un poco mas!

Navegar seguro desde cualquier lado haciendo SSH Tunneling (tunel por ssh) a nuestra máquina linux en casa


La idea principal de este post es hacer un tunel por ssh para que me pueda conectar a mi casa, con una conexion encriptada y desde ahí navegar para que no me puedan robar claves, ni ver lo que estoy haciendo. Con este método podría conectarme desde cualquier wifi y comprar en linea, conectarme por messenger despreocupándome de que me estén espiando. Incluso puedes compartirlo de forma segura con tu familia y amigos para que usen tu maquina como auxiliar protector.

Tener en cuenta que esto lo hago en una pc con Ubuntu 12.04 con buenos recursos.

Tenemos que hacer varias cosas. La lista sería:

1) Montar un servidor ssh en casa.
2) Crear un proxy en nuestro servidor.
3) Crear usuario de sistema.
4) Configurar el servidor adecuadamente para que el usuario entre y use el tunel
5) Configurar el navegador (o cualquier programa) para que nos conectemos adecuadamente a internet.

A las armas:

1) Acá hay una explicación de como hacerlo.

2) Acá hay una explicación de como hacerlo.

3) Gracias a un nachopro pude darme cuenta como hacer para que un usuario declarado en nuestro sistema no pueda acceder como usuario y sin embargo, si poder hacer un tunel:

Primero como root creé el archivo /bin/sshlogin:

$ sudo pico /bin/sshlogin

Segundo, le puse lo siguiente:

#!/bin/bash
echo ''
echo ''
echo 'Bienvenido al Túnel SSH, navegue tranquilo ;)'
echo 'Para cerrar la conexión presione Enter'
read

Tercero le di permiso de ejecución:

$ sudo chmod +x /bin/sshlogin

Ahora hay que editar el archivo /etc/passwd y al usuario que querramos asignarle este login le sustituimos su /bin/bash por /bin/sshlogin

Con esto podemos usar dicho usuario para crear SSH Tunneling y compartirlo entre amigos para que usen en conexiones WiFi públicas sin temor a que lean archivos de nuestro sistema.

4) Acá hay una explicación de como hacerlo.

Espero que les sirva. Yo no sabia como podía hacerse hasta que el saber colectivo me lo fue enseñando. Esto solo es un compendio de cosas leídas y algunas experiencias.

Buena Vida!… Happy Haking.

SSH sin clave con puerto distindo de 22


Si nos conectamos seguido a una maquina remota por puerto ssh, es cómodo «decirle» al servidor que esta maquina es «segura», que el usuario es el autorizado para acceder a ese servidor, y que además, no es necesario que me pida contraseña.

Esta operación hay que hacerla por usuario y se conectara con la cuenta de un usuario concreto, por lo que habrá que repetirla para tantos usuarios de origen y destino se quiera.

Llamaré cliente al que inicia la conexión y servidor al que la recibe por el puerto 4300:

Pasos en el cliente:

$ ssh-keygen -t rsa
$ scp -P 4300 $HOME/.ssh/id_rsa.pub usuario_destino@servidor:

Pasos en el servidor:

$ cat id_rsa.pub >> $HOME/.ssh/authorized_keys && rm id_rsa.pub && chmod 0600 $HOME/.ssh/authorized_keys

Con estos pasos ya podremos conectar desde el cliente al servidor sin que nos pida contraseña:

$ ssh -p 4300 usuario_destino@servidor

Nota: Hay mas algoritmos para firmar, además de rsa, por ejemplo dsa. Ésto solo son formas de cifrar y aunque dsa es mas rápido generando la firma, rsa es mas rápido verificándola.

Ahora puedes ayudarme a continuar para hacer y juntar apuntes utiles: Pulsa AQUI para dar una DONACION simple.

fuente: Acá

Otros enlaces interesantes:
Claves DSA para conectarse por ssh sin contraseña

Crear RAID 1 por soft en PC GNU-linux con sistema montado y con datos en Kubuntu 11.04


ATENCIÓN: Este articulo es un relato de mi propia experiencia en mi maquina. Si lo intentas, antes créate un respaldo aunque si prestas atención y lees los manuales, no sería necesario. Solo vos sos el responsable de lo que hagas con tu información.

Tenia una computadora montada con Kubuntu 11.04 (sin actualizaciones) y la idea era poner un disco adicional para asegurar que si se rompe alguno se mantenga la integridad de la información y la del sistema. También quiero que en caso de que alguno disco se rompa o degrade, me mande un correo avisando esta situación.

Cabe la aclaración que como partimos de un sistema andando, es «teóricamente» valido también para el caso de que tengamos Linux y Window$ conviviendo en la misma maquina, aunque no tengo experiencia en este tipo de configuración con RAID.

Un resumen de lo que vamos a hacer es:

  1. Preliminares
  2. Preparación
  3. Particionando el disco nuevo /dev/sdb
  4. Creamos nuestro RAID
  5. Ajustando el nuevo RAID
  6. Adaptamos el GRUB2
  7. Agregamos al RAID el ex disco de datos /dev/sda
  8. Configuración de notificador por email en caso de degradación
  9. AP1) Simulación de fallos
    AP2) Eliminar el RAID creado con mdadm
    AP3) Montar un RAID desde un livecd

NOTA: Este proceso lo hice para una pc de escritorio pero también puede ser hecho, exactamente igual, para un server. No es posible hacerlo por ssh por el paso 6, ya que en el primer inicio del RAID, cuando hay solo un disco, da un error que al reiniciar a mano, lo hace correctamente. Si alguien conoce como salvar este paso, se podría hacer remotamente también.

1) Preliminares

El RAID se hace a nivel de partición, así que lo importante al agregar un disco, es que al menos tenga la misma capacidad o superior a la partición que queremos proteger. En mi caso lo quiero hacer con el disco completo porque también quiero que proteja el sistema. Este disco que lo denomino de datos esta conectado como sda. Cuenta con una partición primaria y una extendida para el swap (Hice una instalación típica con asistente usando todo el disco). El disco sdb es el nuevo. Puede ser un disco usado, incluso que tenga cosas dentro, lo importante es que tengas en cuanta que el que agregamos lo formatearemos.

Trabajaremos siempre desde un terminal en modo texto como root. Entonces primero tenemos que hacer:

$ sudo -s

Asegurémonos de tener el disco conectado y que el sistema «lo vea».

# fdisk -l | grep '^Disk'

Disco /dev/sda: 42.9 GB, 42949672960 bytes
Disco /dev/sdb: 42.9 GB, 42949672960 byte
s

# df -h
S.ficheros Tam. Usado Disp. % Uso Montado en
/dev/sda1 39G 3,2G 34G 9% /
none 492M 636K 491M 1% /dev
none 501M 364K 501M 1% /dev/shm
none 501M 96K 501M 1% /var/run
none 501M 0 501M 0% /var/lock

También es importante (si hicistes algunas pruebas antes con otras cosas, como hice yo) que este comando te de así:

$ sudo ls /dev/mapper/
control

En el caso de que lo anterior NO TE DE EL RESULTADO ESPERADO, prueba haciendo esto:

$ sudo apt-get remove dmraid libdmraid1.0.0.rc30
$ sudo update-initramfs -u
$ sudo reboot

2) Preparación

La herramienta mas importante que tenemos que aprender a usar y tener instalada mdadm

# apt-get install initramfs-tools mdadm

aparece una pantalla de configuración del Postfix… elegir «sin configuración» y aceptar. Dejo nota que parte de la instalación dice:

….
Postfix was not set up. Start with
cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
. If you need to make changes, edit
/etc/postfix/main.cf (and others) as needed. To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run ‘/etc/init.d/postfix reload’.
….

A continuación tenemos que cargar algunos módulos necesarios, así:

# modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10

Si todo anduvo bien, para ver el estado del manejador de array hacemos:

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices:

3) Particionando el disco nuevo /dev/sdb

El RAID 1 mantiene una copia exacta de la información en las particiones (espejo). Como mínimo en 2 particiones y no tiene limitación de carntidad, aunque la escritura se vera demorada cantas mas particiones haya. Esto da la idea de que es necesario particionar el disco nuevo, igual que el disco de datos original. Aunque no es obligatorio hacerlo con todo el disco, porque el array es de partición a partición, para facilitar esta explicacion lo que haremos es copiar la tabla de partición de uno al otro:

# sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Comprobando que nadie esté utilizando este disco en este momento...
Atención: la partición extendida no empieza en un límite de cilindro.
DOS y Linux interpretarán el contenido de forma diferente.
Correcto

Disco /dev/sdb: 5221 cilindros, 255 cabezas, 63 sectores/pista
Situación anterior:
Unidades = cilindros de 8225280 bytes, bloques de 1024 bytes, contando desde 0

Disp. Inic. Princ. Fin Nºcil Nºbloq. Id Sistema
/dev/sdb1 0 – 0 0 0 Vacía
/dev/sdb2 0 – 0 0 0 Vacía
/dev/sdb3 0 – 0 0 0 Vacía
/dev/sdb4 0 – 0 0 0 Vacía
Situación nueva:
Unidades = sectores de 512 bytes, contando desde 0

Disp. Inicio Principio Fin Nº sect. Id Sistema
/dev/sdb1 * 2048 81788927 81786880 83 Linux
/dev/sdb2 81790974 83884031 2093058 5 Extendida
/dev/sdb3 0 – 0 0 Vacía
/dev/sdb4 0 – 0 0 Vacía
/dev/sdb5 81790976 83884031 2093056 82 Linux swap / Solaris
Atención: la partición 1 no termina en un límite de cilindro
La nueva tabla de particiones se ha escrito correctamente

Volviendo a leer la tabla de particiones…

Si ha creado o modificado una partición DOS, como /dev/foo7, utilice dd(1)
para poner a cero los 512 primeros bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(Véase fdisk(8).)

Sin importar lo que diga la salida probamos lo que hizo con:

# fdisk -l

Disco /dev/sda: 42.9 GB, 42949672960 bytes
255 cabezas, 63 sectores/pista, 5221 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Tamaño de sector (lógico / físico): 512 bytes / 512 bytes
Tamaño E/S (mínimo/óptimo): 512 bytes / 512 bytes
Identificador de disco: 0x00078a37

Dispositivo Inicio Comienzo Fin Bloques Id Sistema
/dev/sda1 * 1 5092 40893440 83 Linux
/dev/sda2 5092 5222 1046529 5 Extendida
/dev/sda5 5092 5222 1046528 82 Linux swap / Solaris

Disco /dev/sdb: 42.9 GB, 42949672960 bytes
255 cabezas, 63 sectores/pista, 5221 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Tamaño de sector (lógico / físico): 512 bytes / 512 bytes
Tamaño E/S (mínimo/óptimo): 512 bytes / 512 bytes
Identificador de disco: 0x00062952

Dispositivo Inicio Comienzo Fin Bloques Id Sistema
/dev/sdb1 * 1 5092 40893440 83 Linux
/dev/sdb2 5092 5222 1046529 5 Extendida
/dev/sdb5 5092 5222 1046528 82 Linux swap / Solaris

Ahora tenemos que indicarle al sistema que las particiones que creamos van a ser parte de un RAID, así:

# fdisk /dev/sdb

AVISO: El modo de compatibilidad DOS es obsoleto. Se recomienda fuertemente
apagar el modo (orden «c») y cambiar mostrar unidades a
sectores (orden «u»).

Orden (m para obtener ayuda): <- m
Orden Acción
a Conmuta el indicador de iniciable
b Modifica la etiqueta de disco bsd
c Conmuta el indicador de compatibilidad con DOS
d Suprime una partición
l Lista los tipos de particiones conocidos
m Imprime este menú
n Añade una nueva partición
o Crea una nueva tabla de particiones DOS vacía
p Imprime la tabla de particiones
q Sale sin guardar los cambios
s Crea una nueva etiqueta de disco Sun
t Cambia el identificador de sistema de una partición
u Cambia las unidades de visualización/entrada
v Verifica la tabla de particiones
w Escribe la tabla en el disco y sale
x Funciones adicionales (sólo para usuarios avanzados)

Orden (m para obtener ayuda): <- t
Número de partición (1-5): <- 1
Código hexadecimal (escriba L para ver los códigos): <- L

0 Vacía 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 Unidad C: ocult c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extendida c7 Syrinx
5 Extendida 42 SFS 86 Conjunto de vol da Datos sin SF
6 FAT16 4d QNX4.x 87 Conjunto de vol db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x segunda 88 Linux plaintext de Utilidad Dell
8 AIX 4f QNX4.x tercera 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 Hibernación de eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext’d (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 inicio Linux/PA
11 FAT12 oculta 5c Priam Edisk a8 UFS de Darwin f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 FAT16 oculta ❤ 63 GNU HURD o SysV ab arranque de Dar f2 DOS secondary
16 FAT16 oculta 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 HPFS/NTFS ocult 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 SmartSleep de A 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be arranque de Sol ff BBT
1e Hidden W95 FAT1

Código hexadecimal (escriba L para ver los códigos): <- fd
Se ha cambiado el tipo de sistema de la partición 1 por fd (Linux raid autodetect)

Orden (m para obtener ayuda): <- t
Número de partición (1-5): <- 2
Código hexadecimal (escriba L para ver los códigos): <- fd
No puede convertir una partición en extendida ni viceversa.
Primero debe suprimirla.

Orden (m para obtener ayuda): <- t
Número de partición (1-5): <- 5
Código hexadecimal (escriba L para ver los códigos): <- fd
Se ha cambiado el tipo de sistema de la partición 5 por fd (Linux raid autodetect)

Orden (m para obtener ayuda): <- w
¡Se ha modificado la tabla de particiones!

Llamando a ioctl() para volver a leer la tabla de particiones.
Se están sincronizando los discos.

Para estar seguros de que ninguna instalación previa de RAID afecte la nueva hacemos:

# mdadm –zero-superblock /dev/sdb1
# mdadm –zero-superblock /dev/sdb2
# mdadm –zero-superblock /dev/sdb5

Y la salida en cada uno deberia ser:

# mdadm --zero-superblock /dev/sdb1
mdadm: Unrecognised md component device - /dev/sdb1

Si existe alguna configuración previa, cuando ejecutamos el comando no muestra absolutamente nada. En este caso es necesario frenar el raid y volverlo a hacer (ver al final del tuto).

NO HAY QUE FORMATEAR AÚN.

4) Creamos nuestro RAID

Asi como el identificamos los discos (ej: sda, sdb, etc) los arreglos se identifican con mdX donde X es un numero arbitrario.

Como me gusta que las cosas sean intuitivas al array de particiones sda1 y sdb1 lo voy a llamar md1, y asi sucesivamente con las demas particiones. En primera instancia solo vamos a agregar al array las particiones nuevas (sin datos). Para esta tarea hacemos con cada particion de sdb:

# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm: /dev/sdb1 appears to contain an ext2fs file system
size=40893440K mtime=Fri Dec 9 11:30:35 2011
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? <- y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

Ahora lo mismo con el swap:

# mdadm --create /dev/md5 --level=1 --raid-disks=2 missing /dev/sdb5
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? <- y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

Para asegurarnos de que está todo correcto, vemos el estado del RAID con:

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md5 : active raid1 sdb5[1]
1046516 blocks super 1.2 [2/1] [_U]

md1 : active raid1 sdb1[1]
40892344 blocks super 1.2 [2/1] [_U]

unused devices:

En este punto, ya tenemos un raid andando. Ahora lo formateo cada particion como si fuese un disco normal:

# mkfs.ext4 /dev/md1
# mkswap /dev/md5

Ahora tenemos que ajustar el archivo de configuracion /etc/mdadm/mdadm.conf a la nueva configuracion. Para agregar la informacion en forma automatica hacemos:

# cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
# mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Para ver el archivo hacemos:

# cat /etc/mdadm/mdadm.conf
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays

# This file was auto-generated on Fri, 09 Dec 2011 17:07:33 -0300
# by mkconf $Id$
ARRAY /dev/md/1 metadata=1.2 UUID=914af550:daf4e4a7:aa40b309:e0412c99 name=PCignacio:1
ARRAY /dev/md/5 metadata=1.2 UUID=e89f3940:7c155be2:8589f776:d1520817 name=PCignacio:5

5) Ajustando el nuevo RAID

Ahora copiamos nuestros datos al raid nuevo. Para ello es necesario montar el raid creado (el raid swap no se necesita copiar). Entonces:

# mkdir /mnt/miraid1
# mount /dev/md1 /mnt/miraid1

Para ver si se monto correctamente hacemos:

# mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
/dev/md1 on /mnt/miraid1 type ext4 (rw)

Ahora tenemos que modificar nuestro /etc/fstab comentar las lineas que definen nuestras particiones / y swap y generamos yna copia de ellas reemplacando el UUIDs con /dev/md1 (de la particion /) y /dev/md5 (para la particion swap) entonces el archivo quedaría asi:

# pico /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
#
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda1 during installation
# UUID=651b4b1a-7504-4644-9d71-4011b3c98d94 / ext4 errors=remount-ro 0 1
/dev/md1 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
# UUID=5b574cc1-d269-4de1-b3bf-5a56c9afb60c none swap sw 0 0
/dev/md5 none swap sw 0 0

Ahora editamos el archivo /etc/mtab y reemplazamos /dev/sda1 por /dev/md1 , quedando así:

# pico /etc/mtab
/dev/md1 / ext4 rw,errors=remount-ro,commit=0 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
none /sys sysfs rw,noexec,nosuid,nodev 0 0
fusectl /sys/fs/fuse/connections fusectl rw 0 0
none /sys/kernel/debug debugfs rw 0 0
none /sys/kernel/security securityfs rw 0 0
none /dev devtmpfs rw,mode=0755 0 0
none /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
none /dev/shm tmpfs rw,nosuid,nodev 0 0
none /var/run tmpfs rw,nosuid,mode=0755 0 0
none /var/lock tmpfs rw,noexec,nosuid,nodev 0 0
/dev/md1 /mnt/miraid1 ext4 rw 0 0

Ahora creamos y modificamos el script que actualiza el GRUB2 cada vez que actualicemos. Copiamos un ejemplo y lo adaptamos asi:

# cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
# pico /etc/grub.d/09_swraid1_setup

#!/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 «Linux con RAID» –class debian –class gnu-linux –class gnu –class os {
insmod raid
insmod mdraid1x
insmod ext2
set root='(md/1)’
echo ‘Booteando desde el RAID …’
linux /boot/vmlinuz-2.6.38-13-generic-pae root=/dev/md1 ro quiet
echo ‘Loading initial ramdisk …’
initrd /boot/initrd.img-2.6.38-13-generic-pae
}

NOTE que es necesario abaptar las lineas que comienzan con linux e inird con el numero que corresponda. Para ello puede hacer:

# uname -r
2.6.38-8-generic

Como ya no usamos mas los UUIDs los desactivamos del grub en el archivo /etc/default/grub sacando únicamente el comentario de la opción GRUB_DISABLE_LINUX_UUID=true con:

# pico /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=»quiet splash»
GRUB_CMDLINE_LINUX=»»

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD …)
#GRUB_BADRAM=»0x01234567,0xfefefefe,0x89abcdef,0xefefefef»

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo’
#GRUB_GFXMODE=640×480

# Uncomment if you don’t want GRUB to pass «root=UUID=xxx» parameter to Linux
GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY=»true»

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE=»480 440 1″

ejecutamos el comando

# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.38-8-generic
Found initrd image: /boot/initrd.img-2.6.38-8-generic
Found memtest86+ image: /boot/memtest86+.bin
done

para que el script modifique nuestro /boot/grub/grub.cfg con el script que recién creamos. Ademas actualizamos nuestro ramdisk a la nueva configuración.

# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-2.6.38-8-generic
cryptsetup: WARNING: failed to detect canonical device of /dev/md1
cryptsetup: WARNING: could not determine root device from /etc/fstab

Ahora copiamos nuestros datos al nuevo arreglo (menos el swap):

# cp -dpRx / /mnt/miraid1

NOTA: AUN NO reinicies

6) Adaptamos el GRUB2

Es necesario que nos aseguremos que se bootee desde cualquiera de los dos discos /dev/sda y /dev/sdb, así:

# grub-install /dev/sda
# grub-install /dev/sdb

Ahora reiniciamos por primera vez así:

# reboot

IMPORTANTE: Es posible que de un ERROR y que inicia degradado… pero es correcto porque solo está en el RAID el disco sdb. Reiniciamos manualmente con CTRL+ALT+Supr  y esta vez lo hace correctamente.

Vemos la situacion actual con:

$ sudo -s
# df -h

S.ficheros Tam. Usado Disp. % Uso Montado en
/dev/md1 39G 3,2G 34G 9% /
none 492M 656K 491M 1% /dev
none 501M 376K 501M 1% /dev/shm
none 501M 100K 501M 1% /var/run
none 501M 0 501M 0% /var/lock

con lo que efectivamente vemos que estamos iniciando y con el sistema activo en md1. A partir de ahora todos los cambios ya quedan en el RAID, que hasta el momento solo contiene un solo disco. Para confirmar que tenemos un solo disco y ademas ver el estado del RAID hacemos:_

# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md5 : active raid1 sdb5[1]
1046516 blocks super 1.2 [2/1] [_U]

md1 : active raid1 sdb1[1]
40892344 blocks super 1.2 [2/1] [_U]

unused devices:

7) Agregamos al RAID el ex disco de datos /dev/sda

Es necesario cambiar el tipo de particion en las particiones del disco sda, tal y como lo hicimos antes, al formato Linux raid autodetect. Como ya esta explicado voy a abreviar:

# fdisk /dev/sda

AVISO: El modo de compatibilidad DOS es obsoleto. Se recomienda fuertemente
apagar el modo (orden «c») y cambiar mostrar unidades a
sectores (orden «u»).

Orden (m para obtener ayuda): c
El indicador de compatibilidad con DOS no está establecido

Orden (m para obtener ayuda): u
Se cambian las unidades de visualización/entrada a sectores

Orden (m para obtener ayuda): t
Número de partición (1-5): 1
Código hexadecimal (escriba L para ver los códigos): fd
Se ha cambiado el tipo de sistema de la partición 1 por fd (Linux raid autodetect)

Orden (m para obtener ayuda): t
Número de partición (1-5): 5
Código hexadecimal (escriba L para ver los códigos): fd
Se ha cambiado el tipo de sistema de la partición 5 por fd (Linux raid autodetect)

Orden (m para obtener ayuda): w
¡Se ha modificado la tabla de particiones!

Llamando a ioctl() para volver a leer la tabla de particiones.
Se están sincronizando los discos.

Ahora agregamos las particiones al raid respectivo:

# mdadm --add /dev/md1 /dev/sda1
# mdadm --add /dev/md5 /dev/sda5

Ahora vemos el estado del array:

# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md5 : active raid1 sda5[2] sdb5[1]
1046516 blocks super 1.2 [2/1] [_U]
resync=DELAYED

md1 : active raid1 sda1[2] sdb1[1]
40892344 blocks super 1.2 [2/1] [_U]
[=>……………….] recovery = 7.3% (3024768/40892344) finish=13.0min speed=48471K/sec

unused devices:

… se ve como se empieza a sincronizar los discos y el tiempo calculado que tardará. Si queremos ver el progreso continuamente podemos ejecutar:

# watch cat /proc/mdstat (para cerrar esta vista pulzamos CTRL+C)

NOTA: HAY QUE ESPERAR... cuando termina NO reiniciar

para confirmar que termino hacemos una vez mas:

# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md5 : active raid1 sda5[2] sdb5[1]
1046516 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda1[2] sdb1[1]
40892344 blocks super 1.2 [2/2] [UU]

unused devices:

Ahora es necesario cambiar el archivo /etc/mdadm/mdadm.conf a la nueva configuracion

# cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
# mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Para ver el archivo hacemos:

# cat /etc/mdadm/mdadm.conf
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays

# This file was auto-generated on Fri, 09 Dec 2011 17:07:33 -0300
# by mkconf $Id$
ARRAY /dev/md/1 metadata=1.2 UUID=914af550:daf4e4a7:aa40b309:e0412c99 name=PCignacio:1
ARRAY /dev/md/5 metadata=1.2 UUID=e89f3940:7c155be2:8589f776:d1520817 name=PCignacio:5

Ahora necesitamos borrar el el archivo /etc/grub.d/09_swraid1_setup asi:

# rm -f /etc/grub.d/09_swraid1_setup

Ahora actualizamos el bootloader del GRUB2 asi:

# update-grub
# update-initramfs -u<
/code>

Ahora si ves el /boot/grub/grub.cfg aparece el raid md0 en vez de sda. Es por esto que ya no necesitábamos mas el 09_swraid01_setup.

Es muy importante asegurarse que los dos discos booteen en caso de que uno se caiga, por eso hacemos nuevamente:

# grub-install /dev/sda
# grub-install /dev/sdb

Ahora reiniciamos…. no debería darnos errores

# reboot

8) Configuración de notificador por email en caso de degradación

Hay que editar el archivo /etc/mdadm/mdadm.conf y modificar la opcion MAILADDR root por MAILADDR you@yourdomain.com.
Para que comience a utilizarse se necesita reiniciar el mdam:

# /etc/init.d/mdadm restart

Ap 1) Test y Simulación de fallos

Es posible testear el RAID simulando un fallo en alguno de los discos, sin importar si es sda ó sdb. Por ejemplo, apagando el equipo y desconectando el disco sdb, ó también se puede hace una simulacion de fallo con el siguiente comando, con todo el disco sdb:


# mdadm --manage /dev/md1 --fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md1
# mdadm --manage /dev/md1 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md1


# mdadm --manage /dev/md5 --fail /dev/sdb5
mdadm: set /dev/sdb5 faulty in /dev/md5
# mdadm --manage /dev/md5 --remove /dev/sdb5
mdadm: hot removed /dev/sdb5 from /dev/md5

# shutdown -h now

NOTA: NO ES POSIBLE montar el disco que quitamos del RAID como un disco normal en una carpeta.

Ahora conecte el disco nuevo en sdb (si el disco que elegimos desconectar fué el sda, conectamos el sdb en el sda y el nuevo en el sdb) y encendemos y todo debería funcionar correctamente.

– En caso de haber hecho la simulacion por software volver a agregar los discos al RAID asi:

# mdadm --add /dev/md1 /dev/sdb1
# mdadm --add /dev/md5 /dev/sdb5

y enseguida comienzan a sincronizarce. Para verlo puede hacer: # watch cat /proc/mdstat

– En caso de colocar un disco físico, comience desde el paso 3 de esta guía en adelante para configurar el disco nuevo.

Ap 2) Eliminar el RAID creado con mdam

Detectar los discos

# fdisk -l | grep '^Disk'

Observamos los discos y diversas particiones. Paramos el RAID y lo borramos.

# mdadm --stop /dev/md0
# mdadm --remove /dev/md0

Ap 3) Montar un RAID desde un livecd

$ sudo -s
# fdisk -l
# modprobe raid1
# modprobe md
# cat /proc/mdstat
# apt-get install raidtools2
# mdadm –query /dev/sda1
# mdadm –examine /dev/sda1
# mdadm –examine /dev/sda2
# kate /etc/mdadm.conf
# mdadm -As /dev/md0
# mdadm -As /dev/md1
# mdadm -As /dev/md2
# apt-get install lvm2
# mount /dev/VolGroup01/VolLog01 /mnt/

Bibliografía

  • Gran parte de la informacion la encontras en ingles ACA aunque modifique algunas partes criticas.
  • La parte de eliminar el RAID la tome de AQUI.
  • Para resolver problemas ACA.
  • Configurar envio de correo por mail en caso de fallo, ACA